Index: src/arm/builtins-arm.cc |
diff --git a/src/arm/builtins-arm.cc b/src/arm/builtins-arm.cc |
index e2c0e89fa9242f3bbb334767b9efb1416b76dbae..e6356f1e481cd443a69357b284d8a0662f2145e8 100644 |
--- a/src/arm/builtins-arm.cc |
+++ b/src/arm/builtins-arm.cc |
@@ -861,8 +861,15 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) { |
// Get the bytecode array from the function object and load the pointer to the |
// first entry into kInterpreterBytecodeRegister. |
__ ldr(r0, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); |
+ Register debug_info = kInterpreterBytecodeArrayRegister; |
+ DCHECK(!debug_info.is(r0)); |
+ __ ldr(debug_info, FieldMemOperand(r0, SharedFunctionInfo::kDebugInfoOffset)); |
+ __ cmp(debug_info, Operand(DebugInfo::uninitialized())); |
+ // Load original bytecode array or the debug copy. |
__ ldr(kInterpreterBytecodeArrayRegister, |
- FieldMemOperand(r0, SharedFunctionInfo::kFunctionDataOffset)); |
+ FieldMemOperand(r0, SharedFunctionInfo::kFunctionDataOffset), eq); |
+ __ ldr(kInterpreterBytecodeArrayRegister, |
+ FieldMemOperand(debug_info, DebugInfo::kAbstractCodeIndex), ne); |
if (FLAG_debug_code) { |
// Check function data field is actually a BytecodeArray object. |