| Index: src/arm64/regexp-macro-assembler-arm64.cc
|
| diff --git a/src/a64/regexp-macro-assembler-a64.cc b/src/arm64/regexp-macro-assembler-arm64.cc
|
| similarity index 90%
|
| rename from src/a64/regexp-macro-assembler-a64.cc
|
| rename to src/arm64/regexp-macro-assembler-arm64.cc
|
| index 0b6ade8509f1510f0216182016f961a59c0c392f..536580ab55200599cfa7544478798a8981cd411a 100644
|
| --- a/src/a64/regexp-macro-assembler-a64.cc
|
| +++ b/src/arm64/regexp-macro-assembler-arm64.cc
|
| @@ -27,7 +27,7 @@
|
|
|
| #include "v8.h"
|
|
|
| -#if V8_TARGET_ARCH_A64
|
| +#if V8_TARGET_ARCH_ARM64
|
|
|
| #include "cpu-profiler.h"
|
| #include "unicode.h"
|
| @@ -36,7 +36,7 @@
|
| #include "regexp-stack.h"
|
| #include "macro-assembler.h"
|
| #include "regexp-macro-assembler.h"
|
| -#include "a64/regexp-macro-assembler-a64.h"
|
| +#include "arm64/regexp-macro-assembler-arm64.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -124,7 +124,7 @@ namespace internal {
|
| * Isolate* isolate)
|
| * The call is performed by NativeRegExpMacroAssembler::Execute()
|
| * (in regexp-macro-assembler.cc) via the CALL_GENERATED_REGEXP_CODE macro
|
| - * in a64/simulator-a64.h.
|
| + * in arm64/simulator-arm64.h.
|
| * When calling as a non-direct call (i.e., from C++ code), the return address
|
| * area is overwritten with the LR register by the RegExp code. When doing a
|
| * direct call from generated code, the return address is placed there by
|
| @@ -133,7 +133,7 @@ namespace internal {
|
|
|
| #define __ ACCESS_MASM(masm_)
|
|
|
| -RegExpMacroAssemblerA64::RegExpMacroAssemblerA64(
|
| +RegExpMacroAssemblerARM64::RegExpMacroAssemblerARM64(
|
| Mode mode,
|
| int registers_to_save,
|
| Zone* zone)
|
| @@ -157,7 +157,7 @@ RegExpMacroAssemblerA64::RegExpMacroAssemblerA64(
|
| }
|
|
|
|
|
| -RegExpMacroAssemblerA64::~RegExpMacroAssemblerA64() {
|
| +RegExpMacroAssemblerARM64::~RegExpMacroAssemblerARM64() {
|
| delete masm_;
|
| // Unuse labels in case we throw away the assembler without calling GetCode.
|
| entry_label_.Unuse();
|
| @@ -169,12 +169,12 @@ RegExpMacroAssemblerA64::~RegExpMacroAssemblerA64() {
|
| stack_overflow_label_.Unuse();
|
| }
|
|
|
| -int RegExpMacroAssemblerA64::stack_limit_slack() {
|
| +int RegExpMacroAssemblerARM64::stack_limit_slack() {
|
| return RegExpStack::kStackLimitSlack;
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::AdvanceCurrentPosition(int by) {
|
| +void RegExpMacroAssemblerARM64::AdvanceCurrentPosition(int by) {
|
| if (by != 0) {
|
| __ Add(current_input_offset(),
|
| current_input_offset(), by * char_size());
|
| @@ -182,7 +182,7 @@ void RegExpMacroAssemblerA64::AdvanceCurrentPosition(int by) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::AdvanceRegister(int reg, int by) {
|
| +void RegExpMacroAssemblerARM64::AdvanceRegister(int reg, int by) {
|
| ASSERT((reg >= 0) && (reg < num_registers_));
|
| if (by != 0) {
|
| Register to_advance;
|
| @@ -210,7 +210,7 @@ void RegExpMacroAssemblerA64::AdvanceRegister(int reg, int by) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::Backtrack() {
|
| +void RegExpMacroAssemblerARM64::Backtrack() {
|
| CheckPreemption();
|
| Pop(w10);
|
| __ Add(x10, code_pointer(), Operand(w10, UXTW));
|
| @@ -218,22 +218,23 @@ void RegExpMacroAssemblerA64::Backtrack() {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::Bind(Label* label) {
|
| +void RegExpMacroAssemblerARM64::Bind(Label* label) {
|
| __ Bind(label);
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckCharacter(uint32_t c, Label* on_equal) {
|
| +void RegExpMacroAssemblerARM64::CheckCharacter(uint32_t c, Label* on_equal) {
|
| CompareAndBranchOrBacktrack(current_character(), c, eq, on_equal);
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckCharacterGT(uc16 limit, Label* on_greater) {
|
| +void RegExpMacroAssemblerARM64::CheckCharacterGT(uc16 limit,
|
| + Label* on_greater) {
|
| CompareAndBranchOrBacktrack(current_character(), limit, hi, on_greater);
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckAtStart(Label* on_at_start) {
|
| +void RegExpMacroAssemblerARM64::CheckAtStart(Label* on_at_start) {
|
| Label not_at_start;
|
| // Did we start the match at the start of the input string?
|
| CompareAndBranchOrBacktrack(start_offset(), 0, ne, ¬_at_start);
|
| @@ -245,7 +246,7 @@ void RegExpMacroAssemblerA64::CheckAtStart(Label* on_at_start) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckNotAtStart(Label* on_not_at_start) {
|
| +void RegExpMacroAssemblerARM64::CheckNotAtStart(Label* on_not_at_start) {
|
| // Did we start the match at the start of the input string?
|
| CompareAndBranchOrBacktrack(start_offset(), 0, ne, on_not_at_start);
|
| // If we did, are we still at the start of the input string?
|
| @@ -255,12 +256,12 @@ void RegExpMacroAssemblerA64::CheckNotAtStart(Label* on_not_at_start) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckCharacterLT(uc16 limit, Label* on_less) {
|
| +void RegExpMacroAssemblerARM64::CheckCharacterLT(uc16 limit, Label* on_less) {
|
| CompareAndBranchOrBacktrack(current_character(), limit, lo, on_less);
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckCharacters(Vector<const uc16> str,
|
| +void RegExpMacroAssemblerARM64::CheckCharacters(Vector<const uc16> str,
|
| int cp_offset,
|
| Label* on_failure,
|
| bool check_end_of_string) {
|
| @@ -292,7 +293,7 @@ void RegExpMacroAssemblerA64::CheckCharacters(Vector<const uc16> str,
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckGreedyLoop(Label* on_equal) {
|
| +void RegExpMacroAssemblerARM64::CheckGreedyLoop(Label* on_equal) {
|
| __ Ldr(w10, MemOperand(backtrack_stackpointer()));
|
| __ Cmp(current_input_offset(), w10);
|
| __ Cset(x11, eq);
|
| @@ -301,7 +302,7 @@ void RegExpMacroAssemblerA64::CheckGreedyLoop(Label* on_equal) {
|
| BranchOrBacktrack(eq, on_equal);
|
| }
|
|
|
| -void RegExpMacroAssemblerA64::CheckNotBackReferenceIgnoreCase(
|
| +void RegExpMacroAssemblerARM64::CheckNotBackReferenceIgnoreCase(
|
| int start_reg,
|
| Label* on_no_match) {
|
| Label fallthrough;
|
| @@ -428,7 +429,7 @@ void RegExpMacroAssemblerA64::CheckNotBackReferenceIgnoreCase(
|
| __ Bind(&fallthrough);
|
| }
|
|
|
| -void RegExpMacroAssemblerA64::CheckNotBackReference(
|
| +void RegExpMacroAssemblerARM64::CheckNotBackReference(
|
| int start_reg,
|
| Label* on_no_match) {
|
| Label fallthrough;
|
| @@ -490,29 +491,29 @@ void RegExpMacroAssemblerA64::CheckNotBackReference(
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckNotCharacter(unsigned c,
|
| - Label* on_not_equal) {
|
| +void RegExpMacroAssemblerARM64::CheckNotCharacter(unsigned c,
|
| + Label* on_not_equal) {
|
| CompareAndBranchOrBacktrack(current_character(), c, ne, on_not_equal);
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckCharacterAfterAnd(uint32_t c,
|
| - uint32_t mask,
|
| - Label* on_equal) {
|
| +void RegExpMacroAssemblerARM64::CheckCharacterAfterAnd(uint32_t c,
|
| + uint32_t mask,
|
| + Label* on_equal) {
|
| __ And(w10, current_character(), mask);
|
| CompareAndBranchOrBacktrack(w10, c, eq, on_equal);
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckNotCharacterAfterAnd(unsigned c,
|
| - unsigned mask,
|
| - Label* on_not_equal) {
|
| +void RegExpMacroAssemblerARM64::CheckNotCharacterAfterAnd(unsigned c,
|
| + unsigned mask,
|
| + Label* on_not_equal) {
|
| __ And(w10, current_character(), mask);
|
| CompareAndBranchOrBacktrack(w10, c, ne, on_not_equal);
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckNotCharacterAfterMinusAnd(
|
| +void RegExpMacroAssemblerARM64::CheckNotCharacterAfterMinusAnd(
|
| uc16 c,
|
| uc16 minus,
|
| uc16 mask,
|
| @@ -524,7 +525,7 @@ void RegExpMacroAssemblerA64::CheckNotCharacterAfterMinusAnd(
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckCharacterInRange(
|
| +void RegExpMacroAssemblerARM64::CheckCharacterInRange(
|
| uc16 from,
|
| uc16 to,
|
| Label* on_in_range) {
|
| @@ -534,7 +535,7 @@ void RegExpMacroAssemblerA64::CheckCharacterInRange(
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckCharacterNotInRange(
|
| +void RegExpMacroAssemblerARM64::CheckCharacterNotInRange(
|
| uc16 from,
|
| uc16 to,
|
| Label* on_not_in_range) {
|
| @@ -544,7 +545,7 @@ void RegExpMacroAssemblerA64::CheckCharacterNotInRange(
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckBitInTable(
|
| +void RegExpMacroAssemblerARM64::CheckBitInTable(
|
| Handle<ByteArray> table,
|
| Label* on_bit_set) {
|
| __ Mov(x11, Operand(table));
|
| @@ -559,8 +560,8 @@ void RegExpMacroAssemblerA64::CheckBitInTable(
|
| }
|
|
|
|
|
| -bool RegExpMacroAssemblerA64::CheckSpecialCharacterClass(uc16 type,
|
| - Label* on_no_match) {
|
| +bool RegExpMacroAssemblerARM64::CheckSpecialCharacterClass(uc16 type,
|
| + Label* on_no_match) {
|
| // Range checks (c in min..max) are generally implemented by an unsigned
|
| // (c - min) <= (max - min) check
|
| switch (type) {
|
| @@ -663,13 +664,13 @@ bool RegExpMacroAssemblerA64::CheckSpecialCharacterClass(uc16 type,
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::Fail() {
|
| +void RegExpMacroAssemblerARM64::Fail() {
|
| __ Mov(w0, FAILURE);
|
| __ B(&exit_label_);
|
| }
|
|
|
|
|
| -Handle<HeapObject> RegExpMacroAssemblerA64::GetCode(Handle<String> source) {
|
| +Handle<HeapObject> RegExpMacroAssemblerARM64::GetCode(Handle<String> source) {
|
| Label return_w0;
|
| // Finalize code - write the entry point code now we know how many
|
| // registers we need.
|
| @@ -1065,43 +1066,40 @@ Handle<HeapObject> RegExpMacroAssemblerA64::GetCode(Handle<String> source) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::GoTo(Label* to) {
|
| +void RegExpMacroAssemblerARM64::GoTo(Label* to) {
|
| BranchOrBacktrack(al, to);
|
| }
|
|
|
| -void RegExpMacroAssemblerA64::IfRegisterGE(int reg,
|
| - int comparand,
|
| - Label* if_ge) {
|
| +void RegExpMacroAssemblerARM64::IfRegisterGE(int reg, int comparand,
|
| + Label* if_ge) {
|
| Register to_compare = GetRegister(reg, w10);
|
| CompareAndBranchOrBacktrack(to_compare, comparand, ge, if_ge);
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::IfRegisterLT(int reg,
|
| - int comparand,
|
| - Label* if_lt) {
|
| +void RegExpMacroAssemblerARM64::IfRegisterLT(int reg, int comparand,
|
| + Label* if_lt) {
|
| Register to_compare = GetRegister(reg, w10);
|
| CompareAndBranchOrBacktrack(to_compare, comparand, lt, if_lt);
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::IfRegisterEqPos(int reg,
|
| - Label* if_eq) {
|
| +void RegExpMacroAssemblerARM64::IfRegisterEqPos(int reg, Label* if_eq) {
|
| Register to_compare = GetRegister(reg, w10);
|
| __ Cmp(to_compare, current_input_offset());
|
| BranchOrBacktrack(eq, if_eq);
|
| }
|
|
|
| RegExpMacroAssembler::IrregexpImplementation
|
| - RegExpMacroAssemblerA64::Implementation() {
|
| - return kA64Implementation;
|
| + RegExpMacroAssemblerARM64::Implementation() {
|
| + return kARM64Implementation;
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::LoadCurrentCharacter(int cp_offset,
|
| - Label* on_end_of_input,
|
| - bool check_bounds,
|
| - int characters) {
|
| +void RegExpMacroAssemblerARM64::LoadCurrentCharacter(int cp_offset,
|
| + Label* on_end_of_input,
|
| + bool check_bounds,
|
| + int characters) {
|
| // TODO(pielan): Make sure long strings are caught before this, and not
|
| // just asserted in debug mode.
|
| ASSERT(cp_offset >= -1); // ^ and \b can look behind one character.
|
| @@ -1114,18 +1112,18 @@ void RegExpMacroAssemblerA64::LoadCurrentCharacter(int cp_offset,
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::PopCurrentPosition() {
|
| +void RegExpMacroAssemblerARM64::PopCurrentPosition() {
|
| Pop(current_input_offset());
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::PopRegister(int register_index) {
|
| +void RegExpMacroAssemblerARM64::PopRegister(int register_index) {
|
| Pop(w10);
|
| StoreRegister(register_index, w10);
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::PushBacktrack(Label* label) {
|
| +void RegExpMacroAssemblerARM64::PushBacktrack(Label* label) {
|
| if (label->is_bound()) {
|
| int target = label->pos();
|
| __ Mov(w10, target + Code::kHeaderSize - kHeapObjectTag);
|
| @@ -1143,20 +1141,20 @@ void RegExpMacroAssemblerA64::PushBacktrack(Label* label) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::PushCurrentPosition() {
|
| +void RegExpMacroAssemblerARM64::PushCurrentPosition() {
|
| Push(current_input_offset());
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::PushRegister(int register_index,
|
| - StackCheckFlag check_stack_limit) {
|
| +void RegExpMacroAssemblerARM64::PushRegister(int register_index,
|
| + StackCheckFlag check_stack_limit) {
|
| Register to_push = GetRegister(register_index, w10);
|
| Push(to_push);
|
| if (check_stack_limit) CheckStackLimit();
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::ReadCurrentPositionFromRegister(int reg) {
|
| +void RegExpMacroAssemblerARM64::ReadCurrentPositionFromRegister(int reg) {
|
| Register cached_register;
|
| RegisterState register_state = GetRegisterState(reg);
|
| switch (register_state) {
|
| @@ -1178,14 +1176,14 @@ void RegExpMacroAssemblerA64::ReadCurrentPositionFromRegister(int reg) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::ReadStackPointerFromRegister(int reg) {
|
| +void RegExpMacroAssemblerARM64::ReadStackPointerFromRegister(int reg) {
|
| Register read_from = GetRegister(reg, w10);
|
| __ Ldr(x11, MemOperand(frame_pointer(), kStackBase));
|
| __ Add(backtrack_stackpointer(), x11, Operand(read_from, SXTW));
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::SetCurrentPositionFromEnd(int by) {
|
| +void RegExpMacroAssemblerARM64::SetCurrentPositionFromEnd(int by) {
|
| Label after_position;
|
| __ Cmp(current_input_offset(), -by * char_size());
|
| __ B(ge, &after_position);
|
| @@ -1198,7 +1196,7 @@ void RegExpMacroAssemblerA64::SetCurrentPositionFromEnd(int by) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::SetRegister(int register_index, int to) {
|
| +void RegExpMacroAssemblerARM64::SetRegister(int register_index, int to) {
|
| ASSERT(register_index >= num_saved_registers_); // Reserved for positions!
|
| Register set_to = wzr;
|
| if (to != 0) {
|
| @@ -1209,14 +1207,14 @@ void RegExpMacroAssemblerA64::SetRegister(int register_index, int to) {
|
| }
|
|
|
|
|
| -bool RegExpMacroAssemblerA64::Succeed() {
|
| +bool RegExpMacroAssemblerARM64::Succeed() {
|
| __ B(&success_label_);
|
| return global();
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::WriteCurrentPositionToRegister(int reg,
|
| - int cp_offset) {
|
| +void RegExpMacroAssemblerARM64::WriteCurrentPositionToRegister(int reg,
|
| + int cp_offset) {
|
| Register position = current_input_offset();
|
| if (cp_offset != 0) {
|
| position = w10;
|
| @@ -1226,7 +1224,7 @@ void RegExpMacroAssemblerA64::WriteCurrentPositionToRegister(int reg,
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::ClearRegisters(int reg_from, int reg_to) {
|
| +void RegExpMacroAssemblerARM64::ClearRegisters(int reg_from, int reg_to) {
|
| ASSERT(reg_from <= reg_to);
|
| int num_registers = reg_to - reg_from + 1;
|
|
|
| @@ -1287,7 +1285,7 @@ void RegExpMacroAssemblerA64::ClearRegisters(int reg_from, int reg_to) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::WriteStackPointerToRegister(int reg) {
|
| +void RegExpMacroAssemblerARM64::WriteStackPointerToRegister(int reg) {
|
| __ Ldr(x10, MemOperand(frame_pointer(), kStackBase));
|
| __ Sub(x10, backtrack_stackpointer(), x10);
|
| if (masm_->emit_debug_code()) {
|
| @@ -1306,7 +1304,7 @@ static T& frame_entry(Address re_frame, int frame_offset) {
|
| }
|
|
|
|
|
| -int RegExpMacroAssemblerA64::CheckStackGuardState(Address* return_address,
|
| +int RegExpMacroAssemblerARM64::CheckStackGuardState(Address* return_address,
|
| Code* re_code,
|
| Address re_frame,
|
| int start_offset,
|
| @@ -1406,8 +1404,8 @@ int RegExpMacroAssemblerA64::CheckStackGuardState(Address* return_address,
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckPosition(int cp_offset,
|
| - Label* on_outside_input) {
|
| +void RegExpMacroAssemblerARM64::CheckPosition(int cp_offset,
|
| + Label* on_outside_input) {
|
| CompareAndBranchOrBacktrack(current_input_offset(),
|
| -cp_offset * char_size(),
|
| ge,
|
| @@ -1415,7 +1413,7 @@ void RegExpMacroAssemblerA64::CheckPosition(int cp_offset,
|
| }
|
|
|
|
|
| -bool RegExpMacroAssemblerA64::CanReadUnaligned() {
|
| +bool RegExpMacroAssemblerARM64::CanReadUnaligned() {
|
| // TODO(pielan): See whether or not we should disable unaligned accesses.
|
| return !slow_safe();
|
| }
|
| @@ -1423,7 +1421,7 @@ bool RegExpMacroAssemblerA64::CanReadUnaligned() {
|
|
|
| // Private methods:
|
|
|
| -void RegExpMacroAssemblerA64::CallCheckStackGuardState(Register scratch) {
|
| +void RegExpMacroAssemblerARM64::CallCheckStackGuardState(Register scratch) {
|
| // Allocate space on the stack to store the return address. The
|
| // CheckStackGuardState C++ function will override it if the code
|
| // moved. Allocate extra space for 2 arguments passed by pointers.
|
| @@ -1470,8 +1468,8 @@ void RegExpMacroAssemblerA64::CallCheckStackGuardState(Register scratch) {
|
| __ Mov(code_pointer(), Operand(masm_->CodeObject()));
|
| }
|
|
|
| -void RegExpMacroAssemblerA64::BranchOrBacktrack(Condition condition,
|
| - Label* to) {
|
| +void RegExpMacroAssemblerARM64::BranchOrBacktrack(Condition condition,
|
| + Label* to) {
|
| if (condition == al) { // Unconditional.
|
| if (to == NULL) {
|
| Backtrack();
|
| @@ -1491,10 +1489,10 @@ void RegExpMacroAssemblerA64::BranchOrBacktrack(Condition condition,
|
| __ Bind(&no_branch);
|
| }
|
|
|
| -void RegExpMacroAssemblerA64::CompareAndBranchOrBacktrack(Register reg,
|
| - int immediate,
|
| - Condition condition,
|
| - Label* to) {
|
| +void RegExpMacroAssemblerARM64::CompareAndBranchOrBacktrack(Register reg,
|
| + int immediate,
|
| + Condition condition,
|
| + Label* to) {
|
| if ((immediate == 0) && ((condition == eq) || (condition == ne))) {
|
| if (to == NULL) {
|
| to = &backtrack_label_;
|
| @@ -1515,7 +1513,7 @@ void RegExpMacroAssemblerA64::CompareAndBranchOrBacktrack(Register reg,
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckPreemption() {
|
| +void RegExpMacroAssemblerARM64::CheckPreemption() {
|
| // Check for preemption.
|
| ExternalReference stack_limit =
|
| ExternalReference::address_of_stack_limit(isolate());
|
| @@ -1527,7 +1525,7 @@ void RegExpMacroAssemblerA64::CheckPreemption() {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CheckStackLimit() {
|
| +void RegExpMacroAssemblerARM64::CheckStackLimit() {
|
| ExternalReference stack_limit =
|
| ExternalReference::address_of_regexp_stack_limit(isolate());
|
| __ Mov(x10, stack_limit);
|
| @@ -1537,7 +1535,7 @@ void RegExpMacroAssemblerA64::CheckStackLimit() {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::Push(Register source) {
|
| +void RegExpMacroAssemblerARM64::Push(Register source) {
|
| ASSERT(source.Is32Bits());
|
| ASSERT(!source.is(backtrack_stackpointer()));
|
| __ Str(source,
|
| @@ -1547,7 +1545,7 @@ void RegExpMacroAssemblerA64::Push(Register source) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::Pop(Register target) {
|
| +void RegExpMacroAssemblerARM64::Pop(Register target) {
|
| ASSERT(target.Is32Bits());
|
| ASSERT(!target.is(backtrack_stackpointer()));
|
| __ Ldr(target,
|
| @@ -1555,14 +1553,14 @@ void RegExpMacroAssemblerA64::Pop(Register target) {
|
| }
|
|
|
|
|
| -Register RegExpMacroAssemblerA64::GetCachedRegister(int register_index) {
|
| +Register RegExpMacroAssemblerARM64::GetCachedRegister(int register_index) {
|
| ASSERT(register_index < kNumCachedRegisters);
|
| return Register::Create(register_index / 2, kXRegSizeInBits);
|
| }
|
|
|
|
|
| -Register RegExpMacroAssemblerA64::GetRegister(int register_index,
|
| - Register maybe_result) {
|
| +Register RegExpMacroAssemblerARM64::GetRegister(int register_index,
|
| + Register maybe_result) {
|
| ASSERT(maybe_result.Is32Bits());
|
| ASSERT(register_index >= 0);
|
| if (num_registers_ <= register_index) {
|
| @@ -1592,8 +1590,8 @@ Register RegExpMacroAssemblerA64::GetRegister(int register_index,
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::StoreRegister(int register_index,
|
| - Register source) {
|
| +void RegExpMacroAssemblerARM64::StoreRegister(int register_index,
|
| + Register source) {
|
| ASSERT(source.Is32Bits());
|
| ASSERT(register_index >= 0);
|
| if (num_registers_ <= register_index) {
|
| @@ -1623,7 +1621,7 @@ void RegExpMacroAssemblerA64::StoreRegister(int register_index,
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::CallIf(Label* to, Condition condition) {
|
| +void RegExpMacroAssemblerARM64::CallIf(Label* to, Condition condition) {
|
| Label skip_call;
|
| if (condition != al) __ B(&skip_call, InvertCondition(condition));
|
| __ Bl(to);
|
| @@ -1631,21 +1629,21 @@ void RegExpMacroAssemblerA64::CallIf(Label* to, Condition condition) {
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::RestoreLinkRegister() {
|
| +void RegExpMacroAssemblerARM64::RestoreLinkRegister() {
|
| ASSERT(csp.Is(__ StackPointer()));
|
| __ Pop(lr, xzr);
|
| __ Add(lr, lr, Operand(masm_->CodeObject()));
|
| }
|
|
|
|
|
| -void RegExpMacroAssemblerA64::SaveLinkRegister() {
|
| +void RegExpMacroAssemblerARM64::SaveLinkRegister() {
|
| ASSERT(csp.Is(__ StackPointer()));
|
| __ Sub(lr, lr, Operand(masm_->CodeObject()));
|
| __ Push(xzr, lr);
|
| }
|
|
|
|
|
| -MemOperand RegExpMacroAssemblerA64::register_location(int register_index) {
|
| +MemOperand RegExpMacroAssemblerARM64::register_location(int register_index) {
|
| ASSERT(register_index < (1<<30));
|
| ASSERT(register_index >= kNumCachedRegisters);
|
| if (num_registers_ <= register_index) {
|
| @@ -1656,7 +1654,7 @@ MemOperand RegExpMacroAssemblerA64::register_location(int register_index) {
|
| return MemOperand(frame_pointer(), offset);
|
| }
|
|
|
| -MemOperand RegExpMacroAssemblerA64::capture_location(int register_index,
|
| +MemOperand RegExpMacroAssemblerARM64::capture_location(int register_index,
|
| Register scratch) {
|
| ASSERT(register_index < (1<<30));
|
| ASSERT(register_index < num_saved_registers_);
|
| @@ -1674,8 +1672,8 @@ MemOperand RegExpMacroAssemblerA64::capture_location(int register_index,
|
| }
|
| }
|
|
|
| -void RegExpMacroAssemblerA64::LoadCurrentCharacterUnchecked(int cp_offset,
|
| - int characters) {
|
| +void RegExpMacroAssemblerARM64::LoadCurrentCharacterUnchecked(int cp_offset,
|
| + int characters) {
|
| Register offset = current_input_offset();
|
|
|
| // The ldr, str, ldrh, strh instructions can do unaligned accesses, if the CPU
|
| @@ -1727,4 +1725,4 @@ void RegExpMacroAssemblerA64::LoadCurrentCharacterUnchecked(int cp_offset,
|
|
|
| }} // namespace v8::internal
|
|
|
| -#endif // V8_TARGET_ARCH_A64
|
| +#endif // V8_TARGET_ARCH_ARM64
|
|
|