Index: runtime/vm/service_isolate.cc |
diff --git a/runtime/vm/service_isolate.cc b/runtime/vm/service_isolate.cc |
index c07638fcd9fccccaeb512feb613b40421f7fc43b..4bcd2d4d3523a261fde60d83fe2881ba74a63448 100644 |
--- a/runtime/vm/service_isolate.cc |
+++ b/runtime/vm/service_isolate.cc |
@@ -31,80 +31,6 @@ DEFINE_FLAG(bool, trace_service, false, "Trace VM service requests."); |
DEFINE_FLAG(bool, trace_service_pause_events, false, |
"Trace VM service isolate pause events."); |
-struct ResourcesEntry { |
- const char* path_; |
- const char* resource_; |
- int length_; |
-}; |
- |
-extern ResourcesEntry __service_resources_[]; |
- |
-class Resources { |
- public: |
- static const int kNoSuchInstance = -1; |
- static int ResourceLookup(const char* path, const char** resource) { |
- ResourcesEntry* table = ResourceTable(); |
- for (int i = 0; table[i].path_ != NULL; i++) { |
- const ResourcesEntry& entry = table[i]; |
- if (strcmp(path, entry.path_) == 0) { |
- *resource = entry.resource_; |
- ASSERT(entry.length_ > 0); |
- return entry.length_; |
- } |
- } |
- return kNoSuchInstance; |
- } |
- |
- static const char* Path(int idx) { |
- ASSERT(idx >= 0); |
- ResourcesEntry* entry = At(idx); |
- if (entry == NULL) { |
- return NULL; |
- } |
- ASSERT(entry->path_ != NULL); |
- return entry->path_; |
- } |
- |
- static int Length(int idx) { |
- ASSERT(idx >= 0); |
- ResourcesEntry* entry = At(idx); |
- if (entry == NULL) { |
- return kNoSuchInstance; |
- } |
- ASSERT(entry->path_ != NULL); |
- return entry->length_; |
- } |
- |
- static const uint8_t* Resource(int idx) { |
- ASSERT(idx >= 0); |
- ResourcesEntry* entry = At(idx); |
- if (entry == NULL) { |
- return NULL; |
- } |
- return reinterpret_cast<const uint8_t*>(entry->resource_); |
- } |
- |
- private: |
- static ResourcesEntry* At(int idx) { |
- ASSERT(idx >= 0); |
- ResourcesEntry* table = ResourceTable(); |
- for (int i = 0; table[i].path_ != NULL; i++) { |
- if (idx == i) { |
- return &table[i]; |
- } |
- } |
- return NULL; |
- } |
- |
- static ResourcesEntry* ResourceTable() { |
- return &__service_resources_[0]; |
- } |
- |
- DISALLOW_ALLOCATION(); |
- DISALLOW_IMPLICIT_CONSTRUCTORS(Resources); |
-}; |
- |
- |
static uint8_t* allocator(uint8_t* ptr, intptr_t old_size, intptr_t new_size) { |
void* new_ptr = realloc(reinterpret_cast<void*>(ptr), new_size); |
return reinterpret_cast<uint8_t*>(new_ptr); |
@@ -350,9 +276,9 @@ static ServiceNativeEntry _ServiceNativeEntries[] = { |
}; |
-static Dart_NativeFunction ServiceNativeResolver(Dart_Handle name, |
- int num_arguments, |
- bool* auto_setup_scope) { |
+Dart_NativeFunction ServiceIsolate::NativeResolver(Dart_Handle name, |
+ int num_arguments, |
+ bool* auto_setup_scope) { |
const Object& obj = Object::Handle(Api::UnwrapHandle(name)); |
if (!obj.IsString()) { |
return NULL; |
@@ -529,7 +455,7 @@ void ServiceIsolate::SetLoadPort(Dart_Port port) { |
} |
-void ServiceIsolate::MaybeInjectVMServiceLibrary(Isolate* I) { |
+void ServiceIsolate::MaybeMakeServiceIsolate(Isolate* I) { |
Thread* T = Thread::Current(); |
ASSERT(I == T->isolate()); |
ASSERT(I != NULL); |
@@ -543,46 +469,6 @@ void ServiceIsolate::MaybeInjectVMServiceLibrary(Isolate* I) { |
return; |
} |
SetServiceIsolate(I); |
- |
- StackZone zone(T); |
- HANDLESCOPE(T); |
- |
- // Register dart:vmservice library. |
- const String& url_str = String::Handle(Z, Symbols::DartVMService().raw()); |
- const Library& library = Library::Handle(Z, Library::New(url_str)); |
- library.Register(); |
- library.set_native_entry_resolver(ServiceNativeResolver); |
- |
- // Temporarily install our library tag handler. |
- I->set_library_tag_handler(LibraryTagHandler); |
- |
- // Get script source. |
- const char* resource = NULL; |
- const char* path = "/vmservice.dart"; |
- intptr_t r = Resources::ResourceLookup(path, &resource); |
- ASSERT(r != Resources::kNoSuchInstance); |
- ASSERT(resource != NULL); |
- const String& source_str = String::Handle(Z, |
- String::FromUTF8(reinterpret_cast<const uint8_t*>(resource), r)); |
- ASSERT(!source_str.IsNull()); |
- const Script& script = Script::Handle(Z, |
- Script::New(url_str, source_str, RawScript::kLibraryTag)); |
- |
- // Compile script. |
- Dart_EnterScope(); // Need to enter scope for tag handler. |
- library.SetLoadInProgress(); |
- const Error& error = Error::Handle(Z, Compiler::Compile(library, script)); |
- if (!error.IsNull()) { |
- OS::PrintErr("vm-service: Isolate creation error: %s\n", |
- error.ToErrorCString()); |
- } |
- ASSERT(error.IsNull()); |
- Dart_Handle result = Dart_FinalizeLoading(false); |
- ASSERT(!Dart_IsError(result)); |
- Dart_ExitScope(); |
- |
- // Uninstall our library tag handler. |
- I->set_library_tag_handler(NULL); |
} |
@@ -804,51 +690,4 @@ void ServiceIsolate::Shutdown() { |
} |
} |
- |
-Dart_Handle ServiceIsolate::GetSource(const char* name) { |
- ASSERT(name != NULL); |
- int i = 0; |
- while (true) { |
- const char* path = Resources::Path(i); |
- if (path == NULL) { |
- break; |
- } |
- ASSERT(*path != '\0'); |
- // Skip the '/'. |
- path++; |
- if (strcmp(name, path) == 0) { |
- const uint8_t* str = Resources::Resource(i); |
- intptr_t length = Resources::Length(i); |
- return Dart_NewStringFromUTF8(str, length); |
- } |
- i++; |
- } |
- FATAL1("vm-service: Could not find embedded source file: %s ", name); |
- return Dart_Null(); |
-} |
- |
- |
-Dart_Handle ServiceIsolate::LibraryTagHandler(Dart_LibraryTag tag, |
- Dart_Handle library, |
- Dart_Handle url) { |
- if (tag == Dart_kCanonicalizeUrl) { |
- // url is already canonicalized. |
- return url; |
- } |
- if (tag != Dart_kSourceTag) { |
- FATAL("ServiceIsolate::LibraryTagHandler encountered an unexpected tag."); |
- } |
- ASSERT(tag == Dart_kSourceTag); |
- const char* url_string = NULL; |
- Dart_Handle result = Dart_StringToCString(url, &url_string); |
- if (Dart_IsError(result)) { |
- return result; |
- } |
- Dart_Handle source = GetSource(url_string); |
- if (Dart_IsError(source)) { |
- return source; |
- } |
- return Dart_LoadSource(library, url, source, 0, 0); |
-} |
- |
} // namespace dart |