diff options
Diffstat (limited to 'deps/v8/src/ia32/code-stubs-ia32.cc')
-rw-r--r-- | deps/v8/src/ia32/code-stubs-ia32.cc | 80 |
1 files changed, 5 insertions, 75 deletions
diff --git a/deps/v8/src/ia32/code-stubs-ia32.cc b/deps/v8/src/ia32/code-stubs-ia32.cc index 56ce2c5213..6550d6e016 100644 --- a/deps/v8/src/ia32/code-stubs-ia32.cc +++ b/deps/v8/src/ia32/code-stubs-ia32.cc @@ -462,69 +462,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; - __ EnterApiExitFrame(kRegExpExecuteArguments); - - // Argument 9: Pass current isolate address. - __ mov(Operand(esp, 8 * kPointerSize), - Immediate(ExternalReference::isolate_address(isolate()))); - - // Argument 8: Indicate that this is a direct call from JavaScript. - __ mov(Operand(esp, 7 * kPointerSize), 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()); - __ mov(esi, Operand::StaticVariable(address_of_regexp_stack_memory_address)); - __ add(esi, Operand::StaticVariable(address_of_regexp_stack_memory_size)); - __ mov(Operand(esp, 6 * kPointerSize), esi); - - // 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. - __ mov(Operand(esp, 5 * kPointerSize), Immediate(0)); - - // Argument 5: static offsets vector buffer. - __ mov(Operand(esp, 4 * kPointerSize), - Immediate(ExternalReference::address_of_static_offsets_vector( - isolate()))); - - // Argument 4: End of string data - // Argument 3: Start of string data - __ mov(Operand(esp, 3 * kPointerSize), - RegExpExecDescriptor::StringEndRegister()); - __ mov(Operand(esp, 2 * kPointerSize), - RegExpExecDescriptor::StringStartRegister()); - - // Argument 2: Previous index. - __ mov(Operand(esp, 1 * kPointerSize), - RegExpExecDescriptor::LastIndexRegister()); - - // Argument 1: Original subject string. - __ mov(Operand(esp, 0 * kPointerSize), - RegExpExecDescriptor::StringRegister()); - - // Locate the code entry and call it. - __ add(RegExpExecDescriptor::CodeRegister(), - Immediate(Code::kHeaderSize - kHeapObjectTag)); - __ call(RegExpExecDescriptor::CodeRegister()); - - // Drop arguments and come back to JS mode. - __ LeaveApiExitFrame(true); - - // TODO(jgruber): Don't tag return value once this is supported by stubs. - __ SmiTag(eax); - __ ret(0 * kPointerSize); -#endif // V8_INTERPRETED_REGEXP -} - static int NegativeComparisonResult(Condition cc) { DCHECK(cc != equal); @@ -2843,23 +2780,16 @@ void CallApiCallbackStub::Generate(MacroAssembler* masm) { // call data __ push(call_data); - Register scratch = call_data; - if (!call_data_undefined()) { - // return value - __ push(Immediate(masm->isolate()->factory()->undefined_value())); - // return value default - __ push(Immediate(masm->isolate()->factory()->undefined_value())); - } else { - // return value - __ push(scratch); - // return value default - __ push(scratch); - } + // return value + __ push(Immediate(masm->isolate()->factory()->undefined_value())); + // return value default + __ push(Immediate(masm->isolate()->factory()->undefined_value())); // isolate __ push(Immediate(reinterpret_cast<int>(masm->isolate()))); // holder __ push(holder); + Register scratch = call_data; __ mov(scratch, esp); // push return address |