From 19e153948125fc74d81781a454d189c3390d18c1 Mon Sep 17 00:00:00 2001 From: "verwaest@chromium.org" Date: Tue, 29 Jan 2013 12:00:56 +0000 Subject: [PATCH] Tag previously GENERIC stubs that potentially IC_Miss as MONOMORPHIC. Review URL: https://chromiumcodereview.appspot.com/12079024 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13537 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/builtins.h | 8 ++++---- src/ic.cc | 10 ++++++---- src/type-info.cc | 3 +-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/builtins.h b/src/builtins.h index b53297a..f13865b 100644 --- a/src/builtins.h +++ b/src/builtins.h @@ -145,11 +145,11 @@ enum BuiltinExtraArguments { Code::kNoExtraICState) \ V(KeyedLoadIC_Generic, KEYED_LOAD_IC, GENERIC, \ Code::kNoExtraICState) \ - V(KeyedLoadIC_String, KEYED_LOAD_IC, GENERIC, \ + V(KeyedLoadIC_String, KEYED_LOAD_IC, MONOMORPHIC, \ Code::kNoExtraICState) \ - V(KeyedLoadIC_IndexedInterceptor, KEYED_LOAD_IC, GENERIC, \ + V(KeyedLoadIC_IndexedInterceptor, KEYED_LOAD_IC, MONOMORPHIC, \ Code::kNoExtraICState) \ - V(KeyedLoadIC_NonStrictArguments, KEYED_LOAD_IC, GENERIC, \ + V(KeyedLoadIC_NonStrictArguments, KEYED_LOAD_IC, MONOMORPHIC, \ Code::kNoExtraICState) \ \ V(StoreIC_Initialize, STORE_IC, UNINITIALIZED, \ @@ -180,7 +180,7 @@ enum BuiltinExtraArguments { kStrictMode) \ V(KeyedStoreIC_Generic_Strict, KEYED_STORE_IC, GENERIC, \ kStrictMode) \ - V(KeyedStoreIC_NonStrictArguments, KEYED_STORE_IC, GENERIC, \ + V(KeyedStoreIC_NonStrictArguments, KEYED_STORE_IC, MONOMORPHIC, \ Code::kNoExtraICState) \ V(TransitionElementsSmiToDouble, BUILTIN, UNINITIALIZED, \ Code::kNoExtraICState) \ diff --git a/src/ic.cc b/src/ic.cc index 23a5a7e..cd9095b 100644 --- a/src/ic.cc +++ b/src/ic.cc @@ -989,9 +989,11 @@ void IC::PatchCache(State state, ? *generic_stub_strict() : *generic_stub()); break; - case GENERIC: case DEBUG_STUB: break; + case GENERIC: + UNREACHABLE(); + break; } } @@ -1154,11 +1156,11 @@ static void GetReceiverMapsForStub(Handle stub, break; } case MEGAMORPHIC: - case GENERIC: break; case UNINITIALIZED: case PREMONOMORPHIC: case MONOMORPHIC_PROTOTYPE_FAILURE: + case GENERIC: case DEBUG_STUB: UNREACHABLE(); break; @@ -1208,7 +1210,7 @@ Handle KeyedLoadIC::LoadElementStub(Handle receiver) { return isolate()->stub_cache()->ComputeKeyedLoadElement(receiver_map); } - ASSERT(target() != *generic_stub()); + ASSERT(ic_state != GENERIC); // Determine the list of receiver maps that this call site has seen, // adding the map that was just encountered. @@ -1590,7 +1592,7 @@ Handle KeyedStoreIC::StoreElementStub(Handle receiver, monomorphic_map, stub_kind, strict_mode, grow_mode); } - ASSERT(target() != *generic_stub() && target() != *generic_stub_strict()); + ASSERT(ic_state != GENERIC); bool map_added = AddOneReceiverMapIfMissing(&target_receiver_maps, receiver_map); diff --git a/src/type-info.cc b/src/type-info.cc index fb0f45a..80d3434 100644 --- a/src/type-info.cc +++ b/src/type-info.cc @@ -493,8 +493,7 @@ void TypeFeedbackOracle::CollectReceiverTypes(TypeFeedbackId ast_id, Handle object = GetInfo(ast_id); if (object->IsUndefined() || object->IsSmi()) return; - if (*object == - isolate_->builtins()->builtin(Builtins::kStoreIC_GlobalProxy)) { + if (object.is_identical_to(isolate_->builtins()->StoreIC_GlobalProxy())) { // TODO(fschneider): We could collect the maps and signal that // we need a generic store (or load) here. ASSERT(Handle::cast(object)->ic_state() == GENERIC); -- 2.7.4