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

Side by Side Diff: src/regexp/mips64/regexp-macro-assembler-mips64.cc

Issue 1334793004: MIPS64: Add big-endian support for mips64. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase ToT. Created 5 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 unified diff | Download patch
« no previous file with comments | « src/mips64/simulator-mips64.cc ('k') | test/cctest/cctest.status » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #if V8_TARGET_ARCH_MIPS64 5 #if V8_TARGET_ARCH_MIPS64
6 6
7 #include "src/regexp/mips64/regexp-macro-assembler-mips64.h" 7 #include "src/regexp/mips64/regexp-macro-assembler-mips64.h"
8 8
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/log.h" 10 #include "src/log.h"
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 212
213 213
214 void RegExpMacroAssemblerMIPS::CheckCharacterGT(uc16 limit, Label* on_greater) { 214 void RegExpMacroAssemblerMIPS::CheckCharacterGT(uc16 limit, Label* on_greater) {
215 BranchOrBacktrack(on_greater, gt, current_character(), Operand(limit)); 215 BranchOrBacktrack(on_greater, gt, current_character(), Operand(limit));
216 } 216 }
217 217
218 218
219 void RegExpMacroAssemblerMIPS::CheckAtStart(Label* on_at_start) { 219 void RegExpMacroAssemblerMIPS::CheckAtStart(Label* on_at_start) {
220 Label not_at_start; 220 Label not_at_start;
221 // Did we start the match at the start of the string at all? 221 // Did we start the match at the start of the string at all?
222 __ lw(a0, MemOperand(frame_pointer(), kStartIndex)); 222 __ ld(a0, MemOperand(frame_pointer(), kStartIndex));
223 BranchOrBacktrack(&not_at_start, ne, a0, Operand(zero_reg)); 223 BranchOrBacktrack(&not_at_start, ne, a0, Operand(zero_reg));
224 224
225 // If we did, are we still at the start of the input? 225 // If we did, are we still at the start of the input?
226 __ ld(a1, MemOperand(frame_pointer(), kInputStart)); 226 __ ld(a1, MemOperand(frame_pointer(), kInputStart));
227 __ Daddu(a0, end_of_input_address(), Operand(current_input_offset())); 227 __ Daddu(a0, end_of_input_address(), Operand(current_input_offset()));
228 BranchOrBacktrack(on_at_start, eq, a0, Operand(a1)); 228 BranchOrBacktrack(on_at_start, eq, a0, Operand(a1));
229 __ bind(&not_at_start); 229 __ bind(&not_at_start);
230 } 230 }
231 231
232 232
233 void RegExpMacroAssemblerMIPS::CheckNotAtStart(Label* on_not_at_start) { 233 void RegExpMacroAssemblerMIPS::CheckNotAtStart(Label* on_not_at_start) {
234 // Did we start the match at the start of the string at all? 234 // Did we start the match at the start of the string at all?
235 __ lw(a0, MemOperand(frame_pointer(), kStartIndex)); 235 __ ld(a0, MemOperand(frame_pointer(), kStartIndex));
236 BranchOrBacktrack(on_not_at_start, ne, a0, Operand(zero_reg)); 236 BranchOrBacktrack(on_not_at_start, ne, a0, Operand(zero_reg));
237 // If we did, are we still at the start of the input? 237 // If we did, are we still at the start of the input?
238 __ ld(a1, MemOperand(frame_pointer(), kInputStart)); 238 __ ld(a1, MemOperand(frame_pointer(), kInputStart));
239 __ Daddu(a0, end_of_input_address(), Operand(current_input_offset())); 239 __ Daddu(a0, end_of_input_address(), Operand(current_input_offset()));
240 BranchOrBacktrack(on_not_at_start, ne, a0, Operand(a1)); 240 BranchOrBacktrack(on_not_at_start, ne, a0, Operand(a1));
241 } 241 }
242 242
243 243
244 void RegExpMacroAssemblerMIPS::CheckCharacterLT(uc16 limit, Label* on_less) { 244 void RegExpMacroAssemblerMIPS::CheckCharacterLT(uc16 limit, Label* on_less) {
245 BranchOrBacktrack(on_less, lt, current_character(), Operand(limit)); 245 BranchOrBacktrack(on_less, lt, current_character(), Operand(limit));
(...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 __ sw(a2, MemOperand(a0)); 772 __ sw(a2, MemOperand(a0));
773 __ Daddu(a0, a0, kIntSize); 773 __ Daddu(a0, a0, kIntSize);
774 __ sw(a3, MemOperand(a0)); 774 __ sw(a3, MemOperand(a0));
775 __ Daddu(a0, a0, kIntSize); 775 __ Daddu(a0, a0, kIntSize);
776 } 776 }
777 } 777 }
778 778
779 if (global()) { 779 if (global()) {
780 // Restart matching if the regular expression is flagged as global. 780 // Restart matching if the regular expression is flagged as global.
781 __ ld(a0, MemOperand(frame_pointer(), kSuccessfulCaptures)); 781 __ ld(a0, MemOperand(frame_pointer(), kSuccessfulCaptures));
782 __ lw(a1, MemOperand(frame_pointer(), kNumOutputRegisters)); 782 __ ld(a1, MemOperand(frame_pointer(), kNumOutputRegisters));
783 __ ld(a2, MemOperand(frame_pointer(), kRegisterOutput)); 783 __ ld(a2, MemOperand(frame_pointer(), kRegisterOutput));
784 // Increment success counter. 784 // Increment success counter.
785 __ Daddu(a0, a0, 1); 785 __ Daddu(a0, a0, 1);
786 __ sd(a0, MemOperand(frame_pointer(), kSuccessfulCaptures)); 786 __ sd(a0, MemOperand(frame_pointer(), kSuccessfulCaptures));
787 // Capture results have been stored, so the number of remaining global 787 // Capture results have been stored, so the number of remaining global
788 // output registers is reduced by the number of stored captures. 788 // output registers is reduced by the number of stored captures.
789 __ Dsubu(a1, a1, num_saved_registers_); 789 __ Dsubu(a1, a1, num_saved_registers_);
790 // Check whether we have enough room for another set of capture results. 790 // Check whether we have enough room for another set of capture results.
791 __ mov(v0, a0); 791 __ mov(v0, a0);
792 __ Branch(&return_v0, lt, a1, Operand(num_saved_registers_)); 792 __ Branch(&return_v0, lt, a1, Operand(num_saved_registers_));
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
1148 static T* frame_entry_address(Address re_frame, int frame_offset) { 1148 static T* frame_entry_address(Address re_frame, int frame_offset) {
1149 return reinterpret_cast<T*>(re_frame + frame_offset); 1149 return reinterpret_cast<T*>(re_frame + frame_offset);
1150 } 1150 }
1151 1151
1152 1152
1153 int64_t RegExpMacroAssemblerMIPS::CheckStackGuardState(Address* return_address, 1153 int64_t RegExpMacroAssemblerMIPS::CheckStackGuardState(Address* return_address,
1154 Code* re_code, 1154 Code* re_code,
1155 Address re_frame) { 1155 Address re_frame) {
1156 return NativeRegExpMacroAssembler::CheckStackGuardState( 1156 return NativeRegExpMacroAssembler::CheckStackGuardState(
1157 frame_entry<Isolate*>(re_frame, kIsolate), 1157 frame_entry<Isolate*>(re_frame, kIsolate),
1158 frame_entry<int>(re_frame, kStartIndex), 1158 static_cast<int>(frame_entry<int64_t>(re_frame, kStartIndex)),
1159 frame_entry<int>(re_frame, kDirectCall) == 1, return_address, re_code, 1159 frame_entry<int64_t>(re_frame, kDirectCall) == 1, return_address, re_code,
1160 frame_entry_address<String*>(re_frame, kInputString), 1160 frame_entry_address<String*>(re_frame, kInputString),
1161 frame_entry_address<const byte*>(re_frame, kInputStart), 1161 frame_entry_address<const byte*>(re_frame, kInputStart),
1162 frame_entry_address<const byte*>(re_frame, kInputEnd)); 1162 frame_entry_address<const byte*>(re_frame, kInputEnd));
1163 } 1163 }
1164 1164
1165 1165
1166 MemOperand RegExpMacroAssemblerMIPS::register_location(int register_index) { 1166 MemOperand RegExpMacroAssemblerMIPS::register_location(int register_index) {
1167 DCHECK(register_index < (1<<30)); 1167 DCHECK(register_index < (1<<30));
1168 if (num_registers_ <= register_index) { 1168 if (num_registers_ <= register_index) {
1169 num_registers_ = register_index + 1; 1169 num_registers_ = register_index + 1;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 } 1281 }
1282 1282
1283 #undef __ 1283 #undef __
1284 1284
1285 #endif // V8_INTERPRETED_REGEXP 1285 #endif // V8_INTERPRETED_REGEXP
1286 1286
1287 } // namespace internal 1287 } // namespace internal
1288 } // namespace v8 1288 } // namespace v8
1289 1289
1290 #endif // V8_TARGET_ARCH_MIPS64 1290 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « src/mips64/simulator-mips64.cc ('k') | test/cctest/cctest.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698