| Index: src/builtins/mips64/builtins-mips64.cc | 
| diff --git a/src/builtins/mips64/builtins-mips64.cc b/src/builtins/mips64/builtins-mips64.cc | 
| index cbdb5c32505aef75566fa90d205a330213d971cf..8cb44b3c52403add1ad54cb762de2e96d5222d16 100644 | 
| --- a/src/builtins/mips64/builtins-mips64.cc | 
| +++ b/src/builtins/mips64/builtins-mips64.cc | 
| @@ -1850,6 +1850,16 @@ void Builtins::Generate_DatePrototype_GetField(MacroAssembler* masm, | 
| __ Move(a0, Smi::FromInt(0)); | 
| __ EnterBuiltinFrame(cp, a1, a0); | 
| __ CallRuntime(Runtime::kThrowNotDateError); | 
| + | 
| +    // It's far from obvious, but this final trailing instruction after the call | 
| +    // is required for StackFrame::LookupCode to work correctly. To illustrate | 
| +    // why: if call were the final instruction in the code object, then the pc | 
| +    // (== return address) would point beyond the code object when the stack is | 
| +    // traversed. When we then try to look up the code object through | 
| +    // StackFrame::LookupCode, we actually return the next code object that | 
| +    // happens to be on the same page in memory. | 
| +    // TODO(jgruber): A proper fix for this would be nice. | 
| +    __ nop(); | 
| } | 
| } | 
|  | 
|  |