| Index: test/cctest/test-heap.cc
|
| diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc
|
| index 6229670da848efbbf75c6d50e3605d0e052180a7..fed5b30825b722579f72ddf5e7561d0c6de2789a 100644
|
| --- a/test/cctest/test-heap.cc
|
| +++ b/test/cctest/test-heap.cc
|
| @@ -1559,7 +1559,7 @@ TEST(TestInternalWeakLists) {
|
| v8::Handle<v8::Context> ctx[kNumTestContexts];
|
| if (!isolate->use_crankshaft()) return;
|
|
|
| - CHECK_EQ(0, CountNativeContexts());
|
| + CHECK_EQ(1, CountNativeContexts());
|
|
|
| // Create a number of global contests which gets linked together.
|
| for (int i = 0; i < kNumTestContexts; i++) {
|
| @@ -1570,7 +1570,7 @@ TEST(TestInternalWeakLists) {
|
| isolate->compilation_cache()->Clear();
|
| heap->CollectAllGarbage();
|
|
|
| - CHECK_EQ(i + 1, CountNativeContexts());
|
| + CHECK_EQ(i + 2, CountNativeContexts());
|
|
|
| ctx[i]->Enter();
|
|
|
| @@ -1636,15 +1636,15 @@ TEST(TestInternalWeakLists) {
|
| // Scavenge treats these references as strong.
|
| for (int j = 0; j < 10; j++) {
|
| CcTest::heap()->CollectGarbage(i::NEW_SPACE);
|
| - CHECK_EQ(kNumTestContexts - i, CountNativeContexts());
|
| + CHECK_EQ(kNumTestContexts - i + 1, CountNativeContexts());
|
| }
|
|
|
| // Mark compact handles the weak references.
|
| CcTest::heap()->CollectAllGarbage();
|
| - CHECK_EQ(kNumTestContexts - i - 1, CountNativeContexts());
|
| + CHECK_EQ(kNumTestContexts - i, CountNativeContexts());
|
| }
|
|
|
| - CHECK_EQ(0, CountNativeContexts());
|
| + CHECK_EQ(1, CountNativeContexts());
|
| }
|
|
|
|
|
| @@ -1699,14 +1699,14 @@ TEST(TestInternalWeakListsTraverseWithGC) {
|
| v8::Handle<v8::Context> ctx[kNumTestContexts];
|
| if (!isolate->use_crankshaft()) return;
|
|
|
| - CHECK_EQ(0, CountNativeContexts());
|
| + CHECK_EQ(1, CountNativeContexts());
|
|
|
| // Create an number of contexts and check the length of the weak list both
|
| // with and without GCs while iterating the list.
|
| for (int i = 0; i < kNumTestContexts; i++) {
|
| ctx[i] = v8::Context::New(CcTest::isolate());
|
| - CHECK_EQ(i + 1, CountNativeContexts());
|
| - CHECK_EQ(i + 1, CountNativeContextsWithGC(isolate, i / 2 + 1));
|
| + CHECK_EQ(i + 2, CountNativeContexts());
|
| + CHECK_EQ(i + 2, CountNativeContextsWithGC(isolate, i / 2 + 1));
|
| }
|
|
|
| ctx[0]->Enter();
|
| @@ -2250,6 +2250,10 @@ TEST(LeakNativeContextViaMap) {
|
| v8::HandleScope outer_scope(isolate);
|
| v8::Persistent<v8::Context> ctx1p;
|
| v8::Persistent<v8::Context> ctx2p;
|
| +
|
| + CcTest::heap()->CollectAllAvailableGarbage();
|
| + CHECK_EQ(2, NumberOfGlobalObjects());
|
| +
|
| {
|
| v8::HandleScope scope(isolate);
|
| ctx1p.Reset(isolate, v8::Context::New(isolate));
|
| @@ -2258,7 +2262,7 @@ TEST(LeakNativeContextViaMap) {
|
| }
|
|
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(4, NumberOfGlobalObjects());
|
| + CHECK_EQ(6, NumberOfGlobalObjects());
|
|
|
| {
|
| v8::HandleScope inner_scope(isolate);
|
| @@ -2281,10 +2285,11 @@ TEST(LeakNativeContextViaMap) {
|
| isolate->ContextDisposedNotification();
|
| }
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(2, NumberOfGlobalObjects());
|
| + CHECK_EQ(4, NumberOfGlobalObjects());
|
| ctx2p.Reset();
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(0, NumberOfGlobalObjects());
|
| + // Code stub context is still left over
|
| + CHECK_EQ(2, NumberOfGlobalObjects());
|
| }
|
|
|
|
|
| @@ -2304,7 +2309,7 @@ TEST(LeakNativeContextViaFunction) {
|
| }
|
|
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(4, NumberOfGlobalObjects());
|
| + CHECK_EQ(6, NumberOfGlobalObjects());
|
|
|
| {
|
| v8::HandleScope inner_scope(isolate);
|
| @@ -2327,10 +2332,10 @@ TEST(LeakNativeContextViaFunction) {
|
| isolate->ContextDisposedNotification();
|
| }
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(2, NumberOfGlobalObjects());
|
| + CHECK_EQ(4, NumberOfGlobalObjects());
|
| ctx2p.Reset();
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(0, NumberOfGlobalObjects());
|
| + CHECK_EQ(2, NumberOfGlobalObjects());
|
| }
|
|
|
|
|
| @@ -2348,7 +2353,7 @@ TEST(LeakNativeContextViaMapKeyed) {
|
| }
|
|
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(4, NumberOfGlobalObjects());
|
| + CHECK_EQ(6, NumberOfGlobalObjects());
|
|
|
| {
|
| v8::HandleScope inner_scope(isolate);
|
| @@ -2371,10 +2376,10 @@ TEST(LeakNativeContextViaMapKeyed) {
|
| isolate->ContextDisposedNotification();
|
| }
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(2, NumberOfGlobalObjects());
|
| + CHECK_EQ(4, NumberOfGlobalObjects());
|
| ctx2p.Reset();
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(0, NumberOfGlobalObjects());
|
| + CHECK_EQ(2, NumberOfGlobalObjects());
|
| }
|
|
|
|
|
| @@ -2392,7 +2397,7 @@ TEST(LeakNativeContextViaMapProto) {
|
| }
|
|
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(4, NumberOfGlobalObjects());
|
| + CHECK_EQ(6, NumberOfGlobalObjects());
|
|
|
| {
|
| v8::HandleScope inner_scope(isolate);
|
| @@ -2419,10 +2424,10 @@ TEST(LeakNativeContextViaMapProto) {
|
| isolate->ContextDisposedNotification();
|
| }
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(2, NumberOfGlobalObjects());
|
| + CHECK_EQ(4, NumberOfGlobalObjects());
|
| ctx2p.Reset();
|
| CcTest::heap()->CollectAllAvailableGarbage();
|
| - CHECK_EQ(0, NumberOfGlobalObjects());
|
| + CHECK_EQ(2, NumberOfGlobalObjects());
|
| }
|
|
|
|
|
|
|