diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc index f846ca27a9..86595331ab 100644 --- a/src/x64/ic-x64.cc +++ b/src/x64/ic-x64.cc @@ -606,9 +606,22 @@ void LoadIC::Generate(MacroAssembler* masm, ExternalReference const& f) { 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::GenerateNormal(MacroAssembler* masm) { 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 = diff --git a/test/cctest/cctest.status b/test/cctest/cctest.status index 982b480741..9abe408948 100644 --- a/test/cctest/cctest.status +++ b/test/cctest/cctest.status @@ -113,9 +113,6 @@ test-debug/DebuggerUnload: CRASH || FAIL test-debug/DebuggerHostDispatch: CRASH || FAIL test-debug/DebugBreakInMessageHandler: CRASH || FAIL test-debug/NoDebugBreakInAfterCompileMessageHandler: CRASH || FAIL -test-api/HugeConsStringOutOfMemory: CRASH || FAIL -test-api/OutOfMemory: CRASH || FAIL -test-api/OutOfMemoryNested: CRASH || FAIL test-api/Threading: CRASH || FAIL test-api/Threading2: PASS || TIMEOUT test-api/TryCatchSourceInfo: CRASH || FAIL diff --git a/test/mozilla/mozilla.status b/test/mozilla/mozilla.status index 99e34cfb77..d427e8901b 100644 --- a/test/mozilla/mozilla.status +++ b/test/mozilla/mozilla.status @@ -815,10 +815,9 @@ js1_5/Regress/regress-303213: PASS || CRASH js1_5/extensions/regress-336410-2: CRASH js1_5/extensions/regress-336410-1: CRASH js1_5/Function/regress-338001: FAIL || CRASH -js1_5/Array/regress-350256-01: FAIL js1_5/extensions/regress-371636: CRASH # The following failures were added when remembered sets were enabled. -js1_5/GC/regress-203278-2: FAIL || PASS +js1_5/GC/regress-203278-2: FAIL || PASS || CRASH js1_5/GC/regress-203278-3: FAIL || PASS js1_5/Regress/regress-280769-3: FAIL || PASS js1_5/Regress/regress-280769-4: CRASH || TIMEOUT @@ -828,3 +827,4 @@ js1_5/Regress/regress-366601: FAIL js1_5/Regress/regress-367561-03: CRASH js1_5/Regress/regress-367561-01: CRASH || PASS ecma/Expressions/11.7.2: CRASH +