Index: src/arm64/debug-arm64.cc |
diff --git a/src/arm64/debug-arm64.cc b/src/arm64/debug-arm64.cc |
index 2eec4466e1f7df8e440cd328ab56963281140534..7b24526dc1ed57000b8b58f0e848ea3adfc16001 100644 |
--- a/src/arm64/debug-arm64.cc |
+++ b/src/arm64/debug-arm64.cc |
@@ -94,9 +94,8 @@ void BreakLocation::SetDebugBreakAtSlot() { |
static void Generate_DebugBreakCallHelper(MacroAssembler* masm, |
- RegList object_regs, |
- RegList non_object_regs, |
- Register scratch) { |
+ RegList object_regs) { |
+ Register scratch = x10; |
{ |
FrameScope scope(masm, StackFrame::INTERNAL); |
@@ -120,30 +119,10 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm, |
// |
// TODO(jbramley): Why can't this handle callee-saved registers? |
DCHECK((~kCallerSaved.list() & object_regs) == 0); |
- DCHECK((~kCallerSaved.list() & non_object_regs) == 0); |
- DCHECK((object_regs & non_object_regs) == 0); |
DCHECK((scratch.Bit() & object_regs) == 0); |
- DCHECK((scratch.Bit() & non_object_regs) == 0); |
- DCHECK((masm->TmpList()->list() & (object_regs | non_object_regs)) == 0); |
+ DCHECK((masm->TmpList()->list() & object_regs) == 0); |
STATIC_ASSERT(kSmiValueSize == 32); |
- CPURegList non_object_list = |
- CPURegList(CPURegister::kRegister, kXRegSizeInBits, non_object_regs); |
- while (!non_object_list.IsEmpty()) { |
- // Store each non-object register as two SMIs. |
- Register reg = Register(non_object_list.PopLowestIndex()); |
- __ Lsr(scratch, reg, 32); |
- __ SmiTagAndPush(scratch, reg); |
- |
- // Stack: |
- // jssp[12]: reg[63:32] |
- // jssp[8]: 0x00000000 (SMI tag & padding) |
- // jssp[4]: reg[31:0] |
- // jssp[0]: 0x00000000 (SMI tag & padding) |
- STATIC_ASSERT(kSmiTag == 0); |
- STATIC_ASSERT(static_cast<unsigned>(kSmiShift) == kWRegSizeInBits); |
- } |
- |
if (object_regs != 0) { |
__ PushXRegList(object_regs); |
} |
@@ -162,20 +141,6 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm, |
__ PopXRegList(object_regs); |
} |
- non_object_list = |
- CPURegList(CPURegister::kRegister, kXRegSizeInBits, non_object_regs); |
- while (!non_object_list.IsEmpty()) { |
- // Load each non-object register from two SMIs. |
- // Stack: |
- // jssp[12]: reg[63:32] |
- // jssp[8]: 0x00000000 (SMI tag & padding) |
- // jssp[4]: reg[31:0] |
- // jssp[0]: 0x00000000 (SMI tag & padding) |
- Register reg = Register(non_object_list.PopHighestIndex()); |
- __ Pop(scratch, reg); |
- __ Bfxil(reg, scratch, 32, 32); |
- } |
- |
// Don't bother removing padding bytes pushed on the stack |
// as the frame is going to be restored right away. |
@@ -193,54 +158,11 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm, |
} |
-void DebugCodegen::GenerateCallICStubDebugBreak(MacroAssembler* masm) { |
- // Register state for CallICStub |
- // ----------- S t a t e ------------- |
- // -- x1 : function |
- // -- x3 : slot in feedback array |
- // ----------------------------------- |
- Generate_DebugBreakCallHelper(masm, x1.Bit() | x3.Bit(), 0, x10); |
-} |
- |
- |
void DebugCodegen::GenerateReturnDebugBreak(MacroAssembler* masm) { |
// In places other than IC call sites it is expected that r0 is TOS which |
// is an object - this is not generally the case so this should be used with |
// care. |
- Generate_DebugBreakCallHelper(masm, x0.Bit(), 0, x10); |
-} |
- |
- |
-void DebugCodegen::GenerateCallFunctionStubDebugBreak(MacroAssembler* masm) { |
- // Register state for CallFunctionStub (from code-stubs-arm64.cc). |
- // ----------- S t a t e ------------- |
- // -- x1 : function |
- // ----------------------------------- |
- Generate_DebugBreakCallHelper(masm, x1.Bit(), 0, x10); |
-} |
- |
- |
-void DebugCodegen::GenerateCallConstructStubDebugBreak(MacroAssembler* masm) { |
- // Calling convention for CallConstructStub (from code-stubs-arm64.cc). |
- // ----------- S t a t e ------------- |
- // -- x0 : number of arguments (not smi) |
- // -- x1 : constructor function |
- // ----------------------------------- |
- Generate_DebugBreakCallHelper(masm, x1.Bit(), x0.Bit(), x10); |
-} |
- |
- |
-void DebugCodegen::GenerateCallConstructStubRecordDebugBreak( |
- MacroAssembler* masm) { |
- // Calling convention for CallConstructStub (from code-stubs-arm64.cc). |
- // ----------- S t a t e ------------- |
- // -- x0 : number of arguments (not smi) |
- // -- x1 : constructor function |
- // -- x2 : feedback array |
- // -- x3 : feedback slot (smi) |
- // ----------------------------------- |
- Generate_DebugBreakCallHelper( |
- masm, x1.Bit() | x2.Bit() | x3.Bit(), x0.Bit(), x10); |
+ Generate_DebugBreakCallHelper(masm, x0.Bit()); |
} |
@@ -249,7 +171,6 @@ void DebugCodegen::GenerateSlot(MacroAssembler* masm) { |
// the constant pool in the debug break slot code. |
InstructionAccurateScope scope(masm, Assembler::kDebugBreakSlotInstructions); |
- __ RecordDebugBreakSlot(); |
for (int i = 0; i < Assembler::kDebugBreakSlotInstructions; i++) { |
__ nop(Assembler::DEBUG_BREAK_NOP); |
} |
@@ -259,7 +180,7 @@ void DebugCodegen::GenerateSlot(MacroAssembler* masm) { |
void DebugCodegen::GenerateSlotDebugBreak(MacroAssembler* masm) { |
// In the places where a debug break slot is inserted no registers can contain |
// object pointers. |
- Generate_DebugBreakCallHelper(masm, 0, 0, x10); |
+ Generate_DebugBreakCallHelper(masm, 0); |
} |