Index: src/x64/ic-x64.cc |
=================================================================== |
--- src/x64/ic-x64.cc (revision 2618) |
+++ src/x64/ic-x64.cc (working copy) |
@@ -606,9 +606,22 @@ |
void LoadIC::GenerateArrayLength(MacroAssembler* masm) { |
- Generate(masm, ExternalReference(IC_Utility(kLoadIC_Miss))); |
+ // ----------- S t a t e ------------- |
+ // -- rcx : name |
+ // -- rsp[0] : return address |
+ // -- rsp[8] : receiver |
+ // ----------------------------------- |
+ |
+ Label miss; |
+ |
+ __ movq(rax, Operand(rsp, kPointerSize)); |
+ |
+ StubCompiler::GenerateLoadArrayLength(masm, rax, rdx, &miss); |
+ __ bind(&miss); |
+ StubCompiler::GenerateLoadMiss(masm, Code::LOAD_IC); |
} |
+ |
void LoadIC::GenerateFunctionPrototype(MacroAssembler* masm) { |
Generate(masm, ExternalReference(IC_Utility(kLoadIC_Miss))); |
} |
@@ -650,10 +663,23 @@ |
void LoadIC::GenerateStringLength(MacroAssembler* masm) { |
- Generate(masm, ExternalReference(IC_Utility(kLoadIC_Miss))); |
+ // ----------- S t a t e ------------- |
+ // -- rcx : name |
+ // -- rsp[0] : return address |
+ // -- rsp[8] : receiver |
+ // ----------------------------------- |
+ |
+ Label miss; |
+ |
+ __ movq(rax, Operand(rsp, kPointerSize)); |
+ |
+ StubCompiler::GenerateLoadStringLength(masm, rax, rdx, &miss); |
+ __ bind(&miss); |
+ StubCompiler::GenerateLoadMiss(masm, Code::LOAD_IC); |
} |
+ |
bool LoadIC::PatchInlinedLoad(Address address, Object* map, int offset) { |
// The address of the instruction following the call. |
Address test_instruction_address = |