Index: src/mips/code-stubs-mips.cc |
diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc |
index 0c88d794e37ba8d92eedc185c81f098e6b213cdb..0154508dc8f90398c971488e1b8e9fc4e4a1bc93 100644 |
--- a/src/mips/code-stubs-mips.cc |
+++ b/src/mips/code-stubs-mips.cc |
@@ -1896,6 +1896,32 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) { |
} |
+void LoadIndexedInterceptorStub::Generate(MacroAssembler* masm) { |
+ // Return address is in ra. |
+ Label slow; |
+ |
+ Register receiver = LoadDescriptor::ReceiverRegister(); |
+ Register key = LoadDescriptor::NameRegister(); |
+ |
+ // Check that the key is an array index, that is Uint32. |
+ __ And(t0, key, Operand(kSmiTagMask | kSmiSignMask)); |
+ __ Branch(&slow, ne, t0, Operand(zero_reg)); |
+ |
+ // 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 |