Index: src/stub-cache.cc |
diff --git a/src/stub-cache.cc b/src/stub-cache.cc |
index 9dc89c2314b55fa552558514163221455f0d09a7..b3d93f33071f558fd53d042aa41876a81fb9873e 100644 |
--- a/src/stub-cache.cc |
+++ b/src/stub-cache.cc |
@@ -134,7 +134,7 @@ Handle<Code> StubCache::FindHandler(Handle<Name> name, |
Handle<Code> StubCache::ComputeMonomorphicIC(Handle<Name> name, |
- Handle<HeapObject> object, |
+ Handle<Object> object, |
Handle<Code> handler, |
StrictModeFlag strict_mode) { |
Code::Kind kind = handler->handler_kind(); |
@@ -148,7 +148,7 @@ Handle<Code> StubCache::ComputeMonomorphicIC(Handle<Name> name, |
name, stub_holder_map, kind, strict_mode, cache_holder); |
if (!ic.is_null()) return ic; |
- Handle<Map> map(object->map()); |
+ Handle<Map> map(object->GetMarkerMap(isolate())); |
if (kind == Code::LOAD_IC) { |
LoadStubCompiler ic_compiler(isolate(), cache_holder); |
ic = ic_compiler.CompileMonomorphicIC(map, handler, name); |
@@ -1181,6 +1181,17 @@ Register StoreStubCompiler::HandlerFrontendHeader( |
} |
+bool BaseLoadStoreStubCompiler::HasHeapNumberMap(MapHandleList* receiver_maps) { |
+ for (int i = 0; i < receiver_maps->length(); ++i) { |
+ Handle<Map> map = receiver_maps->at(i); |
+ if (map.is_identical_to(isolate()->factory()->heap_number_map())) { |
+ return true; |
+ } |
+ } |
+ return false; |
+} |
+ |
+ |
Register BaseLoadStoreStubCompiler::HandlerFrontend(Handle<Object> object, |
Register object_reg, |
Handle<JSObject> holder, |