| 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();
|
| }
|
|
|
|
|