Index: src/x64/regexp-macro-assembler-x64.cc |
diff --git a/src/x64/regexp-macro-assembler-x64.cc b/src/x64/regexp-macro-assembler-x64.cc |
index 13a4caa3fbca8862aa3efc18fca1fde18d1727a6..cb1e029317855cbcdaf8a8b2630910b8bc0a7562 100644 |
--- a/src/x64/regexp-macro-assembler-x64.cc |
+++ b/src/x64/regexp-macro-assembler-x64.cc |
@@ -803,7 +803,7 @@ Handle<HeapObject> RegExpMacroAssemblerX64::GetCode(Handle<String> source) { |
#endif |
__ push(Immediate(0)); // Number of successful matches in a global regexp. |
- __ push(Immediate(0)); // Make room for "at start" constant. |
+ __ push(Immediate(0)); // Make room for "input start - 1" constant. |
// Check if we have space on the stack for registers. |
Label stack_limit_hit; |
@@ -872,7 +872,7 @@ Handle<HeapObject> RegExpMacroAssemblerX64::GetCode(Handle<String> source) { |
Label load_char_start_regexp, start_regexp; |
// Load newline if index is at start, previous character otherwise. |
- __ cmpb(Operand(rbp, kStartIndex), Immediate(0)); |
+ __ cmpl(Operand(rbp, kStartIndex), Immediate(0)); |
__ j(not_equal, &load_char_start_regexp, Label::kNear); |
__ Set(current_character(), '\n'); |
__ jmp(&start_regexp, Label::kNear); |
@@ -944,7 +944,7 @@ Handle<HeapObject> RegExpMacroAssemblerX64::GetCode(Handle<String> source) { |
__ incq(Operand(rbp, kSuccessfulCaptures)); |
// Capture results have been stored, so the number of remaining global |
// output registers is reduced by the number of stored captures. |
- __ movq(rcx, Operand(rbp, kNumOutputRegisters)); |
+ __ movsxlq(rcx, Operand(rbp, kNumOutputRegisters)); |
__ subq(rcx, Immediate(num_saved_registers_)); |
// Check whether we have enough room for another set of capture results. |
__ cmpq(rcx, Immediate(num_saved_registers_)); |