Index: runtime/vm/dart_api_impl.cc |
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc |
index 8dd7c2d5fbca796868e51b8dfa51b27212679270..d56cb0f5b8f25948cdb9a5fc6ab1244c0a2fd909 100644 |
--- a/runtime/vm/dart_api_impl.cc |
+++ b/runtime/vm/dart_api_impl.cc |
@@ -392,15 +392,7 @@ Dart_Handle Api::CheckAndFinalizePendingClasses(Isolate* isolate) { |
Dart_Isolate Api::CastIsolate(Isolate* isolate) { |
- if (isolate == NULL) { |
- return DART_ILLEGAL_ISOLATE; |
- } |
- return static_cast<Dart_Isolate>(isolate->main_port()); |
-} |
- |
- |
-Isolate* Api::CastIsolate(Dart_Isolate isolate) { |
- return PortMap::GetIsolate(static_cast<Dart_Port>(isolate)); |
+ return reinterpret_cast<Dart_Isolate>(isolate); |
} |
@@ -1324,7 +1316,7 @@ DART_EXPORT Dart_Isolate Dart_CreateIsolate(const char* script_uri, |
// We exit the API scope entered above. |
Dart_ExitScope(); |
Dart::ShutdownIsolate(); |
- return DART_ILLEGAL_ISOLATE; |
+ return reinterpret_cast<Dart_Isolate>(NULL); |
} |
@@ -1355,10 +1347,11 @@ DART_EXPORT void* Dart_CurrentIsolateData() { |
DART_EXPORT void* Dart_IsolateData(Dart_Isolate isolate) { |
TRACE_API_CALL(CURRENT_FUNC); |
- Isolate* iso = Api::CastIsolate(isolate); |
- if (iso == NULL) { |
- return NULL; |
+ if (isolate == NULL) { |
+ FATAL1("%s expects argument 'isolate' to be non-null.", CURRENT_FUNC); |
} |
+ // TODO(16615): Validate isolate parameter. |
+ Isolate* iso = reinterpret_cast<Isolate*>(isolate); |
return iso->init_callback_data(); |
} |
@@ -1371,19 +1364,15 @@ DART_EXPORT Dart_Handle Dart_DebugName() { |
-DART_EXPORT bool Dart_EnterIsolate(Dart_Isolate isolate) { |
+DART_EXPORT void Dart_EnterIsolate(Dart_Isolate isolate) { |
CHECK_NO_ISOLATE(Isolate::Current()); |
- Isolate* iso = Api::CastIsolate(isolate); |
- if (iso == NULL) { |
- return false; |
- } |
+ // TODO(16615): Validate isolate parameter. |
+ Isolate* iso = reinterpret_cast<Isolate*>(isolate); |
if (iso->mutator_thread() != NULL) { |
FATAL("Multiple mutators within one isolate is not supported."); |
- return false; |
} |
Thread::EnsureInit(); |
Thread::EnterIsolate(iso); |
- return true; |
} |
@@ -1500,25 +1489,27 @@ DART_EXPORT Dart_Handle Dart_CreateScriptSnapshot(uint8_t** buffer, |
} |
-DART_EXPORT bool Dart_InterruptIsolate(Dart_Isolate isolate) { |
+DART_EXPORT void Dart_InterruptIsolate(Dart_Isolate isolate) { |
TRACE_API_CALL(CURRENT_FUNC); |
- Isolate* iso = Api::CastIsolate(isolate); |
- if (iso == NULL) { |
- return false; |
+ if (isolate == NULL) { |
+ FATAL1("%s expects argument 'isolate' to be non-null.", CURRENT_FUNC); |
} |
+ // TODO(16615): Validate isolate parameter. |
+ Isolate* iso = reinterpret_cast<Isolate*>(isolate); |
iso->ScheduleInterrupts(Isolate::kApiInterrupt); |
// Can't use Dart_Post() since there isn't a current isolate. |
Dart_CObject api_null = { Dart_CObject_kNull , { 0 } }; |
- return Dart_PostCObject(iso->main_port(), &api_null); |
+ Dart_PostCObject(iso->main_port(), &api_null); |
} |
DART_EXPORT bool Dart_IsolateMakeRunnable(Dart_Isolate isolate) { |
CHECK_NO_ISOLATE(Isolate::Current()); |
- Isolate* iso = Api::CastIsolate(isolate); |
- if (iso == NULL) { |
- return false; |
+ if (isolate == NULL) { |
+ FATAL1("%s expects argument 'isolate' to be non-null.", CURRENT_FUNC); |
} |
+ // TODO(16615): Validate isolate parameter. |
+ Isolate* iso = reinterpret_cast<Isolate*>(isolate); |
if (iso->object_store()->root_library() == Library::null()) { |
// The embedder should have called Dart_LoadScript by now. |
return false; |
@@ -1633,7 +1624,7 @@ static uint8_t* allocator(uint8_t* ptr, intptr_t old_size, intptr_t new_size) { |
DART_EXPORT bool Dart_Post(Dart_Port port_id, Dart_Handle handle) { |
Isolate* isolate = Isolate::Current(); |
DARTSCOPE(isolate); |
- if (port_id == DART_ILLEGAL_PORT) { |
+ if (port_id == ILLEGAL_PORT) { |
return false; |
} |
const Object& object = Object::Handle(isolate, Api::UnwrapHandle(handle)); |
@@ -1650,7 +1641,7 @@ DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id) { |
Isolate* isolate = Isolate::Current(); |
DARTSCOPE(isolate); |
CHECK_CALLBACK_STATE(isolate); |
- if (port_id == DART_ILLEGAL_PORT) { |
+ if (port_id == ILLEGAL_PORT) { |
return Api::NewError("%s: illegal port_id %" Pd64 ".", |
CURRENT_FUNC, |
port_id); |
@@ -5565,10 +5556,7 @@ DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer) { |
// --- Service support --- |
DART_EXPORT bool Dart_IsServiceIsolate(Dart_Isolate isolate) { |
- Isolate* iso = Api::CastIsolate(isolate); |
- if (iso == NULL) { |
- return false; |
- } |
+ Isolate* iso = reinterpret_cast<Isolate*>(isolate); |
return ServiceIsolate::IsServiceIsolate(iso); |
} |