Index: src/ia32/ic-ia32.cc |
=================================================================== |
--- src/ia32/ic-ia32.cc (revision 3095) |
+++ src/ia32/ic-ia32.cc (working copy) |
@@ -301,7 +301,7 @@ |
// Slow case: Load name and receiver from stack and jump to runtime. |
__ bind(&slow); |
__ IncrementCounter(&Counters::keyed_load_generic_slow, 1); |
- KeyedLoadIC::Generate(masm, ExternalReference(Runtime::kKeyedGetProperty)); |
+ Generate(masm, ExternalReference(Runtime::kKeyedGetProperty)); |
__ bind(&check_string); |
// The key is not a smi. |
@@ -342,6 +342,12 @@ |
} |
+void KeyedLoadIC::GenerateExternalArray(MacroAssembler* masm, |
+ ExternalArrayType array_type) { |
+ GenerateGeneric(masm); |
+} |
+ |
+ |
void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm) { |
// ----------- S t a t e ------------- |
// -- eax : value |
@@ -395,15 +401,9 @@ |
// ebx: index (as a smi) |
__ j(below, &fast, taken); |
- // Slow case: Push extra copies of the arguments (3). |
+ // Slow case: call runtime. |
__ bind(&slow); |
- __ pop(ecx); |
- __ push(Operand(esp, 1 * kPointerSize)); |
- __ push(Operand(esp, 1 * kPointerSize)); |
- __ push(eax); |
- __ push(ecx); |
- // Do tail-call to runtime routine. |
- __ TailCallRuntime(ExternalReference(Runtime::kSetProperty), 3, 1); |
+ Generate(masm, ExternalReference(Runtime::kSetProperty)); |
// Check whether the elements is a pixel array. |
// eax: value |
@@ -485,6 +485,12 @@ |
} |
+void KeyedStoreIC::GenerateExternalArray(MacroAssembler* masm, |
+ ExternalArrayType array_type) { |
+ GenerateGeneric(masm); |
+} |
+ |
+ |
// Defined in ic.cc. |
Object* CallIC_Miss(Arguments args); |