Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index 9f0e253cd1cd7160dd064f082e6b8452aeebaaba..d879f29af1604c02963aefbef5f5fe9475251dff 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -1785,6 +1785,32 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) { |
} |
+void LoadIndexedInterceptorStub::Generate(MacroAssembler* masm) { |
+ // Return address is in lr. |
+ Label slow; |
+ |
+ Register receiver = LoadDescriptor::ReceiverRegister(); |
+ Register key = LoadDescriptor::NameRegister(); |
+ |
+ // Check that the key is an array index, that is Uint32. |
+ __ NonNegativeSmiTst(key); |
+ __ b(ne, &slow); |
+ |
+ // Everything is fine, call runtime. |
+ __ Push(receiver, key); // Receiver, key. |
+ |
+ // Perform tail call to the entry. |
+ __ TailCallExternalReference( |
+ ExternalReference(IC_Utility(IC::kLoadElementWithInterceptor), |
+ masm->isolate()), |
+ 2, 1); |
+ |
+ __ bind(&slow); |
+ PropertyAccessCompiler::TailCallBuiltin( |
+ masm, PropertyAccessCompiler::MissBuiltin(Code::KEYED_LOAD_IC)); |
+} |
+ |
+ |
void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) { |
// sp[0] : number of parameters |
// sp[4] : receiver displacement |