Index: src/ia32/code-stubs-ia32.cc |
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
index 83613ccc86a041c8a360232cacee3c76eee09698..5361d9bac3ec32cfb48e3315d06a33a3b97c32f5 100644 |
--- a/src/ia32/code-stubs-ia32.cc |
+++ b/src/ia32/code-stubs-ia32.cc |
@@ -137,6 +137,18 @@ void KeyedLoadFieldStub::InitializeInterfaceDescriptor( |
} |
+void KeyedArrayCallStub::InitializeInterfaceDescriptor( |
+ Isolate* isolate, |
+ CodeStubInterfaceDescriptor* descriptor) { |
+ static Register registers[] = { ecx }; |
+ descriptor->register_param_count_ = 1; |
+ descriptor->register_params_ = registers; |
+ descriptor->call_stub_ = true; |
+ descriptor->deoptimization_handler_ = |
+ FUNCTION_ADDR(KeyedCallIC_MissFromStubFailure); |
+} |
+ |
+ |
void KeyedStoreFastElementStub::InitializeInterfaceDescriptor( |
Isolate* isolate, |
CodeStubInterfaceDescriptor* descriptor) { |
@@ -4357,6 +4369,11 @@ void CodeStub::GenerateStubsAheadOfTime(Isolate* isolate) { |
} |
+void CodeStub::GenerateStubsRequiringBuiltinsAheadOfTime(Isolate* isolate) { |
+ CallStubFailureTrampolineStub::GenerateAheadOfTime(isolate); |
+} |
+ |
+ |
void CodeStub::GenerateFPStubs(Isolate* isolate) { |
if (CpuFeatures::IsSupported(SSE2)) { |
CEntryStub save_doubles(1, kSaveFPRegs); |
@@ -7087,6 +7104,23 @@ void StubFailureTrampolineStub::Generate(MacroAssembler* masm) { |
} |
+void CallStubFailureTrampolineStub::Generate(MacroAssembler* masm) { |
+ CEntryStub ces(1, fp_registers_ ? kSaveFPRegs : kDontSaveFPRegs); |
+ __ call(ces.GetCode(masm->isolate()), RelocInfo::CODE_TARGET); |
+ __ mov(edi, eax); |
+ int parameter_count_offset = |
+ StubFailureTrampolineFrame::kCallerStackParameterCountFrameOffset; |
+ __ mov(eax, MemOperand(ebp, parameter_count_offset)); |
+ masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE); |
+ ParameterCount argument_count(eax); |
+ __ InvokeFunction(edi, |
+ argument_count, |
+ JUMP_FUNCTION, |
+ NullCallWrapper(), |
+ CALL_AS_METHOD); |
+} |
+ |
+ |
void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { |
if (masm->isolate()->function_entry_hook() != NULL) { |
// It's always safe to call the entry hook stub, as the hook itself |