Reviewers: Lasse Reichstein, Description: Fix crash-bug in code generation for case independent 16 bit backreferences.
Please review this at http://codereview.chromium.org/21042 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/regexp-macro-assembler-ia32.cc M test/mjsunit/mjsunit.status Index: test/mjsunit/mjsunit.status =================================================================== --- test/mjsunit/mjsunit.status (revision 1201) +++ test/mjsunit/mjsunit.status (working copy) @@ -34,14 +34,6 @@ # too long to run in debug mode on ARM. fuzz-natives: PASS, SKIP if ($mode == release || $arch == arm) -# This test features unsupported by JSCRE. Change to PASS when -# no longer using JSCRE. -regexp-UC16: PASS || FAIL - -# These tests pass with irregexp but fail with jscre -regress/regress-176: PASS || FAIL -regexp-loop-capture: PASS || FAIL - [ $arch == arm ] # Slow tests which times out in debug mode. Index: src/regexp-macro-assembler-ia32.cc =================================================================== --- src/regexp-macro-assembler-ia32.cc (revision 1201) +++ src/regexp-macro-assembler-ia32.cc (working copy) @@ -277,7 +277,7 @@ // Save register contents to make the registers available below. __ push(edi); __ push(backtrack_stackpointer()); - // After this, the eax, ebx, ecx, edx and edi registers are available. + // After this, the eax, ecx, and edi registers are available. __ add(edx, Operand(esi)); // Start of capture __ add(edi, Operand(esi)); // Start of text to match against capture. @@ -348,9 +348,9 @@ __ add(edi, Operand(ecx)); __ mov(Operand(esp, 2 * kPointerSize), edi); // Set byte_offset1. - // Start of capture, where eax already holds string-end negative offset. - __ add(eax, Operand(ecx)); - __ mov(Operand(esp, 1 * kPointerSize), eax); + // Start of capture, where edx already holds string-end negative offset. + __ add(edx, Operand(ecx)); + __ mov(Operand(esp, 1 * kPointerSize), edx); // Set buffer. Original String** parameter to regexp code. __ mov(eax, Operand(ebp, kInputBuffer)); __ mov(Operand(esp, 0 * kPointerSize), eax); @@ -979,7 +979,6 @@ static unibrow::Mapping<unibrow::Ecma262Canonicalize> canonicalize; - RegExpMacroAssemblerIA32::Result RegExpMacroAssemblerIA32::Execute( Code* code, Address* input, --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
