| Index: test/cctest/test-heap.cc
|
| diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc
|
| index 648d7ebe1734611ce3651f7a6d3d7cea88f8f836..9308eb752ed9874adafb0ab5200c263f375ab63c 100644
|
| --- a/test/cctest/test-heap.cc
|
| +++ b/test/cctest/test-heap.cc
|
| @@ -220,28 +220,31 @@ TEST(Tagging) {
|
|
|
| TEST(GarbageCollection) {
|
| InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| + Factory* factory = isolate->factory();
|
|
|
| v8::HandleScope sc;
|
| // Check GC.
|
| - HEAP->CollectGarbage(NEW_SPACE);
|
| + heap->CollectGarbage(NEW_SPACE);
|
|
|
| - Handle<String> name = FACTORY->LookupUtf8Symbol("theFunction");
|
| - Handle<String> prop_name = FACTORY->LookupUtf8Symbol("theSlot");
|
| - Handle<String> prop_namex = FACTORY->LookupUtf8Symbol("theSlotx");
|
| - Handle<String> obj_name = FACTORY->LookupUtf8Symbol("theObject");
|
| + Handle<String> name = factory->LookupUtf8Symbol("theFunction");
|
| + Handle<String> prop_name = factory->LookupUtf8Symbol("theSlot");
|
| + Handle<String> prop_namex = factory->LookupUtf8Symbol("theSlotx");
|
| + Handle<String> obj_name = factory->LookupUtf8Symbol("theObject");
|
|
|
| {
|
| - v8::HandleScope inner_scope;
|
| + HandleScope inner_scope(isolate);
|
| // Allocate a function and keep it in global object's property.
|
| Handle<JSFunction> function =
|
| - FACTORY->NewFunction(name, FACTORY->undefined_value());
|
| + factory->NewFunction(name, factory->undefined_value());
|
| Handle<Map> initial_map =
|
| - FACTORY->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize);
|
| + factory->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize);
|
| function->set_initial_map(*initial_map);
|
| Isolate::Current()->context()->global_object()->SetProperty(
|
| *name, *function, NONE, kNonStrictMode)->ToObjectChecked();
|
| // Allocate an object. Unrooted after leaving the scope.
|
| - Handle<JSObject> obj = FACTORY->NewJSObject(function);
|
| + Handle<JSObject> obj = factory->NewJSObject(function);
|
| obj->SetProperty(
|
| *prop_name, Smi::FromInt(23), NONE, kNonStrictMode)->ToObjectChecked();
|
| obj->SetProperty(
|
| @@ -251,7 +254,7 @@ TEST(GarbageCollection) {
|
| CHECK_EQ(Smi::FromInt(24), obj->GetProperty(*prop_namex));
|
| }
|
|
|
| - HEAP->CollectGarbage(NEW_SPACE);
|
| + heap->CollectGarbage(NEW_SPACE);
|
|
|
| // Function should be alive.
|
| CHECK(Isolate::Current()->context()->global_object()->
|
| @@ -263,9 +266,9 @@ TEST(GarbageCollection) {
|
| Handle<JSFunction> function(JSFunction::cast(func_value));
|
|
|
| {
|
| - HandleScope inner_scope;
|
| + HandleScope inner_scope(isolate);
|
| // Allocate another object, make it reachable from global.
|
| - Handle<JSObject> obj = FACTORY->NewJSObject(function);
|
| + Handle<JSObject> obj = factory->NewJSObject(function);
|
| Isolate::Current()->context()->global_object()->SetProperty(
|
| *obj_name, *obj, NONE, kNonStrictMode)->ToObjectChecked();
|
| obj->SetProperty(
|
| @@ -273,7 +276,7 @@ TEST(GarbageCollection) {
|
| }
|
|
|
| // After gc, it should survive.
|
| - HEAP->CollectGarbage(NEW_SPACE);
|
| + heap->CollectGarbage(NEW_SPACE);
|
|
|
| CHECK(Isolate::Current()->context()->global_object()->
|
| HasLocalProperty(*obj_name));
|
| @@ -319,7 +322,10 @@ TEST(LocalHandles) {
|
|
|
| TEST(GlobalHandles) {
|
| InitializeVM();
|
| - GlobalHandles* global_handles = Isolate::Current()->global_handles();
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| + Factory* factory = isolate->factory();
|
| + GlobalHandles* global_handles = isolate->global_handles();
|
|
|
| Handle<Object> h1;
|
| Handle<Object> h2;
|
| @@ -327,10 +333,10 @@ TEST(GlobalHandles) {
|
| Handle<Object> h4;
|
|
|
| {
|
| - HandleScope scope;
|
| + HandleScope scope(isolate);
|
|
|
| - Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk"));
|
| - Handle<Object> u = FACTORY->NewNumber(1.12344);
|
| + Handle<Object> i = factory->NewStringFromAscii(CStrVector("fisk"));
|
| + Handle<Object> u = factory->NewNumber(1.12344);
|
|
|
| h1 = global_handles->Create(*i);
|
| h2 = global_handles->Create(*u);
|
| @@ -339,7 +345,7 @@ TEST(GlobalHandles) {
|
| }
|
|
|
| // after gc, it should survive
|
| - HEAP->CollectGarbage(NEW_SPACE);
|
| + heap->CollectGarbage(NEW_SPACE);
|
|
|
| CHECK((*h1)->IsString());
|
| CHECK((*h2)->IsHeapNumber());
|
| @@ -368,7 +374,10 @@ static void TestWeakGlobalHandleCallback(v8::Isolate* isolate,
|
|
|
| TEST(WeakGlobalHandlesScavenge) {
|
| InitializeVM();
|
| - GlobalHandles* global_handles = Isolate::Current()->global_handles();
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| + Factory* factory = isolate->factory();
|
| + GlobalHandles* global_handles = isolate->global_handles();
|
|
|
| WeakPointerCleared = false;
|
|
|
| @@ -376,10 +385,10 @@ TEST(WeakGlobalHandlesScavenge) {
|
| Handle<Object> h2;
|
|
|
| {
|
| - HandleScope scope;
|
| + HandleScope scope(isolate);
|
|
|
| - Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk"));
|
| - Handle<Object> u = FACTORY->NewNumber(1.12344);
|
| + Handle<Object> i = factory->NewStringFromAscii(CStrVector("fisk"));
|
| + Handle<Object> u = factory->NewNumber(1.12344);
|
|
|
| h1 = global_handles->Create(*i);
|
| h2 = global_handles->Create(*u);
|
| @@ -391,7 +400,7 @@ TEST(WeakGlobalHandlesScavenge) {
|
| &TestWeakGlobalHandleCallback);
|
|
|
| // Scavenge treats weak pointers as normal roots.
|
| - HEAP->PerformScavenge();
|
| + heap->PerformScavenge();
|
|
|
| CHECK((*h1)->IsString());
|
| CHECK((*h2)->IsHeapNumber());
|
| @@ -407,7 +416,10 @@ TEST(WeakGlobalHandlesScavenge) {
|
|
|
| TEST(WeakGlobalHandlesMark) {
|
| InitializeVM();
|
| - GlobalHandles* global_handles = Isolate::Current()->global_handles();
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| + Factory* factory = isolate->factory();
|
| + GlobalHandles* global_handles = isolate->global_handles();
|
|
|
| WeakPointerCleared = false;
|
|
|
| @@ -415,19 +427,19 @@ TEST(WeakGlobalHandlesMark) {
|
| Handle<Object> h2;
|
|
|
| {
|
| - HandleScope scope;
|
| + HandleScope scope(isolate);
|
|
|
| - Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk"));
|
| - Handle<Object> u = FACTORY->NewNumber(1.12344);
|
| + Handle<Object> i = factory->NewStringFromAscii(CStrVector("fisk"));
|
| + Handle<Object> u = factory->NewNumber(1.12344);
|
|
|
| h1 = global_handles->Create(*i);
|
| h2 = global_handles->Create(*u);
|
| }
|
|
|
| // Make sure the objects are promoted.
|
| - HEAP->CollectGarbage(OLD_POINTER_SPACE);
|
| - HEAP->CollectGarbage(NEW_SPACE);
|
| - CHECK(!HEAP->InNewSpace(*h1) && !HEAP->InNewSpace(*h2));
|
| + heap->CollectGarbage(OLD_POINTER_SPACE);
|
| + heap->CollectGarbage(NEW_SPACE);
|
| + CHECK(!heap->InNewSpace(*h1) && !heap->InNewSpace(*h2));
|
|
|
| global_handles->MakeWeak(h2.location(),
|
| reinterpret_cast<void*>(1234),
|
| @@ -437,7 +449,7 @@ TEST(WeakGlobalHandlesMark) {
|
| CHECK(!GlobalHandles::IsNearDeath(h2.location()));
|
|
|
| // Incremental marking potentially marked handles before they turned weak.
|
| - HEAP->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| + heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
|
|
| CHECK((*h1)->IsString());
|
|
|
| @@ -450,16 +462,19 @@ TEST(WeakGlobalHandlesMark) {
|
|
|
| TEST(DeleteWeakGlobalHandle) {
|
| InitializeVM();
|
| - GlobalHandles* global_handles = Isolate::Current()->global_handles();
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| + Factory* factory = isolate->factory();
|
| + GlobalHandles* global_handles = isolate->global_handles();
|
|
|
| WeakPointerCleared = false;
|
|
|
| Handle<Object> h;
|
|
|
| {
|
| - HandleScope scope;
|
| + HandleScope scope(isolate);
|
|
|
| - Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk"));
|
| + Handle<Object> i = factory->NewStringFromAscii(CStrVector("fisk"));
|
| h = global_handles->Create(*i);
|
| }
|
|
|
| @@ -469,12 +484,12 @@ TEST(DeleteWeakGlobalHandle) {
|
| &TestWeakGlobalHandleCallback);
|
|
|
| // Scanvenge does not recognize weak reference.
|
| - HEAP->PerformScavenge();
|
| + heap->PerformScavenge();
|
|
|
| CHECK(!WeakPointerCleared);
|
|
|
| // Mark-compact treats weak reference properly.
|
| - HEAP->CollectGarbage(OLD_POINTER_SPACE);
|
| + heap->CollectGarbage(OLD_POINTER_SPACE);
|
|
|
| CHECK(WeakPointerCleared);
|
| }
|
| @@ -1153,6 +1168,8 @@ TEST(TestCodeFlushingIncrementalAbort) {
|
| if (!FLAG_flush_code || !FLAG_flush_code_incrementally) return;
|
| i::FLAG_allow_natives_syntax = true;
|
| InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| v8::HandleScope scope;
|
| const char* source = "function foo() {"
|
| " var x = 42;"
|
| @@ -1175,8 +1192,8 @@ TEST(TestCodeFlushingIncrementalAbort) {
|
| CHECK(function->shared()->is_compiled());
|
|
|
| // The code will survive at least two GCs.
|
| - HEAP->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| - HEAP->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| + heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| + heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| CHECK(function->shared()->is_compiled());
|
|
|
| // Bump the code age so that flushing is triggered.
|
| @@ -1194,8 +1211,8 @@ TEST(TestCodeFlushingIncrementalAbort) {
|
| // disabled.
|
| int position = 0;
|
| Handle<Object> breakpoint_object(Smi::FromInt(0));
|
| - ISOLATE->debug()->SetBreakPoint(function, breakpoint_object, &position);
|
| - ISOLATE->debug()->ClearAllBreakPoints();
|
| + isolate->debug()->SetBreakPoint(function, breakpoint_object, &position);
|
| + isolate->debug()->ClearAllBreakPoints();
|
|
|
| // Force optimization now that code flushing is disabled.
|
| { v8::HandleScope scope;
|
| @@ -1203,7 +1220,7 @@ TEST(TestCodeFlushingIncrementalAbort) {
|
| }
|
|
|
| // Simulate one final GC to make sure the candidate queue is sane.
|
| - HEAP->CollectAllGarbage(Heap::kNoGCFlags);
|
| + heap->CollectAllGarbage(Heap::kNoGCFlags);
|
| CHECK(function->shared()->is_compiled() || !function->IsOptimized());
|
| CHECK(function->is_compiled() || !function->IsOptimized());
|
| }
|
| @@ -1244,6 +1261,8 @@ TEST(TestInternalWeakLists) {
|
|
|
| static const int kNumTestContexts = 10;
|
|
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| v8::HandleScope scope;
|
| v8::Persistent<v8::Context> ctx[kNumTestContexts];
|
|
|
| @@ -1290,8 +1309,8 @@ TEST(TestInternalWeakLists) {
|
| }
|
|
|
| // Mark compact handles the weak references.
|
| - ISOLATE->compilation_cache()->Clear();
|
| - HEAP->CollectAllGarbage(Heap::kNoGCFlags);
|
| + isolate->compilation_cache()->Clear();
|
| + heap->CollectAllGarbage(Heap::kNoGCFlags);
|
| CHECK_EQ(opt ? 4 : 0, CountOptimizedUserFunctions(ctx[i]));
|
|
|
| // Get rid of f3 and f5 in the same way.
|
| @@ -2467,6 +2486,7 @@ TEST(ReleaseStackTraceData) {
|
|
|
| TEST(Regression144230) {
|
| InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| v8::HandleScope scope;
|
|
|
| // First make sure that the uninitialized CallIC stub is on a single page
|
| @@ -2475,7 +2495,7 @@ TEST(Regression144230) {
|
| v8::HandleScope inner_scope;
|
| AlwaysAllocateScope always_allocate;
|
| SimulateFullSpace(HEAP->code_space());
|
| - ISOLATE->stub_cache()->ComputeCallInitialize(9, RelocInfo::CODE_TARGET);
|
| + isolate->stub_cache()->ComputeCallInitialize(9, RelocInfo::CODE_TARGET);
|
| }
|
|
|
| // Second compile a CallIC and execute it once so that it gets patched to
|
| @@ -2505,11 +2525,11 @@ TEST(Regression144230) {
|
| // visited first without clearing the IC. The shared function info is then
|
| // visited later, causing the CallIC to be cleared.
|
| Handle<String> name = FACTORY->LookupUtf8Symbol("call");
|
| - Handle<GlobalObject> global(ISOLATE->context()->global_object());
|
| + Handle<GlobalObject> global(isolate->context()->global_object());
|
| MaybeObject* maybe_call = global->GetProperty(*name);
|
| JSFunction* call = JSFunction::cast(maybe_call->ToObjectChecked());
|
| USE(global->SetProperty(*name, Smi::FromInt(0), NONE, kNonStrictMode));
|
| - ISOLATE->compilation_cache()->Clear();
|
| + isolate->compilation_cache()->Clear();
|
| call->shared()->set_ic_age(HEAP->global_ic_age() + 1);
|
| Handle<Object> call_code(call->code());
|
| Handle<Object> call_function(call);
|
| @@ -2528,10 +2548,12 @@ TEST(Regress159140) {
|
| i::FLAG_allow_natives_syntax = true;
|
| i::FLAG_flush_code_incrementally = true;
|
| InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| v8::HandleScope scope;
|
|
|
| // Perform one initial GC to enable code flushing.
|
| - HEAP->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| + heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
|
|
| // Prepare several closures that are all eligible for code flushing
|
| // because all reachable ones are not optimized. Make sure that the
|
| @@ -2539,7 +2561,7 @@ TEST(Regress159140) {
|
| // that it is marked black during incremental marking.
|
| Handle<Code> code;
|
| {
|
| - HandleScope inner_scope;
|
| + HandleScope inner_scope(isolate);
|
| CompileRun("function h(x) {}"
|
| "function mkClosure() {"
|
| " return function(x) { return x + 1; };"
|
| @@ -2577,7 +2599,7 @@ TEST(Regress159140) {
|
| // finish the GC to complete code flushing.
|
| SimulateIncrementalMarking();
|
| CompileRun("%OptimizeFunctionOnNextCall(g); g(3);");
|
| - HEAP->CollectAllGarbage(Heap::kNoGCFlags);
|
| + heap->CollectAllGarbage(Heap::kNoGCFlags);
|
|
|
| // Unoptimized code is missing and the deoptimizer will go ballistic.
|
| CompileRun("g('bozo');");
|
| @@ -2588,16 +2610,18 @@ TEST(Regress165495) {
|
| i::FLAG_allow_natives_syntax = true;
|
| i::FLAG_flush_code_incrementally = true;
|
| InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| v8::HandleScope scope;
|
|
|
| // Perform one initial GC to enable code flushing.
|
| - HEAP->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| + heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
|
|
| // Prepare an optimized closure that the optimized code map will get
|
| // populated. Then age the unoptimized code to trigger code flushing
|
| // but make sure the optimized code is unreachable.
|
| {
|
| - HandleScope inner_scope;
|
| + HandleScope inner_scope(isolate);
|
| CompileRun("function mkClosure() {"
|
| " return function(x) { return x + 1; };"
|
| "}"
|
| @@ -2621,7 +2645,7 @@ TEST(Regress165495) {
|
| // Simulate incremental marking so that unoptimized code is flushed
|
| // even though it still is cached in the optimized code map.
|
| SimulateIncrementalMarking();
|
| - HEAP->CollectAllGarbage(Heap::kNoGCFlags);
|
| + heap->CollectAllGarbage(Heap::kNoGCFlags);
|
|
|
| // Make a new closure that will get code installed from the code map.
|
| // Unoptimized code is missing and the deoptimizer will go ballistic.
|
| @@ -2634,16 +2658,18 @@ TEST(Regress169209) {
|
| i::FLAG_allow_natives_syntax = true;
|
| i::FLAG_flush_code_incrementally = true;
|
| InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| v8::HandleScope scope;
|
|
|
| // Perform one initial GC to enable code flushing.
|
| - HEAP->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| + heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
|
|
| // Prepare a shared function info eligible for code flushing for which
|
| // the unoptimized code will be replaced during optimization.
|
| Handle<SharedFunctionInfo> shared1;
|
| {
|
| - HandleScope inner_scope;
|
| + HandleScope inner_scope(isolate);
|
| CompileRun("function f() { return 'foobar'; }"
|
| "function g(x) { if (x) f(); }"
|
| "f();"
|
| @@ -2660,14 +2686,14 @@ TEST(Regress169209) {
|
| f->shared()->code()->MakeOlder(static_cast<MarkingParity>(i % 2));
|
| }
|
|
|
| - shared1 = inner_scope.CloseAndEscape(handle(f->shared(), ISOLATE));
|
| + shared1 = inner_scope.CloseAndEscape(handle(f->shared(), isolate));
|
| }
|
|
|
| // Prepare a shared function info eligible for code flushing that will
|
| // represent the dangling tail of the candidate list.
|
| Handle<SharedFunctionInfo> shared2;
|
| {
|
| - HandleScope inner_scope;
|
| + HandleScope inner_scope(isolate);
|
| CompileRun("function flushMe() { return 0; }"
|
| "flushMe(1);");
|
|
|
| @@ -2681,7 +2707,7 @@ TEST(Regress169209) {
|
| f->shared()->code()->MakeOlder(static_cast<MarkingParity>(i % 2));
|
| }
|
|
|
| - shared2 = inner_scope.CloseAndEscape(handle(f->shared(), ISOLATE));
|
| + shared2 = inner_scope.CloseAndEscape(handle(f->shared(), isolate));
|
| }
|
|
|
| // Simulate incremental marking and collect code flushing candidates.
|
| @@ -2696,7 +2722,7 @@ TEST(Regress169209) {
|
| "g(false);");
|
|
|
| // Finish garbage collection cycle.
|
| - HEAP->CollectAllGarbage(Heap::kNoGCFlags);
|
| + heap->CollectAllGarbage(Heap::kNoGCFlags);
|
| CHECK(shared1->code()->gc_metadata() == NULL);
|
| }
|
|
|
| @@ -2791,18 +2817,20 @@ TEST(Regress168801) {
|
| i::FLAG_allow_natives_syntax = true;
|
| i::FLAG_flush_code_incrementally = true;
|
| InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| v8::HandleScope scope;
|
|
|
| // Perform one initial GC to enable code flushing.
|
| - HEAP->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| + heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
|
|
| // Ensure the code ends up on an evacuation candidate.
|
| - SimulateFullSpace(HEAP->code_space());
|
| + SimulateFullSpace(heap->code_space());
|
|
|
| // Prepare an unoptimized function that is eligible for code flushing.
|
| Handle<JSFunction> function;
|
| {
|
| - HandleScope inner_scope;
|
| + HandleScope inner_scope(isolate);
|
| CompileRun("function mkClosure() {"
|
| " return function(x) { return x + 1; };"
|
| "}"
|
| @@ -2819,7 +2847,7 @@ TEST(Regress168801) {
|
| f->shared()->code()->MakeOlder(static_cast<MarkingParity>(i % 2));
|
| }
|
|
|
| - function = inner_scope.CloseAndEscape(handle(*f, ISOLATE));
|
| + function = inner_scope.CloseAndEscape(handle(*f, isolate));
|
| }
|
|
|
| // Simulate incremental marking so that unoptimized function is enqueued as a
|
| @@ -2829,13 +2857,13 @@ TEST(Regress168801) {
|
|
|
| // Now optimize the function so that it is taken off the candidate list.
|
| {
|
| - HandleScope inner_scope;
|
| + HandleScope inner_scope(isolate);
|
| CompileRun("%OptimizeFunctionOnNextCall(f); f(3);");
|
| }
|
|
|
| // This cycle will bust the heap and subsequent cycles will go ballistic.
|
| - HEAP->CollectAllGarbage(Heap::kNoGCFlags);
|
| - HEAP->CollectAllGarbage(Heap::kNoGCFlags);
|
| + heap->CollectAllGarbage(Heap::kNoGCFlags);
|
| + heap->CollectAllGarbage(Heap::kNoGCFlags);
|
| }
|
|
|
|
|
| @@ -2845,18 +2873,20 @@ TEST(Regress173458) {
|
| i::FLAG_allow_natives_syntax = true;
|
| i::FLAG_flush_code_incrementally = true;
|
| InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Heap* heap = isolate->heap();
|
| v8::HandleScope scope;
|
|
|
| // Perform one initial GC to enable code flushing.
|
| - HEAP->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| + heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
|
|
| // Ensure the code ends up on an evacuation candidate.
|
| - SimulateFullSpace(HEAP->code_space());
|
| + SimulateFullSpace(heap->code_space());
|
|
|
| // Prepare an unoptimized function that is eligible for code flushing.
|
| Handle<JSFunction> function;
|
| {
|
| - HandleScope inner_scope;
|
| + HandleScope inner_scope(isolate);
|
| CompileRun("function mkClosure() {"
|
| " return function(x) { return x + 1; };"
|
| "}"
|
| @@ -2873,7 +2903,7 @@ TEST(Regress173458) {
|
| f->shared()->code()->MakeOlder(static_cast<MarkingParity>(i % 2));
|
| }
|
|
|
| - function = inner_scope.CloseAndEscape(handle(*f, ISOLATE));
|
| + function = inner_scope.CloseAndEscape(handle(*f, isolate));
|
| }
|
|
|
| // Simulate incremental marking so that unoptimized function is enqueued as a
|
| @@ -2882,9 +2912,9 @@ TEST(Regress173458) {
|
| SimulateIncrementalMarking();
|
|
|
| // Now enable the debugger which in turn will disable code flushing.
|
| - CHECK(ISOLATE->debug()->Load());
|
| + CHECK(isolate->debug()->Load());
|
|
|
| // This cycle will bust the heap and subsequent cycles will go ballistic.
|
| - HEAP->CollectAllGarbage(Heap::kNoGCFlags);
|
| - HEAP->CollectAllGarbage(Heap::kNoGCFlags);
|
| + heap->CollectAllGarbage(Heap::kNoGCFlags);
|
| + heap->CollectAllGarbage(Heap::kNoGCFlags);
|
| }
|
|
|