| Index: src/arm/lithium-codegen-arm.cc
 | 
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
 | 
| index 5668bcab620f73e1f8bd607451bbbf95e4cf8283..ab1e45439b7d47d7b5d2c7be1c9b11d6b0359c38 100644
 | 
| --- a/src/arm/lithium-codegen-arm.cc
 | 
| +++ b/src/arm/lithium-codegen-arm.cc
 | 
| @@ -9,6 +9,7 @@
 | 
|  #include "src/base/bits.h"
 | 
|  #include "src/code-stubs.h"
 | 
|  #include "src/hydrogen-osr.h"
 | 
| +#include "src/ic/stub-cache.h"
 | 
|  
 | 
|  namespace v8 {
 | 
|  namespace internal {
 | 
| @@ -3969,6 +3970,34 @@ void LCodeGen::DoInvokeFunction(LInvokeFunction* instr) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +void LCodeGen::DoTailCallThroughMegamorphicCache(
 | 
| +    LTailCallThroughMegamorphicCache* instr) {
 | 
| +  Register receiver = ToRegister(instr->receiver());
 | 
| +  Register name = ToRegister(instr->name());
 | 
| +  DCHECK(receiver.is(LoadDescriptor::ReceiverRegister()));
 | 
| +  DCHECK(name.is(LoadDescriptor::NameRegister()));
 | 
| +  DCHECK(receiver.is(r1));
 | 
| +  DCHECK(name.is(r2));
 | 
| +
 | 
| +  Register scratch = r3;
 | 
| +  Register extra = r4;
 | 
| +  Register extra2 = r5;
 | 
| +  Register extra3 = r6;
 | 
| +
 | 
| +  // Important for the tail-call.
 | 
| +  bool must_teardown_frame = NeedsEagerFrame();
 | 
| +
 | 
| +  // The probe will tail call to a handler if found.
 | 
| +  isolate()->stub_cache()->GenerateProbe(masm(), instr->hydrogen()->flags(),
 | 
| +                                         must_teardown_frame, receiver, name,
 | 
| +                                         scratch, extra, extra2, extra3);
 | 
| +
 | 
| +  // Tail call to miss if we ended up here.
 | 
| +  if (must_teardown_frame) __ LeaveFrame(StackFrame::INTERNAL);
 | 
| +  LoadIC::GenerateMiss(masm());
 | 
| +}
 | 
| +
 | 
| +
 | 
|  void LCodeGen::DoCallWithDescriptor(LCallWithDescriptor* instr) {
 | 
|    DCHECK(ToRegister(instr->result()).is(r0));
 | 
|  
 | 
| 
 |