Revision: 11206
Author:   [email protected]
Date:     Mon Apr  2 04:27:37 2012
Log: MIPS: RegExp: Add support for table-based character class code generation. This is a commit of http://codereview.chromium.org/9968032/ for Daniel Kalmar
http://code.google.com/p/v8/source/detail?r=11206

Modified:
 /branches/bleeding_edge/src/mips/regexp-macro-assembler-mips.cc

=======================================
--- /branches/bleeding_edge/src/mips/regexp-macro-assembler-mips.cc Wed Mar 21 07:29:14 2012 +++ /branches/bleeding_edge/src/mips/regexp-macro-assembler-mips.cc Mon Apr 2 04:27:37 2012
@@ -480,6 +480,42 @@
     Label* on_not_equal) {
   UNIMPLEMENTED_MIPS();
 }
+
+
+void RegExpMacroAssemblerMIPS::CheckCharacterInRange(
+    uc16 from,
+    uc16 to,
+    Label* on_in_range) {
+  __ Subu(a0, current_character(), Operand(from));
+  // Unsigned lower-or-same condition.
+  BranchOrBacktrack(on_in_range, ls, a0, Operand(to - from));
+}
+
+
+void RegExpMacroAssemblerMIPS::CheckCharacterNotInRange(
+    uc16 from,
+    uc16 to,
+    Label* on_not_in_range) {
+  __ Subu(a0, current_character(), Operand(from));
+  // Unsigned higher condition.
+  BranchOrBacktrack(on_not_in_range, hi, a0, Operand(to - from));
+}
+
+
+void RegExpMacroAssemblerMIPS::CheckBitInTable(
+    Handle<ByteArray> table,
+    Label* on_bit_set) {
+  __ li(a0, Operand(table));
+  if (mode_ != ASCII || kTableMask != String::kMaxAsciiCharCode) {
+    __ And(a1, current_character(), Operand(kTableSize - 1));
+    __ Addu(a0, a0, a1);
+  } else {
+    __ Addu(a0, a0, current_character());
+  }
+
+  __ lbu(a0, MemOperand(a0, ByteArray::kHeaderSize - kHeapObjectTag));
+  BranchOrBacktrack(on_bit_set, ne, a0, Operand(zero_reg));
+}


 bool RegExpMacroAssemblerMIPS::CheckSpecialCharacterClass(uc16 type,

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to