Index: src/regexp-macro-assembler.h |
=================================================================== |
--- src/regexp-macro-assembler.h (revision 11134) |
+++ src/regexp-macro-assembler.h (working copy) |
@@ -45,6 +45,11 @@ |
static const int kMaxRegister = (1 << 16) - 1; |
static const int kMaxCPOffset = (1 << 15) - 1; |
static const int kMinCPOffset = -(1 << 15); |
+ |
+ static const int kTableSizeBits = 7; |
+ static const int kTableSize = 1 << kTableSizeBits; |
+ static const int kTableMask = kTableSize - 1; |
+ |
enum IrregexpImplementation { |
kIA32Implementation, |
kARMImplementation, |
@@ -106,12 +111,23 @@ |
virtual void CheckNotCharacterAfterAnd(unsigned c, |
unsigned and_with, |
Label* on_not_equal) = 0; |
- // Subtract a constant from the current character, then or with the given |
+ // Subtract a constant from the current character, then and with the given |
// constant and then check for a match with c. |
virtual void CheckNotCharacterAfterMinusAnd(uc16 c, |
uc16 minus, |
uc16 and_with, |
Label* on_not_equal) = 0; |
+ virtual void CheckCharacterInRange(uc16 from, |
+ uc16 to, // Both inclusive. |
+ Label* on_in_range) = 0; |
+ virtual void CheckCharacterNotInRange(uc16 from, |
+ uc16 to, // Both inclusive. |
+ Label* on_not_in_range) = 0; |
+ |
+ // The current character (modulus the kTableSize) is looked up in the byte |
+ // array, and if the found byte is non-zero, we jump to the on_bit_set label. |
+ virtual void CheckBitInTable(Handle<ByteArray> table, Label* on_bit_set) = 0; |
+ |
virtual void CheckNotRegistersEqual(int reg1, |
int reg2, |
Label* on_not_equal) = 0; |