Index: src/x64/stub-cache-x64.cc |
diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc |
index 143d8d8697ee19b159837b8c2896e2b0c4e80eb4..71ea4ee34bad750a636507f2acedfde5d1b3409e 100644 |
--- a/src/x64/stub-cache-x64.cc |
+++ b/src/x64/stub-cache-x64.cc |
@@ -2501,6 +2501,9 @@ MaybeObject* KeyedStoreStubCompiler::CompileStoreFastElement( |
// -- rdx : receiver |
// -- rsp[0] : return address |
// ----------------------------------- |
+ Label miss; |
+ __ JumpIfSmi(rdx, &miss); |
+ |
bool is_js_array = receiver_map->instance_type() == JS_ARRAY_TYPE; |
MaybeObject* maybe_stub = |
KeyedStoreFastElementStub(is_js_array).TryGetCode(); |
@@ -2511,6 +2514,7 @@ MaybeObject* KeyedStoreStubCompiler::CompileStoreFastElement( |
Handle<Code>(stub), |
DO_SMI_CHECK); |
+ __ bind(&miss); |
Handle<Code> ic = isolate()->builtins()->KeyedStoreIC_Miss(); |
__ jmp(ic, RelocInfo::CODE_TARGET); |
@@ -2959,6 +2963,9 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadFastElement(Map* receiver_map) { |
// -- rdx : receiver |
// -- rsp[0] : return address |
// ----------------------------------- |
+ Label miss; |
+ __ JumpIfSmi(rdx, &miss); |
+ |
MaybeObject* maybe_stub = KeyedLoadFastElementStub().TryGetCode(); |
Code* stub; |
if (!maybe_stub->To(&stub)) return maybe_stub; |
@@ -2967,6 +2974,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadFastElement(Map* receiver_map) { |
Handle<Code>(stub), |
DO_SMI_CHECK); |
+ __ bind(&miss); |
Handle<Code> ic = isolate()->builtins()->KeyedLoadIC_Miss(); |
__ jmp(ic, RelocInfo::CODE_TARGET); |