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
-~----------~----~----~----~------~----~------~--~---

Reply via email to