Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Unified Diff: runtime/vm/dart_api_impl_test.cc

Issue 197963002: Remove the ability to allow multiple gc prologue and gc epilogue callbacks (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.

Powered by Google App Engine
This is Rietveld 408576698