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

Unified Diff: bin/main.cc

Issue 8437075: - Add the implementation of the Options interface to the runtime. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: '' Created 9 years, 1 month 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 | « no previous file | lib/lib_impl_sources.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: bin/main.cc
===================================================================
--- bin/main.cc (revision 1162)
+++ bin/main.cc (working copy)
@@ -90,6 +90,50 @@
}
+static Dart_Handle SetupRuntimeOptions(CommandLineOptions* options) {
+ int options_count = options->count();
+ Dart_Handle dart_arguments = Dart_NewArray(options_count);
+ if (!Dart_IsValid(dart_arguments)) {
+ return dart_arguments;
+ }
+ for (int i = 0; i < options_count; i++) {
+ Dart_Handle argument_value = Dart_NewString(options->GetArgument(i));
+ if (!Dart_IsValid(argument_value)) {
+ return argument_value;
+ }
+ Dart_Handle result = Dart_ArraySetAt(dart_arguments, i, argument_value);
+ if (!Dart_IsValid(result)) {
+ return result;
+ }
+ }
+ Dart_Handle core_lib_url = Dart_NewString("dart:coreimpl");
+ if (!Dart_IsValid(core_lib_url)) {
+ return core_lib_url;
+ }
+ Dart_Handle core_lib = Dart_LookupLibrary(core_lib_url);
+ if (!Dart_IsValid(core_lib)) {
+ return core_lib;
+ }
+ Dart_Handle runtime_options_class_name = Dart_NewString("RuntimeOptions");
+ if (!Dart_IsValid(runtime_options_class_name)) {
+ return runtime_options_class_name;
+ }
+ Dart_Handle runtime_options_class = Dart_GetClass(
+ core_lib, runtime_options_class_name);
+ if (!Dart_IsValid(runtime_options_class)) {
+ return runtime_options_class;
+ }
+ Dart_Handle native_name = Dart_NewString("_nativeArguments");
+ if (!Dart_IsValid(native_name)) {
+ return native_name;
+ }
+
+ return Dart_SetStaticField(runtime_options_class,
+ native_name,
+ dart_arguments);
+}
+
+
static void DumpPprofSymbolInfo() {
if (generate_pprof_symbols_filename != NULL) {
Dart_EnterScope();
@@ -199,8 +243,6 @@
}
Dart_EnterScope();
- // TODO(asiva): Create a dart options object that can be accessed from
- // dart code.
if (HasCompileAll(vm_options)) {
Dart_Handle result = Dart_CompileAll();
if (!Dart_IsValid(result)) {
@@ -212,6 +254,16 @@
}
}
+ // Create a dart options object that can be accessed from dart code.
+ Dart_Handle options_result = SetupRuntimeOptions(&dart_options);
+ if (!Dart_IsValid(options_result)) {
+ fprintf(stderr, "%s\n", Dart_GetError(options_result));
+ Dart_ExitScope();
+ Dart_ShutdownIsolate();
+ free(canonical_script_name);
+ return 255; // Indicates we encountered an error.
+ }
+
// Lookup and invoke the top level main function.
Dart_Handle script_url = Dart_NewString(canonical_script_name);
Dart_Handle library = Dart_LookupLibrary(script_url);
« no previous file with comments | « no previous file | lib/lib_impl_sources.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698