| Index: src/x64/macro-assembler-x64.cc
|
| diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc
|
| index a18ff0d274c75e14eac2701a06f5d93e1cf5e8af..f728dba39902ebf301e986daa8ce958834182ecb 100644
|
| --- a/src/x64/macro-assembler-x64.cc
|
| +++ b/src/x64/macro-assembler-x64.cc
|
| @@ -4091,7 +4091,12 @@ void MacroAssembler::Allocate(int object_size,
|
| LoadAllocationTopHelper(result, scratch, flags);
|
|
|
| if (isolate()->heap_profiler()->is_tracking_allocations()) {
|
| - RecordObjectAllocation(isolate(), result, object_size);
|
| + AllowStubCallsScope allow_stub_calls(this, true);
|
| + RecordObjectAllocationStub stub;
|
| + push(Immediate(object_size));
|
| + push(result);
|
| + CallStub(&stub);
|
| + Drop(2);
|
| }
|
|
|
| // Align the next allocation. Storing the filler map without checking top is
|
| @@ -4174,7 +4179,12 @@ void MacroAssembler::Allocate(Register object_size,
|
| LoadAllocationTopHelper(result, scratch, flags);
|
|
|
| if (isolate()->heap_profiler()->is_tracking_allocations()) {
|
| - RecordObjectAllocation(isolate(), result, object_size);
|
| + AllowStubCallsScope allow_stub_calls(this, true);
|
| + RecordObjectAllocationStub stub;
|
| + push(object_size);
|
| + push(result);
|
| + CallStub(&stub);
|
| + Drop(2);
|
| }
|
|
|
| // Align the next allocation. Storing the filler map without checking top is
|
| @@ -4937,38 +4947,6 @@ void MacroAssembler::TestJSArrayForAllocationMemento(
|
| }
|
|
|
|
|
| -void MacroAssembler::RecordObjectAllocation(Isolate* isolate,
|
| - Register object,
|
| - Register object_size) {
|
| - FrameScope frame(this, StackFrame::EXIT);
|
| - PushSafepointRegisters();
|
| - PrepareCallCFunction(3);
|
| - // In case object is rdx
|
| - movq(kScratchRegister, object);
|
| - movq(arg_reg_3, object_size);
|
| - movq(arg_reg_2, kScratchRegister);
|
| - movq(arg_reg_1, isolate, RelocInfo::EXTERNAL_REFERENCE);
|
| - CallCFunction(
|
| - ExternalReference::record_object_allocation_function(isolate), 3);
|
| - PopSafepointRegisters();
|
| -}
|
| -
|
| -
|
| -void MacroAssembler::RecordObjectAllocation(Isolate* isolate,
|
| - Register object,
|
| - int object_size) {
|
| - FrameScope frame(this, StackFrame::EXIT);
|
| - PushSafepointRegisters();
|
| - PrepareCallCFunction(3);
|
| - movq(arg_reg_2, object);
|
| - movq(arg_reg_3, Immediate(object_size));
|
| - movq(arg_reg_1, isolate, RelocInfo::EXTERNAL_REFERENCE);
|
| - CallCFunction(
|
| - ExternalReference::record_object_allocation_function(isolate), 3);
|
| - PopSafepointRegisters();
|
| -}
|
| -
|
| -
|
| } } // namespace v8::internal
|
|
|
| #endif // V8_TARGET_ARCH_X64
|
|
|