Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Unified Diff: src/s390/code-stubs-s390.cc

Issue 2415103002: [regexp] Turn last match info into a simple FixedArray (Closed)
Patch Set: Don't check instance type before map check Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/runtime/runtime-strings.cc ('k') | src/x64/code-stubs-x64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/s390/code-stubs-s390.cc
diff --git a/src/s390/code-stubs-s390.cc b/src/s390/code-stubs-s390.cc
index 9e8295e286c5ca1e8079434a16b4a336a29c2bee..8d85c64059f6bf2a4cfcefdcf7173049d3232105 100644
--- a/src/s390/code-stubs-s390.cc
+++ b/src/s390/code-stubs-s390.cc
@@ -1586,13 +1586,10 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
__ SmiToShortArrayOffset(r3, r3);
__ AddP(r3, Operand(2));
- __ LoadP(r2, MemOperand(sp, kLastMatchInfoOffset));
- __ JumpIfSmi(r2, &runtime);
- __ CompareObjectType(r2, r4, r4, JS_OBJECT_TYPE);
- __ bne(&runtime);
+ // Check that the last match info is a FixedArray.
+ __ LoadP(last_match_info_elements, MemOperand(sp, kLastMatchInfoOffset));
+ __ JumpIfSmi(last_match_info_elements, &runtime);
// Check that the object has fast elements.
- __ LoadP(last_match_info_elements,
- FieldMemOperand(r2, JSArray::kElementsOffset));
__ LoadP(r2,
FieldMemOperand(last_match_info_elements, HeapObject::kMapOffset));
__ CompareRoot(r2, Heap::kFixedArrayMapRootIndex);
@@ -1601,7 +1598,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
// additional information.
__ LoadP(
r2, FieldMemOperand(last_match_info_elements, FixedArray::kLengthOffset));
- __ AddP(r4, r3, Operand(RegExpImpl::kLastMatchOverhead));
+ __ AddP(r4, r3, Operand(RegExpMatchInfo::kLastMatchOverhead));
__ SmiUntag(r0, r2);
__ CmpP(r4, r0);
__ bgt(&runtime);
@@ -1611,18 +1608,20 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
// Store the capture count.
__ SmiTag(r4, r3);
__ StoreP(r4, FieldMemOperand(last_match_info_elements,
- RegExpImpl::kLastCaptureCountOffset));
+ RegExpMatchInfo::kNumberOfCapturesOffset));
// Store last subject and last input.
__ StoreP(subject, FieldMemOperand(last_match_info_elements,
- RegExpImpl::kLastSubjectOffset));
+ RegExpMatchInfo::kLastSubjectOffset));
__ LoadRR(r4, subject);
- __ RecordWriteField(last_match_info_elements, RegExpImpl::kLastSubjectOffset,
- subject, r9, kLRHasNotBeenSaved, kDontSaveFPRegs);
+ __ RecordWriteField(last_match_info_elements,
+ RegExpMatchInfo::kLastSubjectOffset, subject, r9,
+ kLRHasNotBeenSaved, kDontSaveFPRegs);
__ LoadRR(subject, r4);
__ StoreP(subject, FieldMemOperand(last_match_info_elements,
- RegExpImpl::kLastInputOffset));
- __ RecordWriteField(last_match_info_elements, RegExpImpl::kLastInputOffset,
- subject, r9, kLRHasNotBeenSaved, kDontSaveFPRegs);
+ RegExpMatchInfo::kLastInputOffset));
+ __ RecordWriteField(last_match_info_elements,
+ RegExpMatchInfo::kLastInputOffset, subject, r9,
+ kLRHasNotBeenSaved, kDontSaveFPRegs);
// Get the static offsets vector filled by the native regexp code.
ExternalReference address_of_static_offsets_vector =
@@ -1633,10 +1632,10 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
// r4: offsets vector
Label next_capture;
// Capture register counter starts from number of capture registers and
- // counts down until wraping after zero.
- __ AddP(
- r2, last_match_info_elements,
- Operand(RegExpImpl::kFirstCaptureOffset - kHeapObjectTag - kPointerSize));
+ // counts down until wrapping after zero.
+ __ AddP(r2, last_match_info_elements,
+ Operand(RegExpMatchInfo::kFirstCaptureOffset - kHeapObjectTag -
+ kPointerSize));
__ AddP(r4, Operand(-kIntSize)); // bias down for lwzu
__ bind(&next_capture);
// Read the value from the static offsets vector buffer.
@@ -1649,7 +1648,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
__ BranchOnCount(r3, &next_capture);
// Return last match info.
- __ LoadP(r2, MemOperand(sp, kLastMatchInfoOffset));
+ __ LoadRR(r2, last_match_info_elements);
__ la(sp, MemOperand(sp, (4 * kPointerSize)));
__ Ret();
« no previous file with comments | « src/runtime/runtime-strings.cc ('k') | src/x64/code-stubs-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698