diff options
author | Michaël Zasso <targos@protonmail.com> | 2019-03-12 09:01:49 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2019-03-14 18:49:21 +0100 |
commit | 7b48713334469818661fe276cf571de9c7899f2d (patch) | |
tree | 4dbda49ac88db76ce09dc330a0cb587e68e139ba /deps/v8/src/regexp/ppc | |
parent | 8549ac09b256666cf5275224ec58fab9939ff32e (diff) | |
download | android-node-v8-7b48713334469818661fe276cf571de9c7899f2d.tar.gz android-node-v8-7b48713334469818661fe276cf571de9c7899f2d.tar.bz2 android-node-v8-7b48713334469818661fe276cf571de9c7899f2d.zip |
deps: update V8 to 7.3.492.25
PR-URL: https://github.com/nodejs/node/pull/25852
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Diffstat (limited to 'deps/v8/src/regexp/ppc')
-rw-r--r-- | deps/v8/src/regexp/ppc/OWNERS | 5 | ||||
-rw-r--r-- | deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.cc | 46 | ||||
-rw-r--r-- | deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.h | 5 |
3 files changed, 34 insertions, 22 deletions
diff --git a/deps/v8/src/regexp/ppc/OWNERS b/deps/v8/src/regexp/ppc/OWNERS index cf60da5cc7..6d1a8fc472 100644 --- a/deps/v8/src/regexp/ppc/OWNERS +++ b/deps/v8/src/regexp/ppc/OWNERS @@ -1,7 +1,4 @@ jyan@ca.ibm.com -dstence@us.ibm.com joransiu@ca.ibm.com -mbrandy@us.ibm.com michael_dawson@ca.ibm.com -jbarboza@ca.ibm.com -mmallick@ca.ibm.com +miladfar@ca.ibm.com
\ No newline at end of file diff --git a/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.cc b/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.cc index 494422074c..b0f2de4dd7 100644 --- a/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.cc +++ b/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.cc @@ -8,11 +8,11 @@ #include "src/assembler-inl.h" #include "src/base/bits.h" -#include "src/code-stubs.h" #include "src/log.h" #include "src/macro-assembler.h" #include "src/regexp/regexp-macro-assembler.h" #include "src/regexp/regexp-stack.h" +#include "src/snapshot/embedded-data.h" #include "src/unicode.h" namespace v8 { @@ -23,7 +23,7 @@ namespace internal { * This assembler uses the following register assignment convention * - r25: Temporarily stores the index of capture start after a matching pass * for a global regexp. - * - r26: Pointer to current code object (Code*) including heap object tag. + * - r26: Pointer to current Code object including heap object tag. * - r27: Current position in input, as negative offset from end of string. * Please notice that this is the byte offset, not the character offset! * - r28: Currently loaded character. Must be loaded using @@ -76,7 +76,7 @@ namespace internal { * The data up to the return address must be placed there by the calling * code and the remaining arguments are passed in registers, e.g. by calling the * code entry as cast to a function with the signature: - * int (*match)(String* input_string, + * int (*match)(String input_string, * int start_index, * Address start, * Address end, @@ -91,12 +91,14 @@ namespace internal { #define __ ACCESS_MASM(masm_) +const int RegExpMacroAssemblerPPC::kRegExpCodeSize; + RegExpMacroAssemblerPPC::RegExpMacroAssemblerPPC(Isolate* isolate, Zone* zone, Mode mode, int registers_to_save) : NativeRegExpMacroAssembler(isolate, zone), - masm_(new MacroAssembler(isolate, nullptr, kRegExpCodeSize, - CodeObjectRequired::kYes)), + masm_(new MacroAssembler(isolate, CodeObjectRequired::kYes, + NewAssemblerBuffer(kRegExpCodeSize))), mode_(mode), num_registers_(registers_to_save), num_saved_registers_(registers_to_save), @@ -108,7 +110,7 @@ RegExpMacroAssemblerPPC::RegExpMacroAssemblerPPC(Isolate* isolate, Zone* zone, internal_failure_label_() { DCHECK_EQ(0, registers_to_save % 2); -// Called from C + // Because RegExp code respects C ABI, so needs a FD __ function_descriptor(); __ b(&entry_label_); // We'll write the entry code later. @@ -142,8 +144,13 @@ int RegExpMacroAssemblerPPC::stack_limit_slack() { void RegExpMacroAssemblerPPC::AdvanceCurrentPosition(int by) { if (by != 0) { - __ addi(current_input_offset(), current_input_offset(), - Operand(by * char_size())); + if (is_int16(by * char_size())) { + __ addi(current_input_offset(), current_input_offset(), + Operand(by * char_size())); + } else { + __ mov(r0, Operand(by * char_size())); + __ add(current_input_offset(), r0, current_input_offset()); + } } } @@ -162,7 +169,7 @@ void RegExpMacroAssemblerPPC::AdvanceRegister(int reg, int by) { void RegExpMacroAssemblerPPC::Backtrack() { CheckPreemption(); - // Pop Code* offset from backtrack stack, add Code* and jump to location. + // Pop Code offset from backtrack stack, add Code and jump to location. Pop(r3); __ add(r3, r3, code_pointer()); __ Jump(r3); @@ -1091,6 +1098,9 @@ void RegExpMacroAssemblerPPC::WriteStackPointerToRegister(int reg) { // Private methods: void RegExpMacroAssemblerPPC::CallCheckStackGuardState(Register scratch) { + DCHECK(!isolate()->ShouldLoadConstantsFromRootList()); + DCHECK(!masm_->options().isolate_independent_code); + int frame_alignment = masm_->ActivationFrameAlignment(); int stack_space = kNumRequiredStackFrameSlots; int stack_passed_arguments = 1; // space for return address pointer @@ -1117,7 +1127,7 @@ void RegExpMacroAssemblerPPC::CallCheckStackGuardState(Register scratch) { // RegExp code frame pointer. __ mr(r5, frame_pointer()); - // Code* of self. + // Code of self. __ mov(r4, Operand(masm_->CodeObject())); // r3 will point to the return address, placed by DirectCEntry. __ addi(r3, sp, Operand(kStackFrameExtraParamSlot * kPointerSize)); @@ -1125,8 +1135,7 @@ void RegExpMacroAssemblerPPC::CallCheckStackGuardState(Register scratch) { ExternalReference stack_guard_check = ExternalReference::re_check_stack_guard_state(isolate()); __ mov(ip, Operand(stack_guard_check)); - DirectCEntryStub stub(isolate()); - stub.GenerateCall(masm_, ip); + __ StoreReturnAddressAndCall(ip); // Restore the stack pointer stack_space = kNumRequiredStackFrameSlots + stack_passed_arguments; @@ -1152,15 +1161,15 @@ static T* frame_entry_address(Address re_frame, int frame_offset) { return reinterpret_cast<T*>(re_frame + frame_offset); } - int RegExpMacroAssemblerPPC::CheckStackGuardState(Address* return_address, - Code* re_code, + Address raw_code, Address re_frame) { + Code re_code = Code::cast(Object(raw_code)); return NativeRegExpMacroAssembler::CheckStackGuardState( frame_entry<Isolate*>(re_frame, kIsolate), frame_entry<intptr_t>(re_frame, kStartIndex), frame_entry<intptr_t>(re_frame, kDirectCall) == 1, return_address, - re_code, frame_entry_address<String*>(re_frame, kInputString), + re_code, frame_entry_address<Address>(re_frame, kInputString), frame_entry_address<const byte*>(re_frame, kInputStart), frame_entry_address<const byte*>(re_frame, kInputEnd)); } @@ -1272,7 +1281,12 @@ void RegExpMacroAssemblerPPC::LoadCurrentCharacterUnchecked(int cp_offset, Register offset = current_input_offset(); if (cp_offset != 0) { // r25 is not being used to store the capture start index at this point. - __ addi(r25, current_input_offset(), Operand(cp_offset * char_size())); + if (is_int16(cp_offset * char_size())) { + __ addi(r25, current_input_offset(), Operand(cp_offset * char_size())); + } else { + __ mov(r25, Operand(cp_offset * char_size())); + __ add(r25, r25, current_input_offset()); + } offset = r25; } // The lwz, stw, lhz, sth instructions can do unaligned accesses, if the CPU diff --git a/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.h b/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.h index 1e65600ecf..1bbb45885e 100644 --- a/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.h +++ b/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.h @@ -81,7 +81,8 @@ class RegExpMacroAssemblerPPC : public NativeRegExpMacroAssembler { // Called from RegExp if the stack-guard is triggered. // If the code object is relocated, the return address is fixed before // returning. - static int CheckStackGuardState(Address* return_address, Code* re_code, + // {raw_code} is an Address because this is called via ExternalReference. + static int CheckStackGuardState(Address* return_address, Address raw_code, Address re_frame); private: @@ -116,7 +117,7 @@ class RegExpMacroAssemblerPPC : public NativeRegExpMacroAssembler { static const int kRegisterZero = kStringStartMinusOne - kPointerSize; // Initial size of code buffer. - static const size_t kRegExpCodeSize = 1024; + static const int kRegExpCodeSize = 1024; // Load a number of characters at the given offset from the // current position, into the current-character register. |