Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(604)

Unified Diff: runtime/vm/benchmark_test.cc

Issue 1232593003: - Implement .packages specification. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Address review comments. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/lib/isolate_patch.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/benchmark_test.cc
diff --git a/runtime/vm/benchmark_test.cc b/runtime/vm/benchmark_test.cc
index a6d6c18286211626e747c8248d6faa920c2f7250..7f51ac41b6c875b2da1ee6b5f648734b2a46ee30 100644
--- a/runtime/vm/benchmark_test.cc
+++ b/runtime/vm/benchmark_test.cc
@@ -258,6 +258,68 @@ static void func(Dart_NativeArguments args) {
}
+// Emulates DartUtils::PrepareForScriptLoading.
+static Dart_Handle PreparePackageRoot(const char* package_root,
+ Dart_Handle builtin_lib) {
+ // First ensure all required libraries are available.
+ Dart_Handle url = NewString(bin::DartUtils::kCoreLibURL);
+ DART_CHECK_VALID(url);
+ Dart_Handle core_lib = Dart_LookupLibrary(url);
+ DART_CHECK_VALID(core_lib);
+ url = NewString(bin::DartUtils::kAsyncLibURL);
+ DART_CHECK_VALID(url);
+ Dart_Handle async_lib = Dart_LookupLibrary(url);
+ DART_CHECK_VALID(async_lib);
+ url = NewString(bin::DartUtils::kIsolateLibURL);
+ DART_CHECK_VALID(url);
+ Dart_Handle isolate_lib = Dart_LookupLibrary(url);
+ DART_CHECK_VALID(isolate_lib);
+ url = NewString(bin::DartUtils::kInternalLibURL);
+ DART_CHECK_VALID(url);
+ Dart_Handle internal_lib = Dart_LookupLibrary(url);
+ DART_CHECK_VALID(internal_lib);
+ Dart_Handle io_lib =
+ bin::Builtin::LoadAndCheckLibrary(bin::Builtin::kIOLibrary);
+ DART_CHECK_VALID(io_lib);
+
+ // We need to ensure that all the scripts loaded so far are finalized
+ // as we are about to invoke some Dart code below to setup closures.
+ Dart_Handle result = Dart_FinalizeLoading(false);
+ DART_CHECK_VALID(result);
+
+ // Necessary parts from PrepareBuiltinLibrary.
+ // Setup the internal library's 'internalPrint' function.
+ result = Dart_Invoke(builtin_lib, NewString("_getPrintClosure"), 0, NULL);
+ DART_CHECK_VALID(result);
+ result = Dart_SetField(internal_lib, NewString("_printClosure"), result);
+ DART_CHECK_VALID(result);
+#if defined(TARGET_OS_WINDOWS)
+ result = Dart_SetField(builtin_lib, NewString("_isWindows"), Dart_True());
+ DART_CHECK_VALID(result);
+#endif // defined(TARGET_OS_WINDOWS)
+ // Set current working directory.
+ result = bin::DartUtils::SetWorkingDirectory(builtin_lib);
+ DART_CHECK_VALID(result);
+ // Set the package root for builtin.dart.
+ result = NewString(package_root);
+ DART_CHECK_VALID(result);
+ const int kNumArgs = 1;
+ Dart_Handle dart_args[kNumArgs];
+ dart_args[0] = result;
+ result = Dart_Invoke(builtin_lib,
+ NewString("_setPackageRoot"),
+ kNumArgs,
+ dart_args);
+ DART_CHECK_VALID(result);
+
+ bin::DartUtils::PrepareAsyncLibrary(async_lib, isolate_lib);
+ bin::DartUtils::PrepareCoreLibrary(core_lib, builtin_lib, false);
+ bin::DartUtils::PrepareIsolateLibrary(isolate_lib);
+ bin::DartUtils::PrepareIOLibrary(io_lib);
+ return Dart_True();
+}
+
+
static Dart_NativeFunction NativeResolver(Dart_Handle name,
int arg_count,
bool* auto_setup_scope) {
@@ -280,7 +342,8 @@ static void SetupDart2JSPackagePath() {
const char* path_separator = File::PathSeparator();
OS::SNPrint(buffer, 2048, packages_path,
executable_path, path_separator, path_separator);
- bin::DartUtils::PrepareForScriptLoading(buffer, false, false, builtin_lib);
+ Dart_Handle result = PreparePackageRoot(buffer, builtin_lib);
+ DART_CHECK_VALID(result);
}
BENCHMARK(Dart2JSCompileAll) {
« no previous file with comments | « runtime/lib/isolate_patch.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698