Index: src/mips64/code-stubs-mips64.cc |
diff --git a/src/mips64/code-stubs-mips64.cc b/src/mips64/code-stubs-mips64.cc |
index 9ae9102914cfa668ba70ebaddac6d221be587698..9976af16743c1c8030f7447ab6b474d32d13bd9f 100644 |
--- a/src/mips64/code-stubs-mips64.cc |
+++ b/src/mips64/code-stubs-mips64.cc |
@@ -1894,6 +1894,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 |