Index: runtime/vm/dart_api_impl.cc |
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc |
index f4295b2574a72cfabe7c5f8eea3fead17e2f860e..bc36704424b32c1b9ab8117fa09ca7ccdb760420 100644 |
--- a/runtime/vm/dart_api_impl.cc |
+++ b/runtime/vm/dart_api_impl.cc |
@@ -1287,12 +1287,21 @@ static char* BuildIsolateName(const char* script_uri, |
DART_EXPORT Dart_Isolate Dart_CreateIsolate(const char* script_uri, |
const char* main, |
const uint8_t* snapshot, |
+ Dart_IsolateFlags* flags, |
void* callback_data, |
char** error) { |
CHECK_NO_ISOLATE(Isolate::Current()); |
char* isolate_name = BuildIsolateName(script_uri, main); |
Thread::EnsureInit(); |
- Isolate* isolate = Dart::CreateIsolate(isolate_name); |
+ |
+ // Setup default flags in case none were passed. |
+ Dart_IsolateFlags api_flags; |
+ if (flags == NULL) { |
+ Isolate::Flags vm_flags; |
+ vm_flags.CopyTo(&api_flags); |
+ flags = &api_flags; |
+ } |
+ Isolate* isolate = Dart::CreateIsolate(isolate_name, *flags); |
free(isolate_name); |
StackZone zone(isolate); |
HANDLESCOPE(isolate); |
@@ -1405,6 +1414,7 @@ DART_EXPORT void Dart_ExitIsolate() { |
} |
+// TODO(iposva): Remove this API and instead expose the underlying flags. |
DART_EXPORT Dart_Handle Dart_IsolateSetStrictCompilation(bool value) { |
CHECK_ISOLATE(Isolate::Current()); |
Isolate* isolate = Isolate::Current(); |
@@ -1412,7 +1422,11 @@ DART_EXPORT Dart_Handle Dart_IsolateSetStrictCompilation(bool value) { |
return Api::NewError( |
"%s expects that the isolate has not yet compiled code.", CURRENT_FUNC); |
} |
- Isolate::Current()->set_strict_compilation(value); |
+ if (!value) { |
+ return Api::NewError( |
+ "%s expects that the value is set to true only.", CURRENT_FUNC); |
+ } |
+ Isolate::Current()->set_strict_compilation(); |
return Api::Null(); |
} |
@@ -3999,8 +4013,6 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, |
// other operations (gc, compilation) are active. |
TIMERSCOPE(isolate, time_dart_execution); |
- isolate->set_has_compiled(true); |
- |
const String& function_name = Api::UnwrapStringHandle(isolate, name); |
if (function_name.IsNull()) { |
RETURN_TYPE_ERROR(isolate, name, String); |