OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 6530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6541 a->Set(v8_str("x"), b); | 6541 a->Set(v8_str("x"), b); |
6542 b->Set(v8_str("x"), a); | 6542 b->Set(v8_str("x"), a); |
6543 } | 6543 } |
6544 if (global_gc) { | 6544 if (global_gc) { |
6545 CcTest::heap()->CollectAllGarbage(); | 6545 CcTest::heap()->CollectAllGarbage(); |
6546 } else { | 6546 } else { |
6547 CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 6547 CcTest::heap()->CollectGarbage(i::NEW_SPACE); |
6548 } | 6548 } |
6549 // We are relying on this creating a big flag array and reserving the space | 6549 // We are relying on this creating a big flag array and reserving the space |
6550 // up front. | 6550 // up front. |
6551 v8::Handle<Value> big_array = CompileRun("new Array(5000)"); | 6551 v8::Handle<Value> big_array = CompileRun("new Array(50000)"); |
6552 if (!v8::internal::FLAG_scavenge_reclaim_unmodified_objects) | 6552 if (!v8::internal::FLAG_scavenge_reclaim_unmodified_objects) |
6553 a->Set(v8_str("y"), big_array); | 6553 a->Set(v8_str("y"), big_array); |
6554 big_heap_size = CcTest::heap()->SizeOfObjects(); | 6554 big_heap_size = CcTest::heap()->SizeOfObjects(); |
6555 } | 6555 } |
6556 | 6556 |
6557 object_a.flag = false; | 6557 object_a.flag = false; |
6558 object_b.flag = false; | 6558 object_b.flag = false; |
6559 object_a.handle.SetWeak(&object_a, &SetFlag, | 6559 object_a.handle.SetWeak(&object_a, &SetFlag, |
6560 v8::WeakCallbackType::kParameter); | 6560 v8::WeakCallbackType::kParameter); |
6561 object_b.handle.SetWeak(&object_b, &SetFlag, | 6561 object_b.handle.SetWeak(&object_b, &SetFlag, |
6562 v8::WeakCallbackType::kParameter); | 6562 v8::WeakCallbackType::kParameter); |
6563 CHECK(!object_b.handle.IsIndependent()); | 6563 CHECK(!object_b.handle.IsIndependent()); |
6564 object_a.handle.MarkIndependent(); | 6564 object_a.handle.MarkIndependent(); |
6565 object_b.handle.MarkIndependent(); | 6565 object_b.handle.MarkIndependent(); |
6566 CHECK(object_b.handle.IsIndependent()); | 6566 CHECK(object_b.handle.IsIndependent()); |
6567 if (global_gc) { | 6567 if (global_gc) { |
6568 CcTest::heap()->CollectAllGarbage(); | 6568 CcTest::heap()->CollectAllGarbage(); |
6569 } else { | 6569 } else { |
6570 CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 6570 CcTest::heap()->CollectGarbage(i::NEW_SPACE); |
6571 } | 6571 } |
6572 // A single GC should be enough to reclaim the memory, since we are using | 6572 // A single GC should be enough to reclaim the memory, since we are using |
6573 // phantom handles. | 6573 // phantom handles. |
6574 CHECK_LT(CcTest::heap()->SizeOfObjects(), big_heap_size - 20000); | 6574 CHECK_LT(CcTest::heap()->SizeOfObjects(), big_heap_size - 200000); |
6575 CHECK(object_a.flag); | 6575 CHECK(object_a.flag); |
6576 CHECK(object_b.flag); | 6576 CHECK(object_b.flag); |
6577 } | 6577 } |
6578 | 6578 |
6579 | 6579 |
6580 TEST(IndependentWeakHandle) { | 6580 TEST(IndependentWeakHandle) { |
6581 IndependentWeakHandle(false, false); | 6581 IndependentWeakHandle(false, false); |
6582 IndependentWeakHandle(false, true); | 6582 IndependentWeakHandle(false, true); |
6583 IndependentWeakHandle(true, false); | 6583 IndependentWeakHandle(true, false); |
6584 IndependentWeakHandle(true, true); | 6584 IndependentWeakHandle(true, true); |
(...skipping 15273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
21858 timeout_thread.Join(); | 21858 timeout_thread.Join(); |
21859 } | 21859 } |
21860 | 21860 |
21861 | 21861 |
21862 TEST(EstimatedContextSize) { | 21862 TEST(EstimatedContextSize) { |
21863 v8::Isolate* isolate = CcTest::isolate(); | 21863 v8::Isolate* isolate = CcTest::isolate(); |
21864 v8::HandleScope scope(isolate); | 21864 v8::HandleScope scope(isolate); |
21865 LocalContext env; | 21865 LocalContext env; |
21866 CHECK(50000 < env->EstimatedSize()); | 21866 CHECK(50000 < env->EstimatedSize()); |
21867 } | 21867 } |
OLD | NEW |