Chromium Code Reviews| Index: runtime/bin/main.cc |
| =================================================================== |
| --- runtime/bin/main.cc (revision 29136) |
| +++ runtime/bin/main.cc (working copy) |
| @@ -460,7 +460,11 @@ |
| result = DartUtils::PrepareForScriptLoading(package_root, builtin_lib); |
| CHECK_RESULT(result); |
| - Dart_Handle library = DartUtils::LoadScript(script_uri, builtin_lib); |
| + IsolateData* isolate_data = reinterpret_cast<IsolateData*>(data); |
| + ASSERT(isolate_data); |
|
Søren Gjesse
2013/10/24 07:21:41
isolate_data != NULL
siva
2013/10/24 16:25:03
Done.
|
| + ASSERT(isolate_data->script_url); |
|
Søren Gjesse
2013/10/24 07:21:41
isolate_data->script_url != NULL
siva
2013/10/24 16:25:03
Done.
|
| + Dart_Handle library = DartUtils::LoadScript(isolate_data->script_url, |
| + builtin_lib); |
| CHECK_RESULT(library); |
| if (!Dart_IsLibrary(library)) { |
| char errbuf[256]; |
| @@ -514,9 +518,22 @@ |
| const char* main, |
| void* data, char** error) { |
| bool is_compile_error = false; |
| + if (script_uri == NULL) { |
| + if (data == NULL) { |
| + *error = strdup("Invalid 'callback_data' - Unable to spawn new isolate"); |
| + return NULL; |
| + } |
| + IsolateData* parent_isolate_data = reinterpret_cast<IsolateData*>(data); |
| + script_uri = parent_isolate_data->script_url; |
| + if (script_uri == NULL) { |
| + *error = strdup("Invalid 'callback_data' - Unable to spawn new isolate"); |
| + return NULL; |
| + } |
| + } |
| + IsolateData* isolate_data = new IsolateData(script_uri); |
| return CreateIsolateAndSetupHelper(script_uri, |
| main, |
| - new IsolateData(), |
| + isolate_data, |
| error, |
| &is_compile_error); |
| } |
| @@ -781,9 +798,10 @@ |
| char* error = NULL; |
| bool is_compile_error = false; |
| char* isolate_name = BuildIsolateName(script_name, "main"); |
| + IsolateData* isolate_data = new IsolateData(script_name); |
| Dart_Isolate isolate = CreateIsolateAndSetupHelper(script_name, |
| "main", |
| - new IsolateData(), |
| + isolate_data, |
| &error, |
| &is_compile_error); |
| if (isolate == NULL) { |