| Index: runtime/vm/dart_api_impl_test.cc
|
| ===================================================================
|
| --- runtime/vm/dart_api_impl_test.cc (revision 33596)
|
| +++ runtime/vm/dart_api_impl_test.cc (working copy)
|
| @@ -2881,33 +2881,33 @@
|
|
|
|
|
| TEST_CASE(AddGarbageCollectionCallbacks) {
|
| + // Prologue callback addition testing.
|
| +
|
| // Add a prologue callback.
|
| EXPECT_VALID(Dart_AddGcPrologueCallback(&PrologueCallbackTimes2));
|
|
|
| // Add the same prologue callback again. This is an error.
|
| EXPECT(Dart_IsError(Dart_AddGcPrologueCallback(&PrologueCallbackTimes2)));
|
|
|
| - // Add another prologue callback.
|
| - EXPECT_VALID(Dart_AddGcPrologueCallback(&PrologueCallbackTimes3));
|
| -
|
| - // Add the same prologue callback again. This is an error.
|
| + // Add another prologue callback. This is an error.
|
| EXPECT(Dart_IsError(Dart_AddGcPrologueCallback(&PrologueCallbackTimes3)));
|
|
|
| + // Epilogue callback addition testing.
|
| +
|
| // Add an epilogue callback.
|
| EXPECT_VALID(Dart_AddGcEpilogueCallback(&EpilogueCallbackTimes4));
|
|
|
| // Add the same epilogue callback again. This is an error.
|
| EXPECT(Dart_IsError(Dart_AddGcEpilogueCallback(&EpilogueCallbackTimes4)));
|
|
|
| - // Add annother epilogue callback.
|
| - EXPECT_VALID(Dart_AddGcEpilogueCallback(&EpilogueCallbackTimes5));
|
| -
|
| - // Add the same epilogue callback again. This is an error.
|
| + // Add annother epilogue callback. This is an error.
|
| EXPECT(Dart_IsError(Dart_AddGcEpilogueCallback(&EpilogueCallbackTimes5)));
|
| }
|
|
|
|
|
| TEST_CASE(RemoveGarbageCollectionCallbacks) {
|
| + // Prologue callback removal testing.
|
| +
|
| // Remove a prologue callback that has not been added. This is an error.
|
| EXPECT(Dart_IsError(Dart_RemoveGcPrologueCallback(&PrologueCallbackTimes2)));
|
|
|
| @@ -2920,40 +2920,30 @@
|
| // Remove a prologue callback again. This is an error.
|
| EXPECT(Dart_IsError(Dart_RemoveGcPrologueCallback(&PrologueCallbackTimes2)));
|
|
|
| - // Add two prologue callbacks.
|
| + // Add a prologue callback.
|
| EXPECT_VALID(Dart_AddGcPrologueCallback(&PrologueCallbackTimes2));
|
| - EXPECT_VALID(Dart_AddGcPrologueCallback(&PrologueCallbackTimes3));
|
|
|
| - // Remove two prologue callbacks.
|
| - EXPECT_VALID(Dart_RemoveGcPrologueCallback(&PrologueCallbackTimes3));
|
| - EXPECT_VALID(Dart_RemoveGcPrologueCallback(&PrologueCallbackTimes2));
|
| + // Remove a prolog callback that was not added. This is an error.
|
| + EXPECT(Dart_IsError(Dart_RemoveGcPrologueCallback(&PrologueCallbackTimes3)));
|
|
|
| - // Remove epilogue callbacks again. This is an error.
|
| + // Epilogue callback removal testing.
|
| +
|
| + // Remove epilogue callback that was not added. This is an error.
|
| EXPECT(Dart_IsError(Dart_RemoveGcEpilogueCallback(&EpilogueCallbackTimes4)));
|
| - EXPECT(Dart_IsError(Dart_RemoveGcEpilogueCallback(&EpilogueCallbackTimes5)));
|
|
|
| - // Remove a epilogue callback that has not been added. This is an error.
|
| - EXPECT(Dart_IsError(Dart_RemoveGcEpilogueCallback(&EpilogueCallbackTimes5)));
|
| -
|
| - // Add a epilogue callback.
|
| + // Add an epilogue callback.
|
| EXPECT_VALID(Dart_AddGcEpilogueCallback(&EpilogueCallbackTimes4));
|
|
|
| - // Remove a epilogue callback.
|
| + // Remove an epilogue callback.
|
| EXPECT_VALID(Dart_RemoveGcEpilogueCallback(&EpilogueCallbackTimes4));
|
|
|
| - // Remove a epilogue callback again. This is an error.
|
| + // Remove an epilogue callback again. This is an error.
|
| EXPECT(Dart_IsError(Dart_RemoveGcEpilogueCallback(&EpilogueCallbackTimes4)));
|
|
|
| - // Add two epilogue callbacks.
|
| + // Add an epilogue callbacks.
|
| EXPECT_VALID(Dart_AddGcEpilogueCallback(&EpilogueCallbackTimes4));
|
| - EXPECT_VALID(Dart_AddGcEpilogueCallback(&EpilogueCallbackTimes5));
|
|
|
| - // Remove two epilogue callbacks.
|
| - EXPECT_VALID(Dart_RemoveGcEpilogueCallback(&EpilogueCallbackTimes5));
|
| - EXPECT_VALID(Dart_RemoveGcEpilogueCallback(&EpilogueCallbackTimes4));
|
| -
|
| - // Remove epilogue callbacks again. This is an error.
|
| - EXPECT(Dart_IsError(Dart_RemoveGcEpilogueCallback(&EpilogueCallbackTimes4)));
|
| + // Remove an epilogue callback that was not added. This is an error.
|
| EXPECT(Dart_IsError(Dart_RemoveGcEpilogueCallback(&EpilogueCallbackTimes5)));
|
| }
|
|
|
| @@ -3054,90 +3044,7 @@
|
| EXPECT_EQ(7, global_epilogue_callback_status);
|
| }
|
|
|
| -TEST_CASE(MultipleGarbageCollectionCallbacks) {
|
| - // Add prologue callbacks.
|
| - EXPECT_VALID(Dart_AddGcPrologueCallback(&PrologueCallbackTimes2));
|
| - EXPECT_VALID(Dart_AddGcPrologueCallback(&PrologueCallbackTimes3));
|
|
|
| - // Add an epilogue callback.
|
| - EXPECT_VALID(Dart_AddGcEpilogueCallback(&EpilogueCallbackTimes4));
|
| -
|
| - // Garbage collect new space. This should not invoke the prologue
|
| - // or epilogue callbacks. No status values should change.
|
| - global_prologue_callback_status = 3;
|
| - global_epilogue_callback_status = 7;
|
| - GCTestHelper::CollectNewSpace(Heap::kIgnoreApiCallbacks);
|
| - EXPECT_EQ(3, global_prologue_callback_status);
|
| - EXPECT_EQ(7, global_epilogue_callback_status);
|
| -
|
| - // Garbage collect old space. This should invoke both prologue
|
| - // callbacks and the epilogue callback. The prologue and epilogue
|
| - // status values should change.
|
| - global_prologue_callback_status = 3;
|
| - global_epilogue_callback_status = 7;
|
| - Isolate::Current()->heap()->CollectGarbage(Heap::kOld);
|
| - EXPECT_EQ(18, global_prologue_callback_status);
|
| - EXPECT_EQ(28, global_epilogue_callback_status);
|
| -
|
| - // Add another GC epilogue callback.
|
| - EXPECT_VALID(Dart_AddGcEpilogueCallback(&EpilogueCallbackTimes5));
|
| -
|
| - // Garbage collect old space. This should invoke both prologue
|
| - // callbacks and both epilogue callbacks. The prologue and epilogue
|
| - // status values should change.
|
| - global_prologue_callback_status = 3;
|
| - global_epilogue_callback_status = 7;
|
| - Isolate::Current()->heap()->CollectGarbage(Heap::kOld);
|
| - EXPECT_EQ(18, global_prologue_callback_status);
|
| - EXPECT_EQ(140, global_epilogue_callback_status);
|
| -
|
| - // Remove an epilogue callback.
|
| - EXPECT_VALID(Dart_RemoveGcEpilogueCallback(&EpilogueCallbackTimes4));
|
| -
|
| - // Garbage collect old space. This should invoke both prologue
|
| - // callbacks and the remaining epilogue callback. The prologue and
|
| - // epilogue status values should change.
|
| - global_prologue_callback_status = 3;
|
| - global_epilogue_callback_status = 7;
|
| - Isolate::Current()->heap()->CollectGarbage(Heap::kOld);
|
| - EXPECT_EQ(18, global_prologue_callback_status);
|
| - EXPECT_EQ(35, global_epilogue_callback_status);
|
| -
|
| - // Remove the remaining epilogue callback.
|
| - EXPECT_VALID(Dart_RemoveGcEpilogueCallback(&EpilogueCallbackTimes5));
|
| -
|
| - // Garbage collect old space. This should invoke both prologue
|
| - // callbacks. The prologue status value should change.
|
| - global_prologue_callback_status = 3;
|
| - global_epilogue_callback_status = 7;
|
| - Isolate::Current()->heap()->CollectGarbage(Heap::kOld);
|
| - EXPECT_EQ(18, global_prologue_callback_status);
|
| - EXPECT_EQ(7, global_epilogue_callback_status);
|
| -
|
| - // Remove a prologue callback.
|
| - EXPECT_VALID(Dart_RemoveGcPrologueCallback(&PrologueCallbackTimes3));
|
| -
|
| - // Garbage collect old space. This should invoke the remaining
|
| - // prologue callback. The prologue status value should change.
|
| - global_prologue_callback_status = 3;
|
| - global_epilogue_callback_status = 7;
|
| - Isolate::Current()->heap()->CollectGarbage(Heap::kOld);
|
| - EXPECT_EQ(6, global_prologue_callback_status);
|
| - EXPECT_EQ(7, global_epilogue_callback_status);
|
| -
|
| - // Remove the remaining prologue callback.
|
| - EXPECT_VALID(Dart_RemoveGcPrologueCallback(&PrologueCallbackTimes2));
|
| -
|
| - // Garbage collect old space. No callbacks should be invoked. No
|
| - // status values should change.
|
| - global_prologue_callback_status = 3;
|
| - global_epilogue_callback_status = 7;
|
| - Isolate::Current()->heap()->CollectGarbage(Heap::kOld);
|
| - EXPECT_EQ(3, global_prologue_callback_status);
|
| - EXPECT_EQ(7, global_epilogue_callback_status);
|
| -}
|
| -
|
| -
|
| // Unit test for creating multiple scopes and local handles within them.
|
| // Ensure that the local handles get all cleaned out when exiting the
|
| // scope.
|
|
|