diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-12-11 16:59:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-11 16:59:09 +0100 |
commit | 7bf267c197fc6a5cbafa0e72992b1cc7629ff989 (patch) | |
tree | c43e68c3ff0760fe36d573f87101dc4784fd9ef8 /cli/tsc | |
parent | 6bdf2388da617f9b82010c3df5aa094efc37e4ea (diff) |
perf(lsp): simplify some of the startup code (#21538)
Remove some dead code in "99_main_compiler.js". Eagerly start the LSP
TSC host, it was adding some not needed complexity around the TSC thread code.
Diffstat (limited to 'cli/tsc')
-rw-r--r-- | cli/tsc/99_main_compiler.js | 19 | ||||
-rw-r--r-- | cli/tsc/mod.rs | 10 |
2 files changed, 10 insertions, 19 deletions
diff --git a/cli/tsc/99_main_compiler.js b/cli/tsc/99_main_compiler.js index 8f76425c1..d795e542b 100644 --- a/cli/tsc/99_main_compiler.js +++ b/cli/tsc/99_main_compiler.js @@ -519,6 +519,7 @@ delete Object.prototype.__proto__; if (logDebug) { debug(`host.fileExists("${specifier}")`); } + // TODO(bartlomieju): is this assumption still valid? // this is used by typescript to find the libs path // so we can completely ignore it return false; @@ -963,6 +964,9 @@ delete Object.prototype.__proto__; * @param {number} id * @param {any} data */ + // TODO(bartlomieju): this feels needlessly generic, both type chcking + // and language server use it with inefficient serialization. Id is not used + // anyway... function respond(id, data = null) { ops.op_respond({ id, data }); } @@ -1046,6 +1050,7 @@ delete Object.prototype.__proto__; } } + let hasStarted = false; /** @param {{ debug: boolean; }} init */ function serverInit({ debug: debugFlag }) { if (hasStarted) { @@ -1063,19 +1068,6 @@ delete Object.prototype.__proto__; debug("serverRestart()"); } - let hasStarted = false; - - /** Startup the runtime environment, setting various flags. - * @param {{ debugFlag?: boolean; legacyFlag?: boolean; }} msg - */ - function startup({ debugFlag = false }) { - if (hasStarted) { - throw new Error("The compiler runtime already started."); - } - hasStarted = true; - setLogDebug(!!debugFlag, "TS"); - } - // A build time only op that provides some setup information that is used to // ensure the snapshot is setup properly. /** @type {{ buildSpecifier: string; libs: string[]; nodeBuiltInModuleNames: string[] }} */ @@ -1161,7 +1153,6 @@ delete Object.prototype.__proto__; // checking TypeScript. /** @type {any} */ const global = globalThis; - global.startup = startup; global.exec = exec; global.getAssets = getAssets; diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs index 2a820a6ee..6a239c1e9 100644 --- a/cli/tsc/mod.rs +++ b/cli/tsc/mod.rs @@ -326,6 +326,8 @@ pub struct Response { pub stats: Stats, } +// TODO(bartlomieju): we have similar struct in `tsc.rs` - maybe at least change +// the name of the struct to avoid confusion? #[derive(Debug)] struct State { hash_data: u64, @@ -764,6 +766,8 @@ struct RespondArgs { pub stats: Stats, } +// TODO(bartlomieju): this mechanism is questionable. +// Can't we use something more efficient here? #[op2] fn op_respond(state: &mut OpState, #[serde] args: RespondArgs) { let state = state.borrow_mut::<State>(); @@ -822,7 +826,6 @@ pub fn exec(request: Request) -> Result<Response, AnyError> { }, ); - let startup_source = ascii_str!("globalThis.startup({ legacyFlag: false })"); let request_value = json!({ "config": request.config, "debug": request.debug, @@ -841,9 +844,6 @@ pub fn exec(request: Request) -> Result<Response, AnyError> { ..Default::default() }); - runtime - .execute_script(located_script_name!(), startup_source) - .context("Could not properly start the compiler runtime.")?; runtime.execute_script(located_script_name!(), exec_source)?; let op_state = runtime.op_state(); @@ -1007,7 +1007,7 @@ mod tests { .execute_script_static( "<anon>", r#" - if (!(startup)) { + if (!(globalThis.exec)) { throw Error("bad"); } console.log(`ts version: ${ts.version}`); |