diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-05-09 14:22:11 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2016-05-09 15:11:45 +0000 |
commit | 2ddb2d3e14eef3de7dbd0cef553d669b9ac2361c (patch) | |
tree | e75f511546c5fd1a173e87c1f9fb11d7ac8d1af3 /chromium/v8/src/regexp/mips | |
parent | a4f3d46271c57e8155ba912df46a05559d14726e (diff) | |
download | qtwebengine-chromium-2ddb2d3e14eef3de7dbd0cef553d669b9ac2361c.tar.gz |
BASELINE: Update Chromium to 51.0.2704.41
Also adds in all smaller components by reversing logic for exclusion.
Change-Id: Ibf90b506e7da088ea2f65dcf23f2b0992c504422
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'chromium/v8/src/regexp/mips')
-rw-r--r-- | chromium/v8/src/regexp/mips/regexp-macro-assembler-mips.cc | 19 | ||||
-rw-r--r-- | chromium/v8/src/regexp/mips/regexp-macro-assembler-mips.h | 2 |
2 files changed, 16 insertions, 5 deletions
diff --git a/chromium/v8/src/regexp/mips/regexp-macro-assembler-mips.cc b/chromium/v8/src/regexp/mips/regexp-macro-assembler-mips.cc index 9c59328ed12..062d6618e98 100644 --- a/chromium/v8/src/regexp/mips/regexp-macro-assembler-mips.cc +++ b/chromium/v8/src/regexp/mips/regexp-macro-assembler-mips.cc @@ -215,7 +215,7 @@ void RegExpMacroAssemblerMIPS::CheckGreedyLoop(Label* on_equal) { void RegExpMacroAssemblerMIPS::CheckNotBackReferenceIgnoreCase( - int start_reg, bool read_backward, Label* on_no_match) { + int start_reg, bool read_backward, bool unicode, Label* on_no_match) { Label fallthrough; __ lw(a0, register_location(start_reg)); // Index of start of capture. __ lw(a1, register_location(start_reg + 1)); // Index of end of capture. @@ -310,7 +310,7 @@ void RegExpMacroAssemblerMIPS::CheckNotBackReferenceIgnoreCase( // a0: Address byte_offset1 - Address captured substring's start. // a1: Address byte_offset2 - Address of current character position. // a2: size_t byte_length - length of capture in bytes(!). - // a3: Isolate* isolate. + // a3: Isolate* isolate or 0 if unicode flag. // Address of start of capture. __ Addu(a0, a0, Operand(end_of_input_address())); @@ -324,7 +324,14 @@ void RegExpMacroAssemblerMIPS::CheckNotBackReferenceIgnoreCase( __ Subu(a1, a1, Operand(s3)); } // Isolate. - __ li(a3, Operand(ExternalReference::isolate_address(masm_->isolate()))); +#ifdef V8_I18N_SUPPORT + if (unicode) { + __ mov(a3, zero_reg); + } else // NOLINT +#endif // V8_I18N_SUPPORT + { + __ li(a3, Operand(ExternalReference::isolate_address(masm_->isolate()))); + } { AllowExternalCallThatCantCauseGC scope(masm_); @@ -801,9 +808,12 @@ Handle<HeapObject> RegExpMacroAssemblerMIPS::GetCode(Handle<String> source) { __ Branch(&exit_label_, eq, current_input_offset(), Operand(zero_reg)); // Advance current position after a zero-length match. + Label advance; + __ bind(&advance); __ Addu(current_input_offset(), current_input_offset(), Operand((mode_ == UC16) ? 2 : 1)); + if (global_unicode()) CheckNotInSurrogatePair(0, &advance); } __ Branch(&load_char_start_regexp); @@ -895,7 +905,8 @@ Handle<HeapObject> RegExpMacroAssemblerMIPS::GetCode(Handle<String> source) { masm_->GetCode(&code_desc); Handle<Code> code = isolate()->factory()->NewCode( code_desc, Code::ComputeFlags(Code::REGEXP), masm_->CodeObject()); - LOG(masm_->isolate(), RegExpCodeCreateEvent(*code, *source)); + LOG(masm_->isolate(), + RegExpCodeCreateEvent(AbstractCode::cast(*code), *source)); return Handle<HeapObject>::cast(code); } diff --git a/chromium/v8/src/regexp/mips/regexp-macro-assembler-mips.h b/chromium/v8/src/regexp/mips/regexp-macro-assembler-mips.h index 902e2208fe8..6dedb1e7481 100644 --- a/chromium/v8/src/regexp/mips/regexp-macro-assembler-mips.h +++ b/chromium/v8/src/regexp/mips/regexp-macro-assembler-mips.h @@ -37,7 +37,7 @@ class RegExpMacroAssemblerMIPS: public NativeRegExpMacroAssembler { virtual void CheckNotBackReference(int start_reg, bool read_backward, Label* on_no_match); virtual void CheckNotBackReferenceIgnoreCase(int start_reg, - bool read_backward, + bool read_backward, bool unicode, Label* on_no_match); virtual void CheckNotCharacter(uint32_t c, Label* on_not_equal); virtual void CheckNotCharacterAfterAnd(uint32_t c, |