未验证 提交 5e2fd183 编写于 作者: B Bartek Iwańczuk 提交者: GitHub

refactor: Rename JS entry functions (#3732)

上级 0cd60551
...@@ -246,9 +246,9 @@ impl TsCompiler { ...@@ -246,9 +246,9 @@ impl TsCompiler {
worker_state, worker_state,
ext, ext,
); );
worker.execute("denoMain()").unwrap(); worker.execute("bootstrapCompilerRuntime('TS')").unwrap();
worker.execute("workerMain()").unwrap(); worker.execute("bootstrapWorkerRuntime()").unwrap();
worker.execute("compilerMain()").unwrap(); worker.execute("bootstrapTsCompiler()").unwrap();
worker worker
} }
......
...@@ -60,9 +60,9 @@ impl WasmCompiler { ...@@ -60,9 +60,9 @@ impl WasmCompiler {
worker_state, worker_state,
ext, ext,
); );
worker.execute("denoMain('WASM')").unwrap(); worker.execute("bootstrapCompilerRuntime('WASM')").unwrap();
worker.execute("workerMain()").unwrap(); worker.execute("bootstrapWorkerRuntime()").unwrap();
worker.execute("wasmCompilerMain()").unwrap(); worker.execute("bootstrapWasmCompiler()").unwrap();
worker worker
} }
......
...@@ -42,7 +42,7 @@ fn compiler_snapshot() { ...@@ -42,7 +42,7 @@ fn compiler_snapshot() {
deno_core::js_check(isolate.execute( deno_core::js_check(isolate.execute(
"<anon>", "<anon>",
r#" r#"
if (!compilerMain) { if (!bootstrapTsCompiler) {
throw Error("bad"); throw Error("bad");
} }
console.log(`ts version: ${ts.version}`); console.log(`ts version: ${ts.version}`);
......
...@@ -32,7 +32,11 @@ import { fromTypeScriptDiagnostic } from "./diagnostics_util.ts"; ...@@ -32,7 +32,11 @@ import { fromTypeScriptDiagnostic } from "./diagnostics_util.ts";
import * as os from "./os.ts"; import * as os from "./os.ts";
import { assert } from "./util.ts"; import { assert } from "./util.ts";
import * as util from "./util.ts"; import * as util from "./util.ts";
import { postMessage, workerClose, workerMain } from "./worker_main.ts"; import {
postMessage,
workerClose,
bootstrapWorkerRuntime
} from "./worker_main.ts";
const self = globalThis; const self = globalThis;
...@@ -74,17 +78,19 @@ interface CompileResult { ...@@ -74,17 +78,19 @@ interface CompileResult {
} }
// bootstrap the runtime environment, this gets called as the isolate is setup // bootstrap the runtime environment, this gets called as the isolate is setup
self.denoMain = function denoMain(compilerType?: string): void { self.bootstrapCompilerRuntime = function bootstrapCompilerRuntime(
os.start(true, compilerType ?? "TS"); compilerType: string
): void {
os.start(true, compilerType);
}; };
// bootstrap the worker environment, this gets called as the isolate is setup // bootstrap the worker environment, this gets called as the isolate is setup
self.workerMain = workerMain; self.bootstrapWorkerRuntime = bootstrapWorkerRuntime;
// provide the "main" function that will be called by the privileged side when // provide the "main" function that will be called by the privileged side when
// lazy instantiating the compiler web worker // lazy instantiating the compiler web worker
self.compilerMain = function compilerMain(): void { self.bootstrapTsCompiler = function tsCompilerMain(): void {
// workerMain should have already been called since a compiler is a worker. // bootstrapWorkerRuntime should have already been called since a compiler is a worker.
self.onmessage = async ({ self.onmessage = async ({
data: request data: request
}: { }: {
...@@ -297,8 +303,8 @@ self.compilerMain = function compilerMain(): void { ...@@ -297,8 +303,8 @@ self.compilerMain = function compilerMain(): void {
}; };
}; };
self.wasmCompilerMain = function wasmCompilerMain(): void { self.bootstrapWasmCompiler = function wasmCompilerMain(): void {
// workerMain should have already been called since a compiler is a worker. // bootstrapWorkerRuntime should have already been called since a compiler is a worker.
self.onmessage = async ({ self.onmessage = async ({
data: binary data: binary
}: { }: {
......
...@@ -111,12 +111,13 @@ declare global { ...@@ -111,12 +111,13 @@ declare global {
callback: (event: domTypes.Event) => void | null, callback: (event: domTypes.Event) => void | null,
options?: boolean | domTypes.AddEventListenerOptions | undefined options?: boolean | domTypes.AddEventListenerOptions | undefined
) => void; ) => void;
var compilerMain: (() => void) | undefined; var bootstrapTsCompiler: (() => void) | undefined;
var console: consoleTypes.Console; var console: consoleTypes.Console;
var Deno: { var Deno: {
core: DenoCore; core: DenoCore;
}; };
var denoMain: (() => void) | undefined; var bootstrapCompilerRuntime: ((compilerType: string) => void) | undefined;
var bootstrapMainRuntime: (() => void) | undefined;
var location: domTypes.Location; var location: domTypes.Location;
var onerror: var onerror:
| (( | ((
...@@ -132,8 +133,8 @@ declare global { ...@@ -132,8 +133,8 @@ declare global {
var onmessage: ((e: { data: any }) => Promise<void> | void) | undefined; var onmessage: ((e: { data: any }) => Promise<void> | void) | undefined;
var onunload: ((e: domTypes.Event) => void) | undefined; var onunload: ((e: domTypes.Event) => void) | undefined;
var queueMicrotask: (callback: () => void) => void; var queueMicrotask: (callback: () => void) => void;
var wasmCompilerMain: (() => void) | undefined; var bootstrapWasmCompiler: (() => void) | undefined;
var workerMain: (() => Promise<void> | void) | undefined; var bootstrapWorkerRuntime: (() => Promise<void> | void) | undefined;
/* eslint-enable */ /* eslint-enable */
} }
...@@ -198,7 +199,7 @@ const globalProperties = { ...@@ -198,7 +199,7 @@ const globalProperties = {
onmessage: writable(workerRuntime.onmessage), onmessage: writable(workerRuntime.onmessage),
onerror: writable(workerRuntime.onerror), onerror: writable(workerRuntime.onerror),
workerMain: nonEnumerable(workerRuntime.workerMain), bootstrapWorkerRuntime: nonEnumerable(workerRuntime.bootstrapWorkerRuntime),
workerClose: nonEnumerable(workerRuntime.workerClose), workerClose: nonEnumerable(workerRuntime.workerClose),
postMessage: writable(workerRuntime.postMessage), postMessage: writable(workerRuntime.postMessage),
Worker: nonEnumerable(workers.WorkerImpl), Worker: nonEnumerable(workers.WorkerImpl),
......
...@@ -2175,7 +2175,7 @@ declare interface Window { ...@@ -2175,7 +2175,7 @@ declare interface Window {
performance: __performanceUtil.Performance; performance: __performanceUtil.Performance;
onmessage: (e: { data: any }) => void; onmessage: (e: { data: any }) => void;
onerror: undefined | typeof onerror; onerror: undefined | typeof onerror;
workerMain: typeof __workerMain.workerMain; bootstrapWorkerRuntime: typeof __workerMain.bootstrapWorkerRuntime;
workerClose: typeof __workerMain.workerClose; workerClose: typeof __workerMain.workerClose;
postMessage: typeof __workerMain.postMessage; postMessage: typeof __workerMain.postMessage;
Worker: typeof __workers.WorkerImpl; Worker: typeof __workers.WorkerImpl;
...@@ -2234,7 +2234,7 @@ declare let onerror: ...@@ -2234,7 +2234,7 @@ declare let onerror:
e: Event e: Event
) => boolean | void) ) => boolean | void)
| undefined; | undefined;
declare const workerMain: typeof __workerMain.workerMain; declare const bootstrapWorkerRuntime: typeof __workerMain.bootstrapWorkerRuntime;
declare const workerClose: typeof __workerMain.workerClose; declare const workerClose: typeof __workerMain.workerClose;
declare const postMessage: typeof __workerMain.postMessage; declare const postMessage: typeof __workerMain.postMessage;
declare const Worker: typeof __workers.WorkerImpl; declare const Worker: typeof __workers.WorkerImpl;
...@@ -3490,7 +3490,7 @@ declare namespace __workerMain { ...@@ -3490,7 +3490,7 @@ declare namespace __workerMain {
export function getMessage(): Promise<any>; export function getMessage(): Promise<any>;
export let isClosing: boolean; export let isClosing: boolean;
export function workerClose(): void; export function workerClose(): void;
export function workerMain(): Promise<void>; export function bootstrapWorkerRuntime(): Promise<void>;
} }
declare namespace __workers { declare namespace __workers {
......
...@@ -11,8 +11,8 @@ import { setLocation } from "./location.ts"; ...@@ -11,8 +11,8 @@ import { setLocation } from "./location.ts";
import { setBuildInfo } from "./build.ts"; import { setBuildInfo } from "./build.ts";
import { setSignals } from "./process.ts"; import { setSignals } from "./process.ts";
function denoMain(preserveDenoNamespace = true, name?: string): void { function bootstrapMainRuntime(): void {
const s = os.start(preserveDenoNamespace, name); const s = os.start(true);
setBuildInfo(s.os, s.arch); setBuildInfo(s.os, s.arch);
setSignals(); setSignals();
...@@ -35,4 +35,4 @@ function denoMain(preserveDenoNamespace = true, name?: string): void { ...@@ -35,4 +35,4 @@ function denoMain(preserveDenoNamespace = true, name?: string): void {
replLoop(); replLoop();
} }
} }
globalThis["denoMain"] = denoMain; globalThis["bootstrapMainRuntime"] = bootstrapMainRuntime;
...@@ -84,13 +84,10 @@ interface Start { ...@@ -84,13 +84,10 @@ interface Start {
arch: Arch; arch: Arch;
} }
// This function bootstraps an environment within Deno, it is shared both by // TODO(bartlomieju): temporary solution, must be fixed when moving
// the runtime and the compiler environments. // dispatches to separate crates
// @internal export function initOps(): void {
export function start(preserveDenoNamespace = true, source?: string): Start {
const ops = core.ops(); const ops = core.ops();
// TODO(bartlomieju): this is a prototype, we should come up with
// something a bit more sophisticated
for (const [name, opId] of Object.entries(ops)) { for (const [name, opId] of Object.entries(ops)) {
const opName = `OP_${name.toUpperCase()}`; const opName = `OP_${name.toUpperCase()}`;
// Assign op ids to actual variables // Assign op ids to actual variables
...@@ -98,6 +95,13 @@ export function start(preserveDenoNamespace = true, source?: string): Start { ...@@ -98,6 +95,13 @@ export function start(preserveDenoNamespace = true, source?: string): Start {
((dispatch as unknown) as { [key: string]: number })[opName] = opId; ((dispatch as unknown) as { [key: string]: number })[opName] = opId;
core.setAsyncHandler(opId, dispatch.getAsyncHandler(opName)); core.setAsyncHandler(opId, dispatch.getAsyncHandler(opName));
} }
}
// This function bootstraps an environment within Deno, it is shared both by
// the runtime and the compiler environments.
// @internal
export function start(preserveDenoNamespace = true, source?: string): Start {
initOps();
// First we send an empty `Start` message to let the privileged side know we // First we send an empty `Start` message to let the privileged side know we
// are ready. The response should be a `StartRes` message containing the CLI // are ready. The response should be a `StartRes` message containing the CLI
// args and other info. // args and other info.
......
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-explicit-any */
import { core } from "./core.ts";
import * as dispatch from "./dispatch.ts"; import * as dispatch from "./dispatch.ts";
import { sendAsync, sendSync } from "./dispatch_json.ts"; import { sendAsync, sendSync } from "./dispatch_json.ts";
import { log } from "./util.ts"; import { log } from "./util.ts";
import { TextDecoder, TextEncoder } from "./text_encoding.ts"; import { TextDecoder, TextEncoder } from "./text_encoding.ts";
import { initOps } from "./os.ts";
const encoder = new TextEncoder(); const encoder = new TextEncoder();
const decoder = new TextDecoder(); const decoder = new TextDecoder();
...@@ -44,24 +44,15 @@ export function workerClose(): void { ...@@ -44,24 +44,15 @@ export function workerClose(): void {
isClosing = true; isClosing = true;
} }
export async function workerMain(): Promise<void> { export async function bootstrapWorkerRuntime(): Promise<void> {
const ops = core.ops(); initOps();
// TODO(bartlomieju): this is a prototype, we should come up with
// something a bit more sophisticated
for (const [name, opId] of Object.entries(ops)) {
const opName = `OP_${name.toUpperCase()}`;
// Assign op ids to actual variables
// TODO(ry) This type casting is gross and should be fixed.
((dispatch as unknown) as { [key: string]: number })[opName] = opId;
core.setAsyncHandler(opId, dispatch.getAsyncHandler(opName));
}
log("workerMain"); log("bootstrapWorkerRuntime");
while (!isClosing) { while (!isClosing) {
const data = await getMessage(); const data = await getMessage();
if (data == null) { if (data == null) {
log("workerMain got null message. quitting."); log("bootstrapWorkerRuntime got null message. quitting.");
break; break;
} }
......
...@@ -260,7 +260,7 @@ fn info_command(flags: DenoFlags) { ...@@ -260,7 +260,7 @@ fn info_command(flags: DenoFlags) {
let main_module = state.main_module.as_ref().unwrap().clone(); let main_module = state.main_module.as_ref().unwrap().clone();
// Setup runtime. // Setup runtime.
js_check(worker.execute("denoMain()")); js_check(worker.execute("bootstrapMainRuntime()"));
debug!("main_module {}", main_module); debug!("main_module {}", main_module);
let main_future = async move { let main_future = async move {
...@@ -282,7 +282,7 @@ fn fetch_command(flags: DenoFlags) { ...@@ -282,7 +282,7 @@ fn fetch_command(flags: DenoFlags) {
let main_module = state.main_module.as_ref().unwrap().clone(); let main_module = state.main_module.as_ref().unwrap().clone();
// Setup runtime. // Setup runtime.
js_check(worker.execute("denoMain()")); js_check(worker.execute("bootstrapMainRuntime()"));
debug!("main_module {}", main_module); debug!("main_module {}", main_module);
let main_future = async move { let main_future = async move {
...@@ -300,7 +300,7 @@ fn eval_command(flags: DenoFlags) { ...@@ -300,7 +300,7 @@ fn eval_command(flags: DenoFlags) {
let main_module = let main_module =
ModuleSpecifier::resolve_url_or_path("./__$deno$eval.ts").unwrap(); ModuleSpecifier::resolve_url_or_path("./__$deno$eval.ts").unwrap();
js_check(worker.execute("denoMain()")); js_check(worker.execute("bootstrapMainRuntime()"));
debug!("main_module {}", &main_module); debug!("main_module {}", &main_module);
let main_future = async move { let main_future = async move {
...@@ -346,7 +346,7 @@ fn bundle_command(flags: DenoFlags) { ...@@ -346,7 +346,7 @@ fn bundle_command(flags: DenoFlags) {
fn run_repl(flags: DenoFlags) { fn run_repl(flags: DenoFlags) {
let (mut worker, _state) = create_worker_and_state(flags); let (mut worker, _state) = create_worker_and_state(flags);
js_check(worker.execute("denoMain()")); js_check(worker.execute("bootstrapMainRuntime()"));
let main_future = async move { let main_future = async move {
loop { loop {
let result = worker.clone().await; let result = worker.clone().await;
...@@ -371,7 +371,7 @@ fn run_script(flags: DenoFlags) { ...@@ -371,7 +371,7 @@ fn run_script(flags: DenoFlags) {
// Normal situation of executing a module. // Normal situation of executing a module.
// Setup runtime. // Setup runtime.
js_check(worker.execute("denoMain()")); js_check(worker.execute("bootstrapMainRuntime()"));
debug!("main_module {}", main_module); debug!("main_module {}", main_module);
let mut worker_ = worker.clone(); let mut worker_ = worker.clone();
......
...@@ -115,7 +115,7 @@ fn op_create_worker( ...@@ -115,7 +115,7 @@ fn op_create_worker(
let name = format!("USER-WORKER-{}", specifier); let name = format!("USER-WORKER-{}", specifier);
let mut worker = let mut worker =
WebWorker::new(name, startup_data::deno_isolate_init(), child_state, ext); WebWorker::new(name, startup_data::deno_isolate_init(), child_state, ext);
js_check(worker.execute("workerMain()")); js_check(worker.execute("bootstrapWorkerRuntime()"));
let worker_id = parent_state.add_child_worker(worker.clone()); let worker_id = parent_state.add_child_worker(worker.clone());
...@@ -269,7 +269,7 @@ fn op_host_resume_worker( ...@@ -269,7 +269,7 @@ fn op_host_resume_worker(
let mut workers_table = state_.workers.lock().unwrap(); let mut workers_table = state_.workers.lock().unwrap();
let worker = workers_table.get_mut(&id).unwrap(); let worker = workers_table.get_mut(&id).unwrap();
js_check(worker.execute("workerMain()")); js_check(worker.execute("bootstrapWorkerRuntime()"));
Ok(JsonOp::Sync(json!({}))) Ok(JsonOp::Sync(json!({})))
} }
......
...@@ -339,7 +339,7 @@ mod tests { ...@@ -339,7 +339,7 @@ mod tests {
state, state,
ext, ext,
); );
worker.execute("denoMain()").unwrap(); worker.execute("bootstrapMainRuntime()").unwrap();
let result = worker let result = worker
.execute_mod_async(&module_specifier, None, false) .execute_mod_async(&module_specifier, None, false)
.await; .await;
...@@ -371,8 +371,8 @@ mod tests { ...@@ -371,8 +371,8 @@ mod tests {
state, state,
ext, ext,
); );
worker.execute("denoMain()").unwrap(); worker.execute("bootstrapMainRuntime()").unwrap();
worker.execute("workerMain()").unwrap(); worker.execute("bootstrapWorkerRuntime()").unwrap();
worker worker
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册