Index: src/ia32/stub-cache-ia32.cc |
diff --git a/src/ia32/stub-cache-ia32.cc b/src/ia32/stub-cache-ia32.cc |
index c9c22d2008553c5ae8cf1856824bd9bd98d86558..d5c432af80fae72c4688eac6519c2968c63dd40d 100644 |
--- a/src/ia32/stub-cache-ia32.cc |
+++ b/src/ia32/stub-cache-ia32.cc |
@@ -2671,6 +2671,9 @@ MaybeObject* KeyedStoreStubCompiler::CompileStoreFastElement( |
// -- edx : receiver |
// -- esp[0] : return address |
// ----------------------------------- |
+ Label miss; |
+ __ JumpIfSmi(edx, &miss); |
+ |
bool is_js_array = receiver_map->instance_type() == JS_ARRAY_TYPE; |
MaybeObject* maybe_stub = |
KeyedStoreFastElementStub(is_js_array).TryGetCode(); |
@@ -2681,6 +2684,7 @@ MaybeObject* KeyedStoreStubCompiler::CompileStoreFastElement( |
Handle<Code>(stub), |
DO_SMI_CHECK); |
+ __ bind(&miss); |
Handle<Code> ic = isolate()->builtins()->KeyedStoreIC_Miss(); |
__ jmp(ic, RelocInfo::CODE_TARGET); |
@@ -3133,6 +3137,9 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadFastElement(Map* receiver_map) { |
// -- edx : receiver |
// -- esp[0] : return address |
// ----------------------------------- |
+ Label miss; |
+ __ JumpIfSmi(edx, &miss); |
+ |
MaybeObject* maybe_stub = KeyedLoadFastElementStub().TryGetCode(); |
Code* stub; |
if (!maybe_stub->To(&stub)) return maybe_stub; |
@@ -3141,6 +3148,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadFastElement(Map* receiver_map) { |
Handle<Code>(stub), |
DO_SMI_CHECK); |
+ __ bind(&miss); |
GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); |
// Return the generated code. |