| Index: src/arm64/macro-assembler-arm64.cc
|
| diff --git a/src/arm64/macro-assembler-arm64.cc b/src/arm64/macro-assembler-arm64.cc
|
| index b888a1dc7cebdc58d4629f019bf1d6868f9dc7d0..628c061e43be14ef8a5f5d8cbf2075d64137741f 100644
|
| --- a/src/arm64/macro-assembler-arm64.cc
|
| +++ b/src/arm64/macro-assembler-arm64.cc
|
| @@ -1549,27 +1549,6 @@ void MacroAssembler::TestJSArrayForAllocationMemento(Register receiver,
|
| }
|
|
|
|
|
| -void MacroAssembler::JumpToHandlerEntry(Register exception,
|
| - Register object,
|
| - Register state,
|
| - Register scratch1,
|
| - Register scratch2) {
|
| - // Handler expects argument in x0.
|
| - DCHECK(exception.Is(x0));
|
| -
|
| - // Compute the handler entry address and jump to it. The handler table is
|
| - // a fixed array of (smi-tagged) code offsets.
|
| - Ldr(scratch1, FieldMemOperand(object, Code::kHandlerTableOffset));
|
| - Add(scratch1, scratch1, FixedArray::kHeaderSize - kHeapObjectTag);
|
| - STATIC_ASSERT(StackHandler::kKindWidth < kPointerSizeLog2);
|
| - Lsr(scratch2, state, StackHandler::kKindWidth);
|
| - Ldr(scratch2, MemOperand(scratch1, scratch2, LSL, kPointerSizeLog2));
|
| - Add(scratch1, object, Code::kHeaderSize - kHeapObjectTag);
|
| - Add(scratch1, scratch1, Operand::UntagSmi(scratch2));
|
| - Br(scratch1);
|
| -}
|
| -
|
| -
|
| void MacroAssembler::InNewSpace(Register object,
|
| Condition cond,
|
| Label* branch) {
|
| @@ -1582,95 +1561,6 @@ void MacroAssembler::InNewSpace(Register object,
|
| }
|
|
|
|
|
| -void MacroAssembler::Throw(Register value,
|
| - Register scratch1,
|
| - Register scratch2,
|
| - Register scratch3,
|
| - Register scratch4) {
|
| - // Adjust this code if not the case.
|
| - STATIC_ASSERT(StackHandlerConstants::kSize == 5 * kPointerSize);
|
| - STATIC_ASSERT(StackHandlerConstants::kNextOffset == 0);
|
| - STATIC_ASSERT(StackHandlerConstants::kCodeOffset == 1 * kPointerSize);
|
| - STATIC_ASSERT(StackHandlerConstants::kStateOffset == 2 * kPointerSize);
|
| - STATIC_ASSERT(StackHandlerConstants::kContextOffset == 3 * kPointerSize);
|
| - STATIC_ASSERT(StackHandlerConstants::kFPOffset == 4 * kPointerSize);
|
| -
|
| - // The handler expects the exception in x0.
|
| - DCHECK(value.Is(x0));
|
| -
|
| - // Drop the stack pointer to the top of the top handler.
|
| - DCHECK(jssp.Is(StackPointer()));
|
| - Mov(scratch1, Operand(ExternalReference(Isolate::kHandlerAddress,
|
| - isolate())));
|
| - Ldr(jssp, MemOperand(scratch1));
|
| - // Restore the next handler.
|
| - Pop(scratch2);
|
| - Str(scratch2, MemOperand(scratch1));
|
| -
|
| - // Get the code object and state. Restore the context and frame pointer.
|
| - Register object = scratch1;
|
| - Register state = scratch2;
|
| - Pop(object, state, cp, fp);
|
| -
|
| - // If the handler is a JS frame, restore the context to the frame.
|
| - // (kind == ENTRY) == (fp == 0) == (cp == 0), so we could test either fp
|
| - // or cp.
|
| - Label not_js_frame;
|
| - Cbz(cp, ¬_js_frame);
|
| - Str(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
| - Bind(¬_js_frame);
|
| -
|
| - JumpToHandlerEntry(value, object, state, scratch3, scratch4);
|
| -}
|
| -
|
| -
|
| -void MacroAssembler::ThrowUncatchable(Register value,
|
| - Register scratch1,
|
| - Register scratch2,
|
| - Register scratch3,
|
| - Register scratch4) {
|
| - // Adjust this code if not the case.
|
| - STATIC_ASSERT(StackHandlerConstants::kSize == 5 * kPointerSize);
|
| - STATIC_ASSERT(StackHandlerConstants::kNextOffset == 0 * kPointerSize);
|
| - STATIC_ASSERT(StackHandlerConstants::kCodeOffset == 1 * kPointerSize);
|
| - STATIC_ASSERT(StackHandlerConstants::kStateOffset == 2 * kPointerSize);
|
| - STATIC_ASSERT(StackHandlerConstants::kContextOffset == 3 * kPointerSize);
|
| - STATIC_ASSERT(StackHandlerConstants::kFPOffset == 4 * kPointerSize);
|
| -
|
| - // The handler expects the exception in x0.
|
| - DCHECK(value.Is(x0));
|
| -
|
| - // Drop the stack pointer to the top of the top stack handler.
|
| - DCHECK(jssp.Is(StackPointer()));
|
| - Mov(scratch1, Operand(ExternalReference(Isolate::kHandlerAddress,
|
| - isolate())));
|
| - Ldr(jssp, MemOperand(scratch1));
|
| -
|
| - // Unwind the handlers until the ENTRY handler is found.
|
| - Label fetch_next, check_kind;
|
| - B(&check_kind);
|
| - Bind(&fetch_next);
|
| - Peek(jssp, StackHandlerConstants::kNextOffset);
|
| -
|
| - Bind(&check_kind);
|
| - STATIC_ASSERT(StackHandler::JS_ENTRY == 0);
|
| - Peek(scratch2, StackHandlerConstants::kStateOffset);
|
| - TestAndBranchIfAnySet(scratch2, StackHandler::KindField::kMask, &fetch_next);
|
| -
|
| - // Set the top handler address to next handler past the top ENTRY handler.
|
| - Pop(scratch2);
|
| - Str(scratch2, MemOperand(scratch1));
|
| -
|
| - // Get the code object and state. Clear the context and frame pointer (0 was
|
| - // saved in the handler).
|
| - Register object = scratch1;
|
| - Register state = scratch2;
|
| - Pop(object, state, cp, fp);
|
| -
|
| - JumpToHandlerEntry(value, object, state, scratch3, scratch4);
|
| -}
|
| -
|
| -
|
| void MacroAssembler::AssertSmi(Register object, BailoutReason reason) {
|
| if (emit_debug_code()) {
|
| STATIC_ASSERT(kSmiTag == 0);
|
|
|