Index: runtime/vm/dart_api_impl_test.cc |
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc |
index 9300432889093912aeca37e5596ecb1b50c67d5f..9e9a4e3764d46675313a060c4cd5f0323624beeb 100644 |
--- a/runtime/vm/dart_api_impl_test.cc |
+++ b/runtime/vm/dart_api_impl_test.cc |
@@ -1231,9 +1231,8 @@ TEST_CASE(DartAPI_MalformedStringToUTF8) { |
// perturb the test. |
class GCTestHelper : public AllStatic { |
public: |
- static void CollectNewSpace(Heap::ApiCallbacks api_callbacks) { |
- bool invoke_api_callbacks = (api_callbacks == Heap::kInvokeApiCallbacks); |
- Isolate::Current()->heap()->new_space()->Scavenge(invoke_api_callbacks); |
+ static void CollectNewSpace() { |
+ Isolate::Current()->heap()->new_space()->Scavenge(); |
} |
static void WaitForGCTasks() { |
@@ -2685,7 +2684,7 @@ TEST_CASE(DartAPI_WeakPersistentHandle) { |
{ |
TransitionNativeToVM transition(thread); |
// Garbage collect new space. |
- GCTestHelper::CollectNewSpace(Heap::kIgnoreApiCallbacks); |
+ GCTestHelper::CollectNewSpace(); |
} |
// Nothing should be invalidated or cleared. |
@@ -2729,7 +2728,7 @@ TEST_CASE(DartAPI_WeakPersistentHandle) { |
{ |
TransitionNativeToVM transition(thread); |
// Garbage collect new space again. |
- GCTestHelper::CollectNewSpace(Heap::kIgnoreApiCallbacks); |
+ GCTestHelper::CollectNewSpace(); |
GCTestHelper::WaitForGCTasks(); |
} |
@@ -2808,7 +2807,7 @@ TEST_CASE(DartAPI_WeakPersistentHandleCallback) { |
TransitionNativeToVM transition(thread); |
Isolate::Current()->heap()->CollectGarbage(Heap::kOld); |
EXPECT(peer == 0); |
- GCTestHelper::CollectNewSpace(Heap::kIgnoreApiCallbacks); |
+ GCTestHelper::CollectNewSpace(); |
GCTestHelper::WaitForGCTasks(); |
EXPECT(peer == 42); |
} |
@@ -2834,7 +2833,7 @@ TEST_CASE(DartAPI_WeakPersistentHandleNoCallback) { |
TransitionNativeToVM transition(thread); |
Isolate::Current()->heap()->CollectGarbage(Heap::kOld); |
EXPECT(peer == 0); |
- GCTestHelper::CollectNewSpace(Heap::kIgnoreApiCallbacks); |
+ GCTestHelper::CollectNewSpace(); |
GCTestHelper::WaitForGCTasks(); |
EXPECT(peer == 0); |
} |
@@ -2886,8 +2885,8 @@ TEST_CASE(DartAPI_WeakPersistentHandleExternalAllocationSize) { |
EXPECT(heap->ExternalInWords(Heap::kNew) == |
(kWeak1ExternalSize + kWeak2ExternalSize) / kWordSize); |
// Collect weakly referenced string, and promote strongly referenced string. |
- GCTestHelper::CollectNewSpace(Heap::kIgnoreApiCallbacks); |
- GCTestHelper::CollectNewSpace(Heap::kIgnoreApiCallbacks); |
+ GCTestHelper::CollectNewSpace(); |
+ GCTestHelper::CollectNewSpace(); |
GCTestHelper::WaitForGCTasks(); |
EXPECT(heap->ExternalInWords(Heap::kNew) == 0); |
EXPECT(heap->ExternalInWords(Heap::kOld) == kWeak2ExternalSize / kWordSize); |
@@ -3078,7 +3077,7 @@ TEST_CASE(DartAPI_ImplicitReferencesOldSpace) { |
{ |
TransitionNativeToVM transition(thread); |
- GCTestHelper::CollectNewSpace(Heap::kIgnoreApiCallbacks); |
+ GCTestHelper::CollectNewSpace(); |
} |
{ |
@@ -3156,165 +3155,6 @@ TEST_CASE(DartAPI_ImplicitReferencesNewSpace) { |
} |
} |
-static int global_prologue_callback_status; |
- |
-static void PrologueCallbackTimes2() { |
- global_prologue_callback_status *= 2; |
-} |
- |
-static void PrologueCallbackTimes3() { |
- global_prologue_callback_status *= 3; |
-} |
- |
-static int global_epilogue_callback_status; |
- |
-static void EpilogueCallbackNOP() {} |
- |
-static void EpilogueCallbackTimes4() { |
- global_epilogue_callback_status *= 4; |
-} |
- |
-static void EpilogueCallbackTimes5() { |
- global_epilogue_callback_status *= 5; |
-} |
- |
-TEST_CASE(DartAPI_SetGarbageCollectionCallbacks) { |
- // GC callback addition testing. |
- |
- // Add GC callbacks. |
- EXPECT_VALID( |
- Dart_SetGcCallbacks(&PrologueCallbackTimes2, &EpilogueCallbackTimes4)); |
- |
- // Add the same callbacks again. This is an error. |
- EXPECT(Dart_IsError( |
- Dart_SetGcCallbacks(&PrologueCallbackTimes2, &EpilogueCallbackTimes4))); |
- |
- // Add another callback. This is an error. |
- EXPECT(Dart_IsError( |
- Dart_SetGcCallbacks(&PrologueCallbackTimes3, &EpilogueCallbackTimes5))); |
- |
- // GC callback removal testing. |
- |
- // Remove GC callbacks. |
- EXPECT_VALID(Dart_SetGcCallbacks(NULL, NULL)); |
- |
- // Remove GC callbacks whennone exist. This is an error. |
- EXPECT(Dart_IsError(Dart_SetGcCallbacks(NULL, NULL))); |
- |
- EXPECT_VALID( |
- Dart_SetGcCallbacks(&PrologueCallbackTimes2, &EpilogueCallbackTimes4)); |
- EXPECT(Dart_IsError(Dart_SetGcCallbacks(&PrologueCallbackTimes2, NULL))); |
- EXPECT(Dart_IsError(Dart_SetGcCallbacks(NULL, &EpilogueCallbackTimes4))); |
-} |
- |
-TEST_CASE(DartAPI_SingleGarbageCollectionCallback) { |
- // Add a prologue callback. |
- EXPECT_VALID( |
- Dart_SetGcCallbacks(&PrologueCallbackTimes2, &EpilogueCallbackNOP)); |
- |
- { |
- TransitionNativeToVM transition(thread); |
- |
- // Garbage collect new space ignoring callbacks. This should not |
- // invoke the prologue callback. 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 new space invoking callbacks. This should |
- // invoke the prologue callback. No status values should change. |
- global_prologue_callback_status = 3; |
- global_epilogue_callback_status = 7; |
- GCTestHelper::CollectNewSpace(Heap::kInvokeApiCallbacks); |
- EXPECT_EQ(6, global_prologue_callback_status); |
- EXPECT_EQ(7, global_epilogue_callback_status); |
- |
- // Garbage collect old space ignoring callbacks. This should invoke |
- // the prologue callback. The prologue status value should change. |
- global_prologue_callback_status = 3; |
- global_epilogue_callback_status = 7; |
- Isolate::Current()->heap()->CollectGarbage( |
- Heap::kOld, Heap::kIgnoreApiCallbacks, Heap::kGCTestCase); |
- EXPECT_EQ(3, global_prologue_callback_status); |
- EXPECT_EQ(7, global_epilogue_callback_status); |
- |
- // Garbage collect old space. This should invoke the 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); |
- |
- // Garbage collect old space again. Callbacks are persistent so the |
- // prologue status value should change again. |
- Isolate::Current()->heap()->CollectGarbage(Heap::kOld); |
- EXPECT_EQ(12, global_prologue_callback_status); |
- EXPECT_EQ(7, global_epilogue_callback_status); |
- } |
- |
- // Add an epilogue callback. |
- EXPECT_VALID(Dart_SetGcCallbacks(NULL, NULL)); |
- EXPECT_VALID( |
- Dart_SetGcCallbacks(&PrologueCallbackTimes2, &EpilogueCallbackTimes4)); |
- |
- { |
- TransitionNativeToVM transition(thread); |
- // Garbage collect new space. This should not invoke the prologue |
- // or the epilogue callback. 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 new space. This should invoke the prologue and |
- // the epilogue callback. The prologue and epilogue status values |
- // should change. |
- GCTestHelper::CollectNewSpace(Heap::kInvokeApiCallbacks); |
- EXPECT_EQ(6, global_prologue_callback_status); |
- EXPECT_EQ(28, global_epilogue_callback_status); |
- |
- // Garbage collect old space. This should invoke the prologue and |
- // the 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(6, global_prologue_callback_status); |
- EXPECT_EQ(28, global_epilogue_callback_status); |
- |
- // Garbage collect old space again without invoking callbacks. |
- // Nothing should change. |
- Isolate::Current()->heap()->CollectGarbage( |
- Heap::kOld, Heap::kIgnoreApiCallbacks, Heap::kGCTestCase); |
- EXPECT_EQ(6, global_prologue_callback_status); |
- EXPECT_EQ(28, global_epilogue_callback_status); |
- |
- // Garbage collect old space again. Callbacks are persistent so the |
- // prologue and epilogue status values should change again. |
- Isolate::Current()->heap()->CollectGarbage(Heap::kOld); |
- EXPECT_EQ(12, global_prologue_callback_status); |
- EXPECT_EQ(112, global_epilogue_callback_status); |
- } |
- |
- // Remove the prologue and epilogue callbacks |
- EXPECT_VALID(Dart_SetGcCallbacks(NULL, NULL)); |
- |
- { |
- TransitionNativeToVM transition(thread); |
- // 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. |