| Index: runtime/vm/kernel_isolate.cc
|
| diff --git a/runtime/vm/kernel_isolate.cc b/runtime/vm/kernel_isolate.cc
|
| index 75d52b9b5708f249d398bc15b2e59fc46ea8181d..6020a27f8b7540576314d5519515afbaa7d6ad8c 100644
|
| --- a/runtime/vm/kernel_isolate.cc
|
| +++ b/runtime/vm/kernel_isolate.cc
|
| @@ -248,31 +248,6 @@ Dart_Port KernelIsolate::WaitForKernelPort() {
|
| return kernel_port_;
|
| }
|
|
|
| -static Dart_CObject BuildFilesPairs(int source_files_count,
|
| - Dart_SourceFile source_files[]) {
|
| - Dart_CObject files;
|
| - files.type = Dart_CObject_kArray;
|
| - files.value.as_array.length = source_files_count * 2;
|
| - // typedef Dart_CObject* Dart_CObjectPtr;
|
| - Dart_CObject** fileNamePairs = new Dart_CObject*[source_files_count * 2];
|
| - for (int i = 0; i < source_files_count; i++) {
|
| - Dart_CObject* source_uri = new Dart_CObject();
|
| - source_uri->type = Dart_CObject_kString;
|
| - source_uri->value.as_string = const_cast<char*>(source_files[i].uri);
|
| - fileNamePairs[i * 2] = source_uri;
|
| -
|
| - Dart_CObject* source_code = new Dart_CObject();
|
| - source_code->type = Dart_CObject_kTypedData;
|
| - source_code->value.as_typed_data.type = Dart_TypedData_kUint8;
|
| - source_code->value.as_typed_data.length = strlen(source_files[i].source);
|
| - source_code->value.as_typed_data.values =
|
| - reinterpret_cast<uint8_t*>(const_cast<char*>(source_files[i].source));
|
| - fileNamePairs[(i * 2) + 1] = source_code;
|
| - }
|
| - files.value.as_array.values = fileNamePairs;
|
| - return files;
|
| -}
|
| -
|
| class KernelCompilationRequest : public ValueObject {
|
| public:
|
| KernelCompilationRequest()
|
| @@ -300,12 +275,10 @@ class KernelCompilationRequest : public ValueObject {
|
| Dart_Port kernel_port,
|
| const char* script_uri,
|
| int source_files_count,
|
| - Dart_SourceFile source_files[],
|
| - bool incremental_compile) {
|
| - // Build the [null, send_port, script_uri, incremental_compile, isolate_id,
|
| - // [files]] message for the Kernel isolate: null tag tells it that request
|
| - // came from this code, instead of Loader so that it can given a more
|
| - // informative response.
|
| + Dart_SourceFile source_files[]) {
|
| + // Build the [null, send_port, script_uri] message for the Kernel isolate:
|
| + // null tag tells it that request came from this code, instead of Loader
|
| + // so that it can given a more informative response.
|
| Dart_CObject tag;
|
| tag.type = Dart_CObject_kNull;
|
|
|
| @@ -318,38 +291,44 @@ class KernelCompilationRequest : public ValueObject {
|
| uri.type = Dart_CObject_kString;
|
| uri.value.as_string = const_cast<char*>(script_uri);
|
|
|
| - Dart_CObject dart_incremental;
|
| - dart_incremental.type = Dart_CObject_kBool;
|
| - dart_incremental.value.as_bool = incremental_compile;
|
| -
|
| - // TODO(aam): Assert that isolate exists once we move CompileAndReadScript
|
| - // compilation logic out of CreateIsolateAndSetupHelper and into
|
| - // IsolateSetupHelper in main.cc.
|
| - Isolate* isolate =
|
| - Thread::Current() != NULL ? Thread::Current()->isolate() : NULL;
|
| - if (incremental_compile) {
|
| - ASSERT(isolate != NULL);
|
| - }
|
| - Dart_CObject isolate_id;
|
| - isolate_id.type = Dart_CObject_kInt64;
|
| - isolate_id.value.as_int64 =
|
| - isolate != NULL ? static_cast<int64_t>(isolate->main_port()) : 0;
|
| -
|
| Dart_CObject message;
|
| message.type = Dart_CObject_kArray;
|
|
|
| - intptr_t message_len = 5;
|
| - Dart_CObject files;
|
| - if (source_files_count != 0) {
|
| - files = BuildFilesPairs(source_files_count, source_files);
|
| - message_len++;
|
| + if (source_files_count == 0) {
|
| + static const intptr_t message_len = 3;
|
| + Dart_CObject* message_arr[] = {&tag, &send_port, &uri};
|
| + message.value.as_array.values = message_arr;
|
| + message.value.as_array.length = message_len;
|
| + // Send the message.
|
| + Dart_PostCObject(kernel_port, &message);
|
| + } else {
|
| + Dart_CObject files;
|
| + files.type = Dart_CObject_kArray;
|
| + files.value.as_array.length = source_files_count * 2;
|
| + // typedef Dart_CObject* Dart_CObjectPtr;
|
| + Dart_CObject** fileNamePairs = new Dart_CObject*[source_files_count * 2];
|
| + for (int i = 0; i < source_files_count; i++) {
|
| + Dart_CObject* source_uri = new Dart_CObject();
|
| + source_uri->type = Dart_CObject_kString;
|
| + source_uri->value.as_string = const_cast<char*>(source_files[i].uri);
|
| + fileNamePairs[i * 2] = source_uri;
|
| +
|
| + Dart_CObject* source_code = new Dart_CObject();
|
| + source_code->type = Dart_CObject_kTypedData;
|
| + source_code->value.as_typed_data.type = Dart_TypedData_kUint8;
|
| + source_code->value.as_typed_data.length =
|
| + strlen(source_files[i].source);
|
| + source_code->value.as_typed_data.values = reinterpret_cast<uint8_t*>(
|
| + const_cast<char*>(source_files[i].source));
|
| + fileNamePairs[(i * 2) + 1] = source_code;
|
| + }
|
| + files.value.as_array.values = fileNamePairs;
|
| + static const intptr_t message_len = 4;
|
| + Dart_CObject* message_arr[] = {&tag, &send_port, &uri, &files};
|
| + message.value.as_array.values = message_arr;
|
| + message.value.as_array.length = message_len;
|
| + Dart_PostCObject(kernel_port, &message);
|
| }
|
| - Dart_CObject* message_arr[] = {
|
| - &tag, &send_port, &uri, &dart_incremental, &isolate_id, &files};
|
| - message.value.as_array.values = message_arr;
|
| - message.value.as_array.length = message_len;
|
| - // Send the message.
|
| - Dart_PostCObject(kernel_port, &message);
|
|
|
| // Wait for reply to arrive.
|
| MonitorLocker ml(monitor_);
|
| @@ -460,8 +439,7 @@ KernelCompilationRequest* KernelCompilationRequest::requests_ = NULL;
|
| Dart_KernelCompilationResult KernelIsolate::CompileToKernel(
|
| const char* script_uri,
|
| int source_file_count,
|
| - Dart_SourceFile source_files[],
|
| - bool incremental_compile) {
|
| + Dart_SourceFile source_files[]) {
|
| // This must be the main script to be loaded. Wait for Kernel isolate
|
| // to finish initialization.
|
| Dart_Port kernel_port = WaitForKernelPort();
|
| @@ -474,8 +452,7 @@ Dart_KernelCompilationResult KernelIsolate::CompileToKernel(
|
|
|
| KernelCompilationRequest request;
|
| return request.SendAndWaitForResponse(kernel_port, script_uri,
|
| - source_file_count, source_files,
|
| - incremental_compile);
|
| + source_file_count, source_files);
|
| }
|
|
|
| #endif // DART_PRECOMPILED_RUNTIME
|
|
|