Index: src/arm/builtins-arm.cc |
diff --git a/src/arm/builtins-arm.cc b/src/arm/builtins-arm.cc |
index 5f3a999f561fb183cbfcaac0dfd4de3f34f8936e..d90e31ba1f40b561eefc55189a64be3b2a20e27b 100644 |
--- a/src/arm/builtins-arm.cc |
+++ b/src/arm/builtins-arm.cc |
@@ -294,6 +294,7 @@ void Builtins::Generate_StringConstructCode(MacroAssembler* masm) { |
static void GenerateTailCallToSharedCode(MacroAssembler* masm) { |
__ ldr(r2, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); |
__ ldr(r2, FieldMemOperand(r2, SharedFunctionInfo::kCodeOffset)); |
+ __ CheckModeBit(r2); |
__ add(r2, r2, Operand(Code::kHeaderSize - kHeapObjectTag)); |
__ mov(pc, r2); |
} |
@@ -317,8 +318,6 @@ void Builtins::Generate_InstallRecompiledCode(MacroAssembler* masm) { |
// Push the function on the stack as the argument to the runtime function. |
__ push(r1); |
__ CallRuntime(Runtime::kInstallRecompiledCode, 1); |
- // Calculate the entry point. |
- __ add(r2, r0, Operand(Code::kHeaderSize - kHeapObjectTag)); |
// Restore call kind information. |
__ pop(r5); |
@@ -329,7 +328,7 @@ void Builtins::Generate_InstallRecompiledCode(MacroAssembler* masm) { |
} |
// Do a tail-call of the compiled function. |
- __ Jump(r2); |
+ __ Jump(r0); |
} |
@@ -807,8 +806,6 @@ void Builtins::Generate_LazyCompile(MacroAssembler* masm) { |
// Push the function on the stack as the argument to the runtime function. |
__ push(r1); |
__ CallRuntime(Runtime::kLazyCompile, 1); |
- // Calculate the entry point. |
- __ add(r2, r0, Operand(Code::kHeaderSize - kHeapObjectTag)); |
// Restore call kind information. |
__ pop(r5); |
@@ -819,7 +816,7 @@ void Builtins::Generate_LazyCompile(MacroAssembler* masm) { |
} |
// Do a tail-call of the compiled function. |
- __ Jump(r2); |
+ __ Jump(r0); |
} |
@@ -836,8 +833,6 @@ void Builtins::Generate_LazyRecompile(MacroAssembler* masm) { |
// Push the function on the stack as the argument to the runtime function. |
__ push(r1); |
__ CallRuntime(Runtime::kLazyRecompile, 1); |
- // Calculate the entry point. |
- __ add(r2, r0, Operand(Code::kHeaderSize - kHeapObjectTag)); |
// Restore call kind information. |
__ pop(r5); |
@@ -848,7 +843,7 @@ void Builtins::Generate_LazyRecompile(MacroAssembler* masm) { |
} |
// Do a tail-call of the compiled function. |
- __ Jump(r2); |
+ __ Jump(r0); |
} |
@@ -869,7 +864,7 @@ static void GenerateMakeCodeYoungAgainCommon(MacroAssembler* masm) { |
__ CallCFunction( |
ExternalReference::get_make_code_young_function(masm->isolate()), 1); |
__ ldm(ia_w, sp, r0.bit() | r1.bit() | fp.bit() | lr.bit()); |
- __ mov(pc, r0); |
+ __ bx(r0); |
} |
#define DEFINE_CODE_AGE_BUILTIN_GENERATOR(C) \ |