Index: src/ia32/code-stubs-ia32.cc |
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
index 130311e7e18e0fbcdc63e492addff218b2cde72c..2f032448f67eee38ced64c2936e3acaa48f0269a 100644 |
--- a/src/ia32/code-stubs-ia32.cc |
+++ b/src/ia32/code-stubs-ia32.cc |
@@ -2192,12 +2192,11 @@ static void EmitLoadTypeFeedbackVector(MacroAssembler* masm, Register vector) { |
void CallIC_ArrayStub::Generate(MacroAssembler* masm) { |
// edi - function |
// edx - slot id |
+ // ebx - vector |
Label miss; |
int argc = arg_count(); |
ParameterCount actual(argc); |
- EmitLoadTypeFeedbackVector(masm, ebx); |
- |
__ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, ecx); |
__ cmp(edi, ecx); |
__ j(not_equal, &miss); |
@@ -2233,6 +2232,7 @@ void CallIC_ArrayStub::Generate(MacroAssembler* masm) { |
void CallICStub::Generate(MacroAssembler* masm) { |
// edi - function |
// edx - slot id |
+ // ebx - vector |
Isolate* isolate = masm->isolate(); |
const int with_types_offset = |
FixedArray::OffsetOfElementAt(TypeFeedbackVector::kWithTypesIndex); |
@@ -2244,8 +2244,6 @@ void CallICStub::Generate(MacroAssembler* masm) { |
int argc = arg_count(); |
ParameterCount actual(argc); |
- EmitLoadTypeFeedbackVector(masm, ebx); |
- |
// The checks. First, does edi match the recorded monomorphic target? |
__ cmp(edi, FieldOperand(ebx, edx, times_half_pointer_size, |
FixedArray::kHeaderSize)); |
@@ -4337,6 +4335,20 @@ void KeyedLoadICTrampolineStub::Generate(MacroAssembler* masm) { |
} |
+void CallICTrampolineStub::Generate(MacroAssembler* masm) { |
+ EmitLoadTypeFeedbackVector(masm, ebx); |
+ CallICStub stub(isolate(), state()); |
+ __ jmp(stub.GetCode(), RelocInfo::CODE_TARGET); |
+} |
+ |
+ |
+void CallIC_ArrayTrampolineStub::Generate(MacroAssembler* masm) { |
+ EmitLoadTypeFeedbackVector(masm, ebx); |
+ CallIC_ArrayStub stub(isolate(), state()); |
+ __ jmp(stub.GetCode(), RelocInfo::CODE_TARGET); |
+} |
+ |
+ |
void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { |
if (masm->isolate()->function_entry_hook() != NULL) { |
ProfileEntryHookStub stub(masm->isolate()); |