Index: src/regexp-macro-assembler-ia32.cc |
=================================================================== |
--- src/regexp-macro-assembler-ia32.cc (revision 930) |
+++ src/regexp-macro-assembler-ia32.cc (working copy) |
@@ -150,7 +150,7 @@ |
__ movzx_b(ebx, Operand(ecx, ebx, times_1, 0)); |
__ and_(eax, (1<<3)-1); |
__ bt(Operand(ebx), eax); |
- __ j(carry, on_zero); |
+ BranchOrBacktrack(carry, on_zero); |
} |
@@ -203,7 +203,7 @@ |
__ cmpw(Operand(esi, edi, times_1, byte_offset + i * sizeof(uc16)), |
Immediate(str[i])); |
} |
- __ j(not_equal, on_failure); |
+ BranchOrBacktrack(not_equal, on_failure); |
} |
return; |
} |
@@ -574,7 +574,7 @@ |
void RegExpMacroAssemblerIA32::GoTo(Label* to) { |
- __ jmp(to); |
+ BranchOrBacktrack(no_condition, to); |
} |
@@ -662,7 +662,12 @@ |
if (cp_offset == 0) { |
__ mov(register_location(reg), edi); |
} else { |
- __ lea(eax, Operand(edi, cp_offset)); |
+ if (mode_ == ASCII) { |
+ __ lea(eax, Operand(edi, cp_offset)); |
Lasse Reichstein
2008/12/08 10:25:44
You can use char_size() to generalize code that on
|
+ } else { |
+ ASSERT(mode_ == UC16); |
+ __ lea(eax, Operand(edi, 2 * cp_offset)); |
+ } |
__ mov(register_location(reg), eax); |
} |
} |