| Index: src/x64/code-stubs-x64.cc
|
| diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc
|
| index fc080f4c4cc2fc63abbf122d7d4f4e23b903892d..3a1edf4c5e848df960b974bf7df26e70122ad131 100644
|
| --- a/src/x64/code-stubs-x64.cc
|
| +++ b/src/x64/code-stubs-x64.cc
|
| @@ -350,85 +350,6 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
| __ ret(0);
|
| }
|
|
|
| -void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| -#ifdef V8_INTERPRETED_REGEXP
|
| - // This case is handled prior to the RegExpExecStub call.
|
| - __ Abort(kUnexpectedRegExpExecCall);
|
| -#else // V8_INTERPRETED_REGEXP
|
| - // Isolates: note we add an additional parameter here (isolate pointer).
|
| - static const int kRegExpExecuteArguments = 9;
|
| - int argument_slots_on_stack =
|
| - masm->ArgumentStackSlotsForCFunctionCall(kRegExpExecuteArguments);
|
| - __ EnterApiExitFrame(argument_slots_on_stack);
|
| -
|
| - // Argument 9: Pass current isolate address.
|
| - __ LoadAddress(kScratchRegister,
|
| - ExternalReference::isolate_address(isolate()));
|
| - __ movq(Operand(rsp, (argument_slots_on_stack - 1) * kRegisterSize),
|
| - kScratchRegister);
|
| -
|
| - // Argument 8: Indicate that this is a direct call from JavaScript.
|
| - __ movq(Operand(rsp, (argument_slots_on_stack - 2) * kRegisterSize),
|
| - Immediate(1));
|
| -
|
| - // Argument 7: Start (high end) of backtracking stack memory area.
|
| - ExternalReference address_of_regexp_stack_memory_address =
|
| - ExternalReference::address_of_regexp_stack_memory_address(isolate());
|
| - ExternalReference address_of_regexp_stack_memory_size =
|
| - ExternalReference::address_of_regexp_stack_memory_size(isolate());
|
| - __ Move(kScratchRegister, address_of_regexp_stack_memory_address);
|
| - __ movp(r12, Operand(kScratchRegister, 0));
|
| - __ Move(kScratchRegister, address_of_regexp_stack_memory_size);
|
| - __ addp(r12, Operand(kScratchRegister, 0));
|
| - __ movq(Operand(rsp, (argument_slots_on_stack - 3) * kRegisterSize), r12);
|
| -
|
| - // Argument 6: Set the number of capture registers to zero to force global
|
| - // regexps to behave as non-global. This does not affect non-global regexps.
|
| - // Argument 6 is passed in r9 on Linux and on the stack on Windows.
|
| -#ifdef _WIN64
|
| - __ movq(Operand(rsp, (argument_slots_on_stack - 4) * kRegisterSize),
|
| - Immediate(0));
|
| -#else
|
| - __ Set(r9, 0);
|
| -#endif
|
| -
|
| - // Argument 5: static offsets vector buffer.
|
| - // Argument 5 passed in r8 on Linux and on the stack on Windows.
|
| -#ifdef _WIN64
|
| - __ LoadAddress(
|
| - r12, ExternalReference::address_of_static_offsets_vector(isolate()));
|
| - __ movq(Operand(rsp, (argument_slots_on_stack - 5) * kRegisterSize), r12);
|
| -#else // _WIN64
|
| - __ LoadAddress(
|
| - r8, ExternalReference::address_of_static_offsets_vector(isolate()));
|
| -#endif
|
| -
|
| - // Argument 2: Previous index.
|
| - // TODO(jgruber): Ideally, LastIndexRegister would already equal arg_reg_2,
|
| - // but that makes register allocation fail.
|
| - __ movp(arg_reg_2, RegExpExecDescriptor::LastIndexRegister());
|
| -
|
| - // Argument 4: End of string data
|
| - // Argument 3: Start of string data
|
| - CHECK(arg_reg_4.is(RegExpExecDescriptor::StringEndRegister()));
|
| - CHECK(arg_reg_3.is(RegExpExecDescriptor::StringStartRegister()));
|
| -
|
| - // Argument 1: Original subject string.
|
| - CHECK(arg_reg_1.is(RegExpExecDescriptor::StringRegister()));
|
| -
|
| - __ addp(RegExpExecDescriptor::CodeRegister(),
|
| - Immediate(Code::kHeaderSize - kHeapObjectTag));
|
| - __ call(RegExpExecDescriptor::CodeRegister());
|
| -
|
| - __ LeaveApiExitFrame(true);
|
| -
|
| - // TODO(jgruber): Don't tag return value once this is supported by stubs.
|
| - __ Integer32ToSmi(rax, rax);
|
| - __ ret(0 * kPointerSize);
|
| -#endif // V8_INTERPRETED_REGEXP
|
| -}
|
| -
|
| -
|
| static int NegativeComparisonResult(Condition cc) {
|
| DCHECK(cc != equal);
|
| DCHECK((cc == less) || (cc == less_equal)
|
|
|