Skip to content

Commit da6dc03

Browse files
a-sivaCommit Queue
authored andcommitted
[dartdev] switch the analysis server to use VMInteropHandler instead of
spawning an isolate (higher memory footprint) Change-Id: I74bcb382c6269183beb4b8f2fcd04aee10eaa549 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/404921 Reviewed-by: Derek Xu <[email protected]> Commit-Queue: Siva Annamalai <[email protected]>
1 parent 4dba853 commit da6dc03

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

pkg/dartdev/lib/src/commands/language_server.dart

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:args/args.dart';
1010
import '../core.dart';
1111
import '../sdk.dart';
1212
import '../utils.dart';
13+
import '../vm_interop_handler.dart';
1314

1415
class LanguageServerCommand extends DartdevCommand {
1516
static const String commandName = 'language-server';
@@ -45,16 +46,22 @@ For more information about the server's capabilities and configuration, see:
4546
var args = argResults!.arguments;
4647
if (!args.any((arg) => arg.startsWith('--$protocol'))) {
4748
args = [...args, '--$protocol=$lsp'];
48-
} else {
49-
// Need to make a copy as argResults!.arguments is an
50-
// UnmodifiableListView object which cannot be passed as
51-
// the args for spawnUri.
52-
args = [...args];
5349
}
54-
return await runFromSnapshot(
55-
snapshot: sdk.analysisServerSnapshot,
56-
args: args,
57-
verbose: verbose,
58-
);
50+
try {
51+
VmInteropHandler.run(
52+
sdk.analysisServerSnapshot,
53+
args,
54+
packageConfigOverride: null,
55+
useExecProcess : false,
56+
);
57+
return 0;
58+
} catch (e, st) {
59+
log.stderr('Error: launching language analysis server failed');
60+
log.stderr(e.toString());
61+
if (verbose) {
62+
log.stderr(st.toString());
63+
}
64+
return 255;
65+
}
5966
}
6067
}

0 commit comments

Comments
 (0)