| 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 =
|
|
|