diff options
Diffstat (limited to 'deps/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc')
-rw-r--r-- | deps/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/deps/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc b/deps/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc index 56658819b1..43a6bdf912 100644 --- a/deps/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc +++ b/deps/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc @@ -120,10 +120,14 @@ RegExpMacroAssemblerARM64::RegExpMacroAssemblerARM64(Isolate* isolate, success_label_(), backtrack_label_(), exit_label_() { + masm_->set_root_array_available(false); + DCHECK_EQ(0, registers_to_save % 2); // We can cache at most 16 W registers in x0-x7. STATIC_ASSERT(kNumCachedRegisters <= 16); STATIC_ASSERT((kNumCachedRegisters % 2) == 0); + __ CallTarget(); + __ B(&entry_label_); // We'll write the entry code later. __ Bind(&start_label_); // And then continue from here. } @@ -212,6 +216,9 @@ void RegExpMacroAssemblerARM64::Bind(Label* label) { __ Bind(label); } +void RegExpMacroAssemblerARM64::BindJumpTarget(Label* label) { + __ BindJumpTarget(label); +} void RegExpMacroAssemblerARM64::CheckCharacter(uint32_t c, Label* on_equal) { CompareAndBranchOrBacktrack(current_character(), c, eq, on_equal); @@ -286,9 +293,8 @@ void RegExpMacroAssemblerARM64::CheckGreedyLoop(Label* on_equal) { BranchOrBacktrack(eq, on_equal); } - void RegExpMacroAssemblerARM64::CheckNotBackReferenceIgnoreCase( - int start_reg, bool read_backward, bool unicode, Label* on_no_match) { + int start_reg, bool read_backward, Label* on_no_match) { Label fallthrough; Register capture_start_offset = w10; @@ -402,7 +408,7 @@ void RegExpMacroAssemblerARM64::CheckNotBackReferenceIgnoreCase( // x0: Address byte_offset1 - Address captured substring's start. // x1: Address byte_offset2 - Address of current character position. // w2: size_t byte_length - length of capture in bytes(!) - // x3: Isolate* isolate or 0 if unicode flag + // x3: Isolate* isolate. // Address of start of capture. __ Add(x0, input_end(), Operand(capture_start_offset, SXTW)); @@ -414,14 +420,7 @@ void RegExpMacroAssemblerARM64::CheckNotBackReferenceIgnoreCase( __ Sub(x1, x1, Operand(capture_length, SXTW)); } // Isolate. -#ifdef V8_INTL_SUPPORT - if (unicode) { - __ Mov(x3, Operand(0)); - } else // NOLINT -#endif // V8_INTL_SUPPORT - { - __ Mov(x3, ExternalReference::isolate_address(isolate())); - } + __ Mov(x3, ExternalReference::isolate_address(isolate())); { AllowExternalCallThatCantCauseGC scope(masm_); @@ -737,10 +736,11 @@ Handle<HeapObject> RegExpMacroAssemblerARM64::GetCode(Handle<String> source) { CPURegList argument_registers(x0, x5, x6, x7); CPURegList registers_to_retain = kCalleeSaved; - DCHECK_EQ(11, kCalleeSaved.Count()); + registers_to_retain.Combine(fp); registers_to_retain.Combine(lr); - __ PushCPURegList(registers_to_retain); + DCHECK(registers_to_retain.IncludesAliasOf(lr)); + __ PushCPURegList<TurboAssembler::kSignLR>(registers_to_retain); __ PushCPURegList(argument_registers); // Set frame pointer in place. @@ -1035,7 +1035,7 @@ Handle<HeapObject> RegExpMacroAssemblerARM64::GetCode(Handle<String> source) { __ Mov(sp, fp); // Restore registers. - __ PopCPURegList(registers_to_retain); + __ PopCPURegList<TurboAssembler::kAuthLR>(registers_to_retain); __ Ret(); @@ -1585,14 +1585,14 @@ void RegExpMacroAssemblerARM64::CallIf(Label* to, Condition condition) { void RegExpMacroAssemblerARM64::RestoreLinkRegister() { - __ Pop(lr, xzr); + __ Pop<TurboAssembler::kAuthLR>(padreg, lr); __ Add(lr, lr, Operand(masm_->CodeObject())); } void RegExpMacroAssemblerARM64::SaveLinkRegister() { __ Sub(lr, lr, Operand(masm_->CodeObject())); - __ Push(xzr, lr); + __ Push<TurboAssembler::kSignLR>(lr, padreg); } |