Index: runtime/lib/isolate.cc |
diff --git a/runtime/lib/isolate.cc b/runtime/lib/isolate.cc |
index 01c02efcf64813e2414ab9992dfad1fa5343c586..378e6eb18574a7f200984709e20618d9726849d1 100644 |
--- a/runtime/lib/isolate.cc |
+++ b/runtime/lib/isolate.cc |
@@ -171,21 +171,20 @@ static bool CreateIsolate(Isolate* parent_isolate, |
return false; |
} |
+ Dart_IsolateFlags api_flags; |
+ state->isolate_flags()->CopyTo(&api_flags); |
+ |
void* init_data = parent_isolate->init_callback_data(); |
Isolate* child_isolate = reinterpret_cast<Isolate*>( |
(callback)(state->script_url(), |
state->function_name(), |
state->package_root(), |
+ &api_flags, |
init_data, |
error)); |
if (child_isolate == NULL) { |
return false; |
} |
- // TODO(iposva): Evaluate whether it's ok to override the embedder's setup. |
- // Currently the strict_compilation flag is ignored if it's false and |
- // checked-mode was enabled using a command-line flag. The command-line flag |
- // overrides the user code's request. |
- child_isolate->set_strict_compilation(state->checked_mode()); |
if (!state->is_spawn_uri()) { |
// For isolates spawned using the spawn semantics we set |
// the origin_id to the origin_id of the parent isolate. |
@@ -234,12 +233,10 @@ DEFINE_NATIVE_ENTRY(Isolate_spawnFunction, 4) { |
#endif |
// Get the parent function so that we get the right function name. |
func = func.parent_function(); |
- bool checkedFlag = isolate->strict_compilation(); |
Spawn(isolate, new IsolateSpawnState(port.Id(), |
func, |
message, |
- paused.value(), |
- checkedFlag)); |
+ paused.value())); |
return Object::null(); |
} |
} |
@@ -278,20 +275,19 @@ DEFINE_NATIVE_ENTRY(Isolate_spawnUri, 7) { |
utf8_package_root[len] = '\0'; |
} |
- bool checkedFlag; |
- if (checked.IsNull()) { |
- checkedFlag = isolate->strict_compilation(); |
- } else { |
- checkedFlag = checked.value(); |
+ IsolateSpawnState* state = new IsolateSpawnState(port.Id(), |
+ canonical_uri, |
+ utf8_package_root, |
+ args, |
+ message, |
+ paused.value()); |
+ // If we were passed a value then override the default flags state for |
+ // checked mode. |
+ if (!checked.IsNull()) { |
+ state->isolate_flags()->set_checked(checked.value()); |
} |
- Spawn(isolate, new IsolateSpawnState(port.Id(), |
- canonical_uri, |
- utf8_package_root, |
- args, |
- message, |
- paused.value(), |
- checkedFlag)); |
+ Spawn(isolate, state); |
return Object::null(); |
} |