diff options
Diffstat (limited to 'deps/v8/src/x64/macro-assembler-x64.cc')
-rw-r--r-- | deps/v8/src/x64/macro-assembler-x64.cc | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/deps/v8/src/x64/macro-assembler-x64.cc b/deps/v8/src/x64/macro-assembler-x64.cc index 58659241a6..76491a331c 100644 --- a/deps/v8/src/x64/macro-assembler-x64.cc +++ b/deps/v8/src/x64/macro-assembler-x64.cc @@ -725,8 +725,9 @@ void MacroAssembler::CallApiFunctionAndReturn(Address function_address, if (FLAG_log_timer_events) { FrameScope frame(this, StackFrame::MANUAL); PushSafepointRegisters(); - PrepareCallCFunction(0); - CallCFunction(ExternalReference::log_enter_external_function(isolate()), 0); + PrepareCallCFunction(1); + LoadAddress(arg_reg_1, ExternalReference::isolate_address(isolate())); + CallCFunction(ExternalReference::log_enter_external_function(isolate()), 1); PopSafepointRegisters(); } @@ -738,8 +739,9 @@ void MacroAssembler::CallApiFunctionAndReturn(Address function_address, if (FLAG_log_timer_events) { FrameScope frame(this, StackFrame::MANUAL); PushSafepointRegisters(); - PrepareCallCFunction(0); - CallCFunction(ExternalReference::log_leave_external_function(isolate()), 0); + PrepareCallCFunction(1); + LoadAddress(arg_reg_1, ExternalReference::isolate_address(isolate())); + CallCFunction(ExternalReference::log_leave_external_function(isolate()), 1); PopSafepointRegisters(); } @@ -817,11 +819,7 @@ void MacroAssembler::CallApiFunctionAndReturn(Address function_address, bind(&delete_allocated_handles); movq(Operand(base_reg, kLimitOffset), prev_limit_reg); movq(prev_limit_reg, rax); -#ifdef _WIN64 - LoadAddress(rcx, ExternalReference::isolate_address()); -#else - LoadAddress(rdi, ExternalReference::isolate_address()); -#endif + LoadAddress(arg_reg_1, ExternalReference::isolate_address(isolate())); LoadAddress(rax, ExternalReference::delete_handle_scope_extensions(isolate())); call(rax); @@ -2286,7 +2284,7 @@ void MacroAssembler::Move(Register dst, Register src) { void MacroAssembler::Move(Register dst, Handle<Object> source) { - ASSERT(!source->IsFailure()); + ALLOW_HANDLE_DEREF(isolate(), "smi check"); if (source->IsSmi()) { Move(dst, Smi::cast(*source)); } else { @@ -2296,7 +2294,7 @@ void MacroAssembler::Move(Register dst, Handle<Object> source) { void MacroAssembler::Move(const Operand& dst, Handle<Object> source) { - ASSERT(!source->IsFailure()); + ALLOW_HANDLE_DEREF(isolate(), "smi check"); if (source->IsSmi()) { Move(dst, Smi::cast(*source)); } else { @@ -2307,6 +2305,7 @@ void MacroAssembler::Move(const Operand& dst, Handle<Object> source) { void MacroAssembler::Cmp(Register dst, Handle<Object> source) { + ALLOW_HANDLE_DEREF(isolate(), "smi check"); if (source->IsSmi()) { Cmp(dst, Smi::cast(*source)); } else { @@ -2317,6 +2316,7 @@ void MacroAssembler::Cmp(Register dst, Handle<Object> source) { void MacroAssembler::Cmp(const Operand& dst, Handle<Object> source) { + ALLOW_HANDLE_DEREF(isolate(), "smi check"); if (source->IsSmi()) { Cmp(dst, Smi::cast(*source)); } else { @@ -2328,6 +2328,7 @@ void MacroAssembler::Cmp(const Operand& dst, Handle<Object> source) { void MacroAssembler::Push(Handle<Object> source) { + ALLOW_HANDLE_DEREF(isolate(), "smi check"); if (source->IsSmi()) { Push(Smi::cast(*source)); } else { @@ -2340,6 +2341,7 @@ void MacroAssembler::Push(Handle<Object> source) { void MacroAssembler::LoadHeapObject(Register result, Handle<HeapObject> object) { + ALLOW_HANDLE_DEREF(isolate(), "using raw address"); if (isolate()->heap()->InNewSpace(*object)) { Handle<JSGlobalPropertyCell> cell = isolate()->factory()->NewJSGlobalPropertyCell(object); @@ -2352,6 +2354,7 @@ void MacroAssembler::LoadHeapObject(Register result, void MacroAssembler::PushHeapObject(Handle<HeapObject> object) { + ALLOW_HANDLE_DEREF(isolate(), "using raw address"); if (isolate()->heap()->InNewSpace(*object)) { Handle<JSGlobalPropertyCell> cell = isolate()->factory()->NewJSGlobalPropertyCell(object); @@ -2367,6 +2370,7 @@ void MacroAssembler::PushHeapObject(Handle<HeapObject> object) { void MacroAssembler::LoadGlobalCell(Register dst, Handle<JSGlobalPropertyCell> cell) { if (dst.is(rax)) { + ALLOW_HANDLE_DEREF(isolate(), "embedding raw address"); load_rax(cell.location(), RelocInfo::GLOBAL_PROPERTY_CELL); } else { movq(dst, cell, RelocInfo::GLOBAL_PROPERTY_CELL); @@ -3280,6 +3284,7 @@ void MacroAssembler::InvokeFunction(Register function, void MacroAssembler::InvokeFunction(Handle<JSFunction> function, + const ParameterCount& expected, const ParameterCount& actual, InvokeFlag flag, const CallWrapper& call_wrapper, @@ -3295,7 +3300,6 @@ void MacroAssembler::InvokeFunction(Handle<JSFunction> function, // allow recompilation to take effect without changing any of the // call sites. movq(rdx, FieldOperand(rdi, JSFunction::kCodeEntryOffset)); - ParameterCount expected(function->shared()->formal_parameter_count()); InvokeCode(rdx, expected, actual, flag, call_wrapper, call_kind); } |