Chromium Code Reviews| Index: src/builtins/arm/builtins-arm.cc |
| diff --git a/src/builtins/arm/builtins-arm.cc b/src/builtins/arm/builtins-arm.cc |
| index f535ae785aa20fb89b4a73f915a19f7d8246f36c..9f12e85b80af40154ac85e433392bb4e6f86468d 100644 |
| --- a/src/builtins/arm/builtins-arm.cc |
| +++ b/src/builtins/arm/builtins-arm.cc |
| @@ -1296,7 +1296,7 @@ void Builtins::Generate_InterpreterPushArgsAndConstructArray( |
| } |
| } |
| -void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) { |
| +static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) { |
| // Set the return address to the correct point in the interpreter entry |
| // trampoline. |
| Smi* interpreter_entry_return_pc_offset( |
| @@ -1337,6 +1337,34 @@ void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) { |
| __ mov(pc, ip); |
| } |
| +void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) { |
| + // Advance the current bytecode offset stored within the given interpreter |
| + // stack frame. This simulates what all bytecode handlers do upon completion |
| + // of the underlying operation. |
| + { |
| + FrameScope scope(masm, StackFrame::MANUAL); |
|
rmcilroy
2016/11/09 14:48:29
Any reason this couldn't be a standard runtime cal
Michael Starzinger
2016/11/10 10:09:40
Done.
|
| + __ stm(db_w, sp, kCallerSaved); |
| + __ PrepareCallCFunction(2, 0, r1); |
| + __ ldr(r0, MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp)); |
| + __ ldr(r1, |
| + MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); |
| + __ SmiUntag(r1); |
| + __ CallCFunction( |
| + ExternalReference::interpreter_advance_bytecode_offset(masm->isolate()), |
| + 2); |
| + __ SmiTag(r0); |
| + __ str(r0, |
| + MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); |
| + __ ldm(ia_w, sp, kCallerSaved); |
| + } |
| + |
| + Generate_InterpreterEnterBytecode(masm); |
| +} |
| + |
| +void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) { |
| + Generate_InterpreterEnterBytecode(masm); |
| +} |
| + |
| void Builtins::Generate_CompileLazy(MacroAssembler* masm) { |
| // ----------- S t a t e ------------- |
| // -- r0 : argument count (preserved for callee) |