diff options
author | Leon Clarke <leonclarke@google.com> | 2010-01-19 14:06:41 +0000 |
---|---|---|
committer | Leon Clarke <leonclarke@google.com> | 2010-01-19 16:34:04 +0000 |
commit | e46be819fca9468a0cd4e74859ce0f778eb8ca60 (patch) | |
tree | f9c37105a3367f2ad5d31fbc2cb37b84fa67b59a /src/regexp-macro-assembler.cc | |
parent | d0582a6c46733687d045e4188a1bcd0123c758a1 (diff) | |
download | android_external_v8-e46be819fca9468a0cd4e74859ce0f778eb8ca60.tar.gz android_external_v8-e46be819fca9468a0cd4e74859ce0f778eb8ca60.tar.bz2 android_external_v8-e46be819fca9468a0cd4e74859ce0f778eb8ca60.zip |
New version of v8 from bleeding edge at revision 3649
Diffstat (limited to 'src/regexp-macro-assembler.cc')
-rw-r--r-- | src/regexp-macro-assembler.cc | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/src/regexp-macro-assembler.cc b/src/regexp-macro-assembler.cc index 9ae19d72..3685fcd3 100644 --- a/src/regexp-macro-assembler.cc +++ b/src/regexp-macro-assembler.cc @@ -143,17 +143,6 @@ NativeRegExpMacroAssembler::Result NativeRegExpMacroAssembler::Match( input_end, offsets_vector, previous_index == 0); - - if (res == SUCCESS) { - // Capture values are relative to start_offset only. - // Convert them to be relative to start of string. - for (int i = 0; i < offsets_vector_length; i++) { - if (offsets_vector[i] >= 0) { - offsets_vector[i] += previous_index; - } - } - } - return res; } @@ -167,7 +156,7 @@ NativeRegExpMacroAssembler::Result NativeRegExpMacroAssembler::Execute( int* output, bool at_start) { typedef int (*matcher)(String*, int, const byte*, - const byte*, int*, int, Address); + const byte*, int*, int, Address, int); matcher matcher_func = FUNCTION_CAST<matcher>(code->entry()); int at_start_val = at_start ? 1 : 0; @@ -176,6 +165,7 @@ NativeRegExpMacroAssembler::Result NativeRegExpMacroAssembler::Execute( RegExpStack stack; Address stack_base = RegExpStack::stack_base(); + int direct_call = 0; int result = CALL_GENERATED_REGEXP_CODE(matcher_func, input, start_offset, @@ -183,7 +173,8 @@ NativeRegExpMacroAssembler::Result NativeRegExpMacroAssembler::Execute( input_end, output, at_start_val, - stack_base); + stack_base, + direct_call); ASSERT(result <= SUCCESS); ASSERT(result >= RETRY); @@ -198,6 +189,30 @@ NativeRegExpMacroAssembler::Result NativeRegExpMacroAssembler::Execute( static unibrow::Mapping<unibrow::Ecma262Canonicalize> canonicalize; + +byte NativeRegExpMacroAssembler::word_character_map[] = { + 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, + 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, + 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, + 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, + + 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, + 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, + 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, // '0' - '7' + 0xffu, 0xffu, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, // '8' - '9' + + 0x00u, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, // 'A' - 'G' + 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, // 'H' - 'O' + 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, // 'P' - 'W' + 0xffu, 0xffu, 0xffu, 0x00u, 0x00u, 0x00u, 0x00u, 0xffu, // 'X' - 'Z', '_' + + 0x00u, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, // 'a' - 'g' + 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, // 'h' - 'o' + 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, 0xffu, // 'p' - 'w' + 0xffu, 0xffu, 0xffu, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, // 'x' - 'z' +}; + + int NativeRegExpMacroAssembler::CaseInsensitiveCompareUC16( Address byte_offset1, Address byte_offset2, |