summaryrefslogtreecommitdiff
path: root/deps/v8/src/regexp/ppc
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2019-03-12 09:01:49 +0100
committerMichaël Zasso <targos@protonmail.com>2019-03-14 18:49:21 +0100
commit7b48713334469818661fe276cf571de9c7899f2d (patch)
tree4dbda49ac88db76ce09dc330a0cb587e68e139ba /deps/v8/src/regexp/ppc
parent8549ac09b256666cf5275224ec58fab9939ff32e (diff)
downloadandroid-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/OWNERS5
-rw-r--r--deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.cc46
-rw-r--r--deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.h5
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.