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