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