Commit 3fc08557 authored by Milad Farazmand's avatar Milad Farazmand Committed by Commit Bot

PPC/s390: [codegen][arm] Better load of receiver in CheckDebugHook

Port 1e4bb087

Original Commit Message:

    x64 code path is different and we can't do this optimization.

R=solanes@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I173d7339706a9c09d3e6519d1cee36fa15692aca
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1829171
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Reviewed-by: 's avatarJunliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#64045}
parent b10c2f25
...@@ -1287,12 +1287,11 @@ void MacroAssembler::CheckDebugHook(Register fun, Register new_target, ...@@ -1287,12 +1287,11 @@ void MacroAssembler::CheckDebugHook(Register fun, Register new_target,
{ {
// Load receiver to pass it later to DebugOnFunctionCall hook. // Load receiver to pass it later to DebugOnFunctionCall hook.
if (actual.is_reg()) { if (actual.is_reg()) {
mr(r7, actual.reg()); ShiftLeftImm(r7, actual.reg(), Operand(kPointerSizeLog2));
LoadPX(r7, MemOperand(sp, r7));
} else { } else {
mov(r7, Operand(actual.immediate())); LoadP(r7, MemOperand(sp, actual.immediate() << kPointerSizeLog2), r0);
} }
ShiftLeftImm(r7, r7, Operand(kPointerSizeLog2));
LoadPX(r7, MemOperand(sp, r7));
FrameScope frame(this, FrameScope frame(this,
has_frame() ? StackFrame::NONE : StackFrame::INTERNAL); has_frame() ? StackFrame::NONE : StackFrame::INTERNAL);
if (expected.is_reg()) { if (expected.is_reg()) {
......
...@@ -1342,12 +1342,11 @@ void MacroAssembler::CheckDebugHook(Register fun, Register new_target, ...@@ -1342,12 +1342,11 @@ void MacroAssembler::CheckDebugHook(Register fun, Register new_target,
{ {
// Load receiver to pass it later to DebugOnFunctionCall hook. // Load receiver to pass it later to DebugOnFunctionCall hook.
if (actual.is_reg()) { if (actual.is_reg()) {
LoadRR(r6, actual.reg()); ShiftLeftP(r6, actual.reg(), Operand(kPointerSizeLog2));
LoadP(r6, MemOperand(sp, r6));
} else { } else {
mov(r6, Operand(actual.immediate())); LoadP(r6, MemOperand(sp, actual.immediate() << kPointerSizeLog2), ip);
} }
ShiftLeftP(r6, r6, Operand(kPointerSizeLog2));
LoadP(r6, MemOperand(sp, r6));
FrameScope frame(this, FrameScope frame(this,
has_frame() ? StackFrame::NONE : StackFrame::INTERNAL); has_frame() ? StackFrame::NONE : StackFrame::INTERNAL);
if (expected.is_reg()) { if (expected.is_reg()) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment