Index: runtime/lib/isolate.cc |
diff --git a/runtime/lib/isolate.cc b/runtime/lib/isolate.cc |
index 1e08dad0b5edabec1fb148db98b624f54d9695a8..01c02efcf64813e2414ab9992dfad1fa5343c586 100644 |
--- a/runtime/lib/isolate.cc |
+++ b/runtime/lib/isolate.cc |
@@ -181,8 +181,13 @@ static bool CreateIsolate(Isolate* parent_isolate, |
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 spawnFunction semantics we set |
+ // For isolates spawned using the spawn semantics we set |
// the origin_id to the origin_id of the parent isolate. |
child_isolate->set_origin_id(parent_isolate->origin_id()); |
} |
@@ -229,10 +234,12 @@ 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())); |
+ paused.value(), |
+ checkedFlag)); |
return Object::null(); |
} |
} |
@@ -243,13 +250,14 @@ DEFINE_NATIVE_ENTRY(Isolate_spawnFunction, 4) { |
} |
-DEFINE_NATIVE_ENTRY(Isolate_spawnUri, 6) { |
+DEFINE_NATIVE_ENTRY(Isolate_spawnUri, 7) { |
GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0)); |
GET_NON_NULL_NATIVE_ARGUMENT(String, uri, arguments->NativeArgAt(1)); |
GET_NON_NULL_NATIVE_ARGUMENT(Instance, args, arguments->NativeArgAt(2)); |
GET_NON_NULL_NATIVE_ARGUMENT(Instance, message, arguments->NativeArgAt(3)); |
GET_NON_NULL_NATIVE_ARGUMENT(Bool, paused, arguments->NativeArgAt(4)); |
- GET_NATIVE_ARGUMENT(String, package_root, arguments->NativeArgAt(5)); |
+ GET_NATIVE_ARGUMENT(Bool, checked, arguments->NativeArgAt(5)); |
+ GET_NATIVE_ARGUMENT(String, package_root, arguments->NativeArgAt(6)); |
// Canonicalize the uri with respect to the current isolate. |
char* error = NULL; |
@@ -270,12 +278,20 @@ DEFINE_NATIVE_ENTRY(Isolate_spawnUri, 6) { |
utf8_package_root[len] = '\0'; |
} |
+ bool checkedFlag; |
+ if (checked.IsNull()) { |
+ checkedFlag = isolate->strict_compilation(); |
+ } else { |
+ checkedFlag = checked.value(); |
+ } |
+ |
Spawn(isolate, new IsolateSpawnState(port.Id(), |
canonical_uri, |
utf8_package_root, |
args, |
message, |
- paused.value())); |
+ paused.value(), |
+ checkedFlag)); |
return Object::null(); |
} |