Fix crash-bug in code generation for case independent 16 bit backreferences.
authorerik.corry@gmail.com <erik.corry@gmail.com@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 4 Feb 2009 12:20:27 +0000 (12:20 +0000)
committererik.corry@gmail.com <erik.corry@gmail.com@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 4 Feb 2009 12:20:27 +0000 (12:20 +0000)
Review URL: http://codereview.chromium.org/21042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1224 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/regexp-macro-assembler-ia32.cc
test/mjsunit/mjsunit.status

index c5380b3e7374f697f2192da89a5a2870608e1361..8159f59c0db43d69c132bd0afbe56c6899f8eafc 100644 (file)
@@ -277,7 +277,7 @@ void RegExpMacroAssemblerIA32::CheckNotBackReferenceIgnoreCase(
     // 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 @@ void RegExpMacroAssemblerIA32::CheckNotBackReferenceIgnoreCase(
     __ 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 @@ void RegExpMacroAssemblerIA32::WriteStackPointerToRegister(int reg) {
 
 static unibrow::Mapping<unibrow::Ecma262Canonicalize> canonicalize;
 
-
 RegExpMacroAssemblerIA32::Result RegExpMacroAssemblerIA32::Execute(
     Code* code,
     Address* input,
index 27dfc1491e1fb6b27bd65f76bc39130aca5f0ec2..090208e863f208439f11a15d731cc25b7a031c23 100644 (file)
@@ -34,14 +34,6 @@ bugs: FAIL
 # 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.