| Index: vm/dart_api_impl_test.cc
 | 
| ===================================================================
 | 
| --- vm/dart_api_impl_test.cc	(revision 1955)
 | 
| +++ vm/dart_api_impl_test.cc	(working copy)
 | 
| @@ -13,7 +13,6 @@
 | 
|  
 | 
|  namespace dart {
 | 
|  
 | 
| -
 | 
|  #if defined(TARGET_ARCH_IA32)  // only ia32 can run execution tests.
 | 
|  
 | 
|  UNIT_TEST_CASE(ErrorHandles) {
 | 
| @@ -24,8 +23,8 @@
 | 
|        "  }\n"
 | 
|        "}\n";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
| +
 | 
|    Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
|  
 | 
|    Dart_Handle instance = Dart_True();
 | 
| @@ -59,30 +58,22 @@
 | 
|    EXPECT(Dart_IsError(Dart_ErrorGetStacktrace(instance)));
 | 
|    EXPECT(Dart_IsError(Dart_ErrorGetStacktrace(error)));
 | 
|    EXPECT_VALID(Dart_ErrorGetStacktrace(exception));
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  #endif
 | 
|  
 | 
|  
 | 
|  UNIT_TEST_CASE(Dart_Error) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle error = Dart_Error("An %s", "error");
 | 
|    EXPECT(Dart_IsError(error));
 | 
|    EXPECT_STREQ("An error", Dart_GetError(error));
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  UNIT_TEST_CASE(Null) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();  // Enter a Dart API scope for the unit test.
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle null = Dart_Null();
 | 
|    EXPECT_VALID(null);
 | 
| @@ -91,15 +82,11 @@
 | 
|    Dart_Handle str = Dart_NewString("test");
 | 
|    EXPECT_VALID(str);
 | 
|    EXPECT(!Dart_IsNull(str));
 | 
| -
 | 
| -  Dart_ExitScope();  // Exit the Dart API scope.
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  UNIT_TEST_CASE(IsSame) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();  // Enter a Dart API scope for the unit test.
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    bool same = false;
 | 
|    Dart_Handle five = Dart_NewString("5");
 | 
| @@ -132,17 +119,13 @@
 | 
|      EXPECT_VALID(Dart_IsSame(class1, class2, &same));
 | 
|      EXPECT(!same);
 | 
|    }
 | 
| -
 | 
| -  Dart_ExitScope();  // Exit the Dart API scope.
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  #if defined(TARGET_ARCH_IA32)  // only ia32 can run execution tests.
 | 
|  
 | 
|  UNIT_TEST_CASE(ObjectEquals) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();  // Enter a Dart API scope for the unit test.
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    bool equal = false;
 | 
|    Dart_Handle five = Dart_NewString("5");
 | 
| @@ -160,16 +143,12 @@
 | 
|    // Different objects.
 | 
|    EXPECT_VALID(Dart_ObjectEquals(five, seven, &equal));
 | 
|    EXPECT(!equal);
 | 
| -
 | 
| -  Dart_ExitScope();  // Exit the Dart API scope.
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  #endif
 | 
|  
 | 
|  UNIT_TEST_CASE(BooleanValues) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();  // Enter a Dart API scope for the unit test.
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle str = Dart_NewString("test");
 | 
|    EXPECT(!Dart_IsBoolean(str));
 | 
| @@ -191,15 +170,11 @@
 | 
|    result = Dart_BooleanValue(val2, &value);
 | 
|    EXPECT_VALID(result);
 | 
|    EXPECT(!value);
 | 
| -
 | 
| -  Dart_ExitScope();  // Exit the Dart API scope.
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  UNIT_TEST_CASE(BooleanConstants) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();  // Enter a Dart API scope for the unit test.
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle true_handle = Dart_True();
 | 
|    EXPECT_VALID(true_handle);
 | 
| @@ -217,15 +192,11 @@
 | 
|    result = Dart_BooleanValue(false_handle, &value);
 | 
|    EXPECT_VALID(result);
 | 
|    EXPECT(!value);
 | 
| -
 | 
| -  Dart_ExitScope();  // Exit the Dart API scope.
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  UNIT_TEST_CASE(DoubleValues) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();  // Enter a Dart API scope for the unit test.
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    const double kDoubleVal1 = 201.29;
 | 
|    const double kDoubleVal2 = 101.19;
 | 
| @@ -240,9 +211,6 @@
 | 
|    result = Dart_DoubleValue(val2, &out2);
 | 
|    EXPECT_VALID(result);
 | 
|    EXPECT_EQ(kDoubleVal2, out2);
 | 
| -
 | 
| -  Dart_ExitScope();  // Exit the Dart API scope.
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -259,10 +227,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
|  
 | 
| @@ -302,18 +268,14 @@
 | 
|                                 NULL);
 | 
|      EXPECT_VALID(result);
 | 
|      EXPECT(!Dart_IsNumber(result));
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  #endif
 | 
|  
 | 
|  
 | 
|  UNIT_TEST_CASE(IntegerValues) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();  // Enter a Dart API scope for the unit test.
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    const int64_t kIntegerVal1 = 100;
 | 
|    const int64_t kIntegerVal2 = 0xffffffff;
 | 
| @@ -351,15 +313,11 @@
 | 
|    result = Dart_IntegerValueHexCString(val3, &chars);
 | 
|    EXPECT_VALID(result);
 | 
|    EXPECT(!strcmp(kIntegerVal3, chars));
 | 
| -
 | 
| -  Dart_ExitScope();  // Exit the Dart API scope.
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  UNIT_TEST_CASE(ArrayValues) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();  // Enter a Dart API scope for the unit test.
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    const int kArrayLength = 10;
 | 
|    Dart_Handle str = Dart_NewString("test");
 | 
| @@ -393,15 +351,11 @@
 | 
|      EXPECT_VALID(result);
 | 
|      EXPECT_EQ(i, value);
 | 
|    }
 | 
| -
 | 
| -  Dart_ExitScope();  // Exit the Dart API scope.
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  UNIT_TEST_CASE(IsString) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();  // Enter a Dart API scope for the unit test.
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    uint8_t data8[] = { 'o', 'n', 'e', 0xFF };
 | 
|  
 | 
| @@ -447,9 +401,6 @@
 | 
|    EXPECT(Dart_IsString(ext32));
 | 
|    EXPECT(!Dart_IsString8(ext32));
 | 
|    EXPECT(!Dart_IsString16(ext32));
 | 
| -
 | 
| -  Dart_ExitScope();  // Exit the Dart API scope.
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -469,10 +420,8 @@
 | 
|        "}";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
|  
 | 
| @@ -574,10 +523,7 @@
 | 
|      // Check if we get an exception when accessing beyond limit.
 | 
|      result = Dart_ListGetAt(ListAccessTestObj, 4);
 | 
|      EXPECT(Dart_IsError(result));
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  #endif  // TARGET_ARCH_IA32.
 | 
| @@ -586,7 +532,8 @@
 | 
|  // Unit test for entering a scope, creating a local handle and exiting
 | 
|  // the scope.
 | 
|  UNIT_TEST_CASE(EnterExitScope) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
| +
 | 
|    Isolate* isolate = Isolate::Current();
 | 
|    EXPECT(isolate != NULL);
 | 
|    ApiState* state = isolate->api_state();
 | 
| @@ -604,7 +551,6 @@
 | 
|    }
 | 
|    Dart_ExitScope();
 | 
|    EXPECT(scope == state->top_scope());
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -612,7 +558,7 @@
 | 
|  UNIT_TEST_CASE(PersistentHandles) {
 | 
|    const char* kTestString1 = "Test String1";
 | 
|    const char* kTestString2 = "Test String2";
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestCase::CreateTestIsolate();
 | 
|    Isolate* isolate = Isolate::Current();
 | 
|    EXPECT(isolate != NULL);
 | 
|    ApiState* state = isolate->api_state();
 | 
| @@ -678,7 +624,7 @@
 | 
|  // Test that we are able to create a persistent handle from a
 | 
|  // persistent handle.
 | 
|  UNIT_TEST_CASE(NewPersistentHandle_FromPersistentHandle) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Isolate* isolate = Isolate::Current();
 | 
|    EXPECT(isolate != NULL);
 | 
| @@ -699,8 +645,6 @@
 | 
|    Dart_Handle result = Dart_BooleanValue(obj2, &value);
 | 
|    EXPECT_VALID(result);
 | 
|    EXPECT(value);
 | 
| -
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -708,7 +652,7 @@
 | 
|  // Ensure that the local handles get all cleaned out when exiting the
 | 
|  // scope.
 | 
|  UNIT_TEST_CASE(LocalHandles) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestCase::CreateTestIsolate();
 | 
|    Isolate* isolate = Isolate::Current();
 | 
|    EXPECT(isolate != NULL);
 | 
|    ApiState* state = isolate->api_state();
 | 
| @@ -775,7 +719,7 @@
 | 
|  // zone for the scope. Ensure that the memory is freed when the scope
 | 
|  // exits.
 | 
|  UNIT_TEST_CASE(LocalZoneMemory) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestCase::CreateTestIsolate();
 | 
|    Isolate* isolate = Isolate::Current();
 | 
|    EXPECT(isolate != NULL);
 | 
|    ApiState* state = isolate->api_state();
 | 
| @@ -821,14 +765,14 @@
 | 
|  UNIT_TEST_CASE(Isolates) {
 | 
|    // This test currently assumes that the Dart_Isolate type is an opaque
 | 
|    // representation of Isolate*.
 | 
| -  Dart_Isolate iso_1 = Dart_CreateIsolate(NULL, NULL);
 | 
| +  Dart_Isolate iso_1 = TestCase::CreateTestIsolate();
 | 
|    EXPECT_EQ(iso_1, Isolate::Current());
 | 
|    Dart_Isolate isolate = Dart_CurrentIsolate();
 | 
|    EXPECT_EQ(iso_1, isolate);
 | 
|    Dart_ExitIsolate();
 | 
|    EXPECT(NULL == Isolate::Current());
 | 
|    EXPECT(NULL == Dart_CurrentIsolate());
 | 
| -  Dart_Isolate iso_2 = Dart_CreateIsolate(NULL, NULL);
 | 
| +  Dart_Isolate iso_2 = TestCase::CreateTestIsolate();
 | 
|    EXPECT_EQ(iso_2, Isolate::Current());
 | 
|    Dart_ExitIsolate();
 | 
|    EXPECT(NULL == Isolate::Current());
 | 
| @@ -857,7 +801,7 @@
 | 
|  
 | 
|  
 | 
|  UNIT_TEST_CASE(SetMessageCallbacks) {
 | 
| -  Dart_Isolate dart_isolate = Dart_CreateIsolate(NULL, NULL);
 | 
| +  Dart_Isolate dart_isolate = TestCase::CreateTestIsolate();
 | 
|    Dart_SetMessageCallbacks(&MyPostMessageCallback, &MyClosePortCallback);
 | 
|    Isolate* isolate = reinterpret_cast<Isolate*>(dart_isolate);
 | 
|    EXPECT_EQ(&MyPostMessageCallback, isolate->post_message_callback());
 | 
| @@ -885,10 +829,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
|  
 | 
| @@ -948,10 +890,7 @@
 | 
|      EXPECT_VALID(result);
 | 
|      result = Dart_IntegerValue(result, &value);
 | 
|      EXPECT_EQ(40, value);
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -972,10 +911,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Load up a test script which extends the native wrapper class.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
|  
 | 
| @@ -1035,10 +972,7 @@
 | 
|      EXPECT_VALID(result);
 | 
|      result = Dart_IntegerValue(result, &value);
 | 
|      EXPECT_EQ(40, value);
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1070,9 +1004,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
|      const int kNumNativeFields = 4;
 | 
|  
 | 
|      // Create a test library.
 | 
| @@ -1107,10 +1040,7 @@
 | 
|      EXPECT_EQ(Utils::RoundUp(((kNumNativeFields + 2) * kWordSize) + kWordSize,
 | 
|                               kObjectAlignment),
 | 
|                cls.instance_size());
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1131,10 +1061,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
|  
 | 
| @@ -1148,10 +1076,7 @@
 | 
|      // "NativeFieldsWrapper" and there is no definition of it either
 | 
|      // in the dart code or through the native field injection mechanism.
 | 
|      EXPECT(Dart_IsError(result));
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1173,9 +1098,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
|      const int kNumNativeFields = 2;
 | 
|  
 | 
|      // Load up a test script in the test library.
 | 
| @@ -1202,10 +1126,7 @@
 | 
|      EXPECT_EQ(Utils::RoundUp(((kNumNativeFields + 2) * kWordSize) + kWordSize,
 | 
|                               kObjectAlignment),
 | 
|                cls.instance_size());
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1227,10 +1148,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Load up a test script in the test library.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
|  
 | 
| @@ -1247,9 +1166,7 @@
 | 
|          "native fields class, but library '%s' has no native resolvers",
 | 
|          TestCase::url());
 | 
|      EXPECT_STREQ(Dart_GetError(expected_error), Dart_GetError(result));
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1341,9 +1258,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
|      const int kNumNativeFields = 4;
 | 
|  
 | 
|      // Create a test library.
 | 
| @@ -1368,10 +1284,7 @@
 | 
|  
 | 
|      // Now access and set various instance fields of the returned object.
 | 
|      TestNativeFields(retobj);
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1391,10 +1304,8 @@
 | 
|        "    return obj;\n"
 | 
|        "  }\n"
 | 
|        "}\n";
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Load up a test script in the test library.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars,
 | 
|                                                 native_field_lookup);
 | 
| @@ -1409,10 +1320,7 @@
 | 
|  
 | 
|      // Now access and set various instance fields of the returned object.
 | 
|      TestNativeFields(retobj);
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1436,10 +1344,9 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
|      DARTSCOPE(Isolate::Current());
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
|  
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
| @@ -1497,10 +1404,7 @@
 | 
|      EXPECT(Dart_IsError(result));
 | 
|      result = Dart_SetNativeInstanceField(retobj, kNativeFld0, 400);
 | 
|      EXPECT(Dart_IsError(result));
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1514,10 +1418,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
|  
 | 
| @@ -1554,10 +1456,7 @@
 | 
|      EXPECT_VALID(result);
 | 
|      result = Dart_IntegerValue(result, &value);
 | 
|      EXPECT_EQ(13, value);
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1569,10 +1468,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
|  
 | 
| @@ -1597,10 +1494,7 @@
 | 
|      EXPECT(Dart_IsError(result));
 | 
|      EXPECT_STREQ("Specified field is not found in the class",
 | 
|                   Dart_GetError(result));
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1622,10 +1516,9 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
|      DARTSCOPE(Isolate::Current());
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
|  
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
| @@ -1657,10 +1550,7 @@
 | 
|  
 | 
|      result = Dart_InvokeDynamic(retobj, Dart_NewString("method1"), 0, NULL);
 | 
|      EXPECT(Dart_IsError(result));
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1691,10 +1581,9 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
|      DARTSCOPE(Isolate::Current());
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
|  
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
| @@ -1741,10 +1630,7 @@
 | 
|      result = Dart_InvokeClosure(retobj, 1, dart_arguments);
 | 
|      EXPECT(Dart_IsError(result));
 | 
|      EXPECT(Dart_ErrorHasException(result));
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1781,7 +1667,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
| +
 | 
|    Isolate* isolate = Isolate::Current();
 | 
|    EXPECT(isolate != NULL);
 | 
|    ApiState* state = isolate->api_state();
 | 
| @@ -1820,7 +1707,6 @@
 | 
|      Dart_ExitScope();  // Exit the Dart API scope.
 | 
|      EXPECT_EQ(size, state->ZoneSizeInBytes());
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1849,9 +1735,8 @@
 | 
|        "  }"
 | 
|        "}";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(
 | 
|          kScriptChars,
 | 
|          reinterpret_cast<Dart_NativeEntryResolver>(gnac_lookup));
 | 
| @@ -1868,10 +1753,7 @@
 | 
|      result = Dart_IntegerValue(result, &value);
 | 
|      EXPECT_VALID(result);
 | 
|      EXPECT_EQ(3, value);
 | 
| -
 | 
| -    Dart_ExitScope();
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1880,8 +1762,8 @@
 | 
|        "class DoesExist {"
 | 
|        "}";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
| +
 | 
|    Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
|  
 | 
|    // Lookup a class that does exist.
 | 
| @@ -1893,9 +1775,6 @@
 | 
|    EXPECT(Dart_IsError(cls));
 | 
|    EXPECT_STREQ("Class 'DoesNotExist' not found in library 'dart:test-lib'.",
 | 
|                 Dart_GetError(cls));
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1912,10 +1791,8 @@
 | 
|        "}\n";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
 | 
|  
 | 
| @@ -1976,16 +1853,12 @@
 | 
|      // Check that error is returned if null is passed as a class argument.
 | 
|      result = Dart_ObjectIsType(null, null, &is_instance);
 | 
|      EXPECT(Dart_IsError(result));
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  UNIT_TEST_CASE(NullReceiver) {
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();  // Enter a Dart API scope for the unit test.
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
|      DARTSCOPE(Isolate::Current());
 | 
|  
 | 
| @@ -2009,8 +1882,6 @@
 | 
|      EXPECT(Dart_IsError(result));
 | 
|      EXPECT(Dart_ErrorHasException(result)); */
 | 
|    }
 | 
| -  Dart_ExitScope();  // Exit the Dart API scope.
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2030,8 +1901,7 @@
 | 
|        "  return 12345;"
 | 
|        "}";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle url = Dart_NewString(TestCase::url());
 | 
|    Dart_Handle source = Dart_NewString(kScriptChars);
 | 
| @@ -2088,9 +1958,6 @@
 | 
|    EXPECT_STREQ("Dart_LoadScript: "
 | 
|                 "A script has already been loaded from 'dart:test-lib'.",
 | 
|                 Dart_GetError(result));
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2098,17 +1965,13 @@
 | 
|    const char* kScriptChars =
 | 
|        ")";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle url = Dart_NewString(TestCase::url());
 | 
|    Dart_Handle source = Dart_NewString(kScriptChars);
 | 
|    Dart_Handle result = Dart_LoadScript(url, source, library_handler);
 | 
|    EXPECT(Dart_IsError(result));
 | 
|    EXPECT(strstr(Dart_GetError(result), "unexpected token ')'"));
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2120,8 +1983,7 @@
 | 
|        "#library('library1.dart');"
 | 
|        "#import('library2.dart');";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    // Create a test library and Load up a test script in it.
 | 
|    Dart_Handle url = Dart_NewString(TestCase::url());
 | 
| @@ -2157,9 +2019,6 @@
 | 
|    EXPECT(Dart_IsError(result));
 | 
|    EXPECT_STREQ("Dart_LookupLibrary: library 'noodles.dart' not found.",
 | 
|                 Dart_GetError(result));
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2167,8 +2026,7 @@
 | 
|    const char* kLibrary1Chars =
 | 
|        "#library('library1_name');";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle url = Dart_NewString("library1_url");
 | 
|    Dart_Handle source = Dart_NewString(kLibrary1Chars);
 | 
| @@ -2197,9 +2055,6 @@
 | 
|    const char* cstr = NULL;
 | 
|    EXPECT_VALID(Dart_StringToCString(result, &cstr));
 | 
|    EXPECT_STREQ("library1_url", cstr);
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2209,8 +2064,7 @@
 | 
|    const char* kLibrary2Chars =
 | 
|        "#library('library2_name');";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle error = Dart_Error("incoming error");
 | 
|    Dart_Handle result;
 | 
| @@ -2259,9 +2113,6 @@
 | 
|  
 | 
|    result = Dart_LibraryImportLibrary(lib1, lib2);
 | 
|    EXPECT_VALID(result);
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2270,8 +2121,7 @@
 | 
|    const char* kLibrary1Chars =
 | 
|        "#library('library1_name');";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle error = Dart_Error("incoming error");
 | 
|    Dart_Handle result;
 | 
| @@ -2319,9 +2169,6 @@
 | 
|    EXPECT_STREQ(
 | 
|        "Dart_LoadLibrary: library 'library1_url' has already been loaded.",
 | 
|        Dart_GetError(result));
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2330,17 +2177,13 @@
 | 
|        "#library('library1_name');"
 | 
|        ")";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle url = Dart_NewString("library1_url");
 | 
|    Dart_Handle source = Dart_NewString(kLibrary1Chars);
 | 
|    Dart_Handle result = Dart_LoadLibrary(url, source);
 | 
|    EXPECT(Dart_IsError(result));
 | 
|    EXPECT(strstr(Dart_GetError(result), "unexpected token ')'"));
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2352,8 +2195,7 @@
 | 
|    const char* kBadSourceChars =
 | 
|        ")";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle error = Dart_Error("incoming error");
 | 
|    Dart_Handle result;
 | 
| @@ -2432,9 +2274,6 @@
 | 
|    source = Dart_NewString(kBadSourceChars);
 | 
|    result = Dart_LoadSource(lib, url, source);
 | 
|    EXPECT(Dart_IsError(result));
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2472,8 +2311,7 @@
 | 
|        "  static baz() native \"SomeNativeFunction3\";"
 | 
|        "}";
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|  
 | 
|    Dart_Handle error = Dart_Error("incoming error");
 | 
|    Dart_Handle result;
 | 
| @@ -2556,9 +2394,6 @@
 | 
|    EXPECT(Dart_IsError(result));
 | 
|    EXPECT(strstr(Dart_GetError(result),
 | 
|                  "native function 'SomeNativeFunction3' cannot be found"));
 | 
| -
 | 
| -  Dart_ExitScope();
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2577,10 +2412,8 @@
 | 
|        "var foo;";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle url = Dart_NewString(TestCase::url());
 | 
|      Dart_Handle source = Dart_NewString(kScriptChars);
 | 
| @@ -2603,10 +2436,7 @@
 | 
|      EXPECT_STREQ("Duplicate definition : 'foo' is defined in"
 | 
|                   " 'library2.dart' and 'dart:test-lib'\n",
 | 
|                   Dart_GetError(result));
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2625,10 +2455,8 @@
 | 
|        "var foo;";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle url = Dart_NewString(TestCase::url());
 | 
|      Dart_Handle source = Dart_NewString(kScriptChars);
 | 
| @@ -2648,10 +2476,7 @@
 | 
|                                 0,
 | 
|                                 NULL);
 | 
|      EXPECT_VALID(result);
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2669,10 +2494,8 @@
 | 
|        "var foo;";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle url = Dart_NewString(TestCase::url());
 | 
|      Dart_Handle source = Dart_NewString(kScriptChars);
 | 
| @@ -2695,10 +2518,7 @@
 | 
|      EXPECT_STREQ("Duplicate definition : 'foo' is defined in"
 | 
|                   " 'library1.dart' and 'library2.dart'\n",
 | 
|                   Dart_GetError(result));
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2735,10 +2555,8 @@
 | 
|        "var fooC;";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle url = Dart_NewString(TestCase::url());
 | 
|      Dart_Handle source = Dart_NewString(kScriptChars);
 | 
| @@ -2777,10 +2595,7 @@
 | 
|      EXPECT_STREQ("Duplicate definition : 'fooC' is defined in"
 | 
|                   " 'libraryF.dart' and 'libraryC.dart'\n",
 | 
|                   Dart_GetError(result));
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -2798,10 +2613,8 @@
 | 
|        "}";
 | 
|    Dart_Handle result;
 | 
|  
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| +  TestIsolateScope __test_isolate__;
 | 
|    {
 | 
| -    Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
 | 
| -
 | 
|      // Create a test library and Load up a test script in it.
 | 
|      Dart_Handle url = Dart_NewString(TestCase::url());
 | 
|      Dart_Handle source = Dart_NewString(kScriptChars);
 | 
| @@ -2817,14 +2630,11 @@
 | 
|                                 0,
 | 
|                                 NULL);
 | 
|      EXPECT_VALID(result);
 | 
| -
 | 
| -    Dart_ExitScope();  // Exit the Dart API scope.
 | 
|    }
 | 
| -  Dart_ShutdownIsolate();
 | 
|  }
 | 
|  
 | 
|  
 | 
| -static void* RunLoopTest_InitCallback(void* data) {
 | 
| +static bool RunLoopTestCallback(void* data, char** error) {
 | 
|    const char* kScriptChars =
 | 
|        "#import('builtin');\n"
 | 
|        "class MyIsolate extends Isolate {\n"
 | 
| @@ -2849,25 +2659,28 @@
 | 
|        "  });\n"
 | 
|        "}\n";
 | 
|  
 | 
| +  Dart_Isolate isolate = TestCase::CreateTestIsolate();
 | 
| +  ASSERT(isolate != NULL);
 | 
|    Dart_EnterScope();
 | 
|    Dart_Handle url = Dart_NewString(TestCase::url());
 | 
|    Dart_Handle source = Dart_NewString(kScriptChars);
 | 
| -  Dart_Handle lib = Dart_LoadScript(url, source, library_handler);
 | 
| +  Dart_Handle lib = Dart_LoadScript(url, source, TestCase::library_handler);
 | 
|    EXPECT_VALID(lib);
 | 
|    Dart_ExitScope();
 | 
| -  return NULL;
 | 
| +  return true;
 | 
|  }
 | 
|  
 | 
|  
 | 
|  // Common code for RunLoop_Success/RunLoop_Failure.
 | 
|  static void RunLoopTest(bool throw_exception) {
 | 
| -  Dart_IsolateInitCallback saved = Isolate::InitCallback();
 | 
| -  Isolate::SetInitCallback(RunLoopTest_InitCallback);
 | 
| -  Dart_CreateIsolate(NULL, NULL);
 | 
| -  Dart_EnterScope();
 | 
| +  Dart_IsolateCreateCallback saved = Isolate::CreateCallback();
 | 
| +  Isolate::SetCreateCallback(RunLoopTestCallback);
 | 
| +  RunLoopTestCallback(NULL, NULL);
 | 
|  
 | 
| +  Dart_EnterScope();
 | 
|    Dart_Handle lib = Dart_LookupLibrary(Dart_NewString(TestCase::url()));
 | 
|    EXPECT_VALID(lib);
 | 
| +
 | 
|    Dart_Handle result;
 | 
|    Dart_Handle args[1];
 | 
|    args[0] = (throw_exception ? Dart_True() : Dart_False());
 | 
| @@ -2883,7 +2696,7 @@
 | 
|    Dart_ExitScope();
 | 
|    Dart_ShutdownIsolate();
 | 
|  
 | 
| -  Isolate::SetInitCallback(saved);
 | 
| +  Isolate::SetCreateCallback(saved);
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |