| Index: src/ic/ic-compiler.cc
|
| diff --git a/src/ic/ic-compiler.cc b/src/ic/ic-compiler.cc
|
| index 20e4fedc23bc4b7e3bba26c87c3da5fd40e5f428..ae4b2a5d58c9ab80e4793adee894de68a8659624 100644
|
| --- a/src/ic/ic-compiler.cc
|
| +++ b/src/ic/ic-compiler.cc
|
| @@ -33,60 +33,6 @@ bool PropertyICCompiler::IncludesNumberMap(MapHandleList* maps) {
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::CompileMonomorphic(Handle<Map> map,
|
| - Handle<Code> handler,
|
| - Handle<Name> name,
|
| - IcCheckType check) {
|
| - MapHandleList maps(1);
|
| - CodeHandleList handlers(1);
|
| - maps.Add(map);
|
| - handlers.Add(handler);
|
| - Code::StubType stub_type = handler->type();
|
| - return CompilePolymorphic(&maps, &handlers, name, stub_type, check);
|
| -}
|
| -
|
| -
|
| -Handle<Code> PropertyICCompiler::ComputeMonomorphic(
|
| - Code::Kind kind, Handle<Name> name, Handle<Map> map, Handle<Code> handler,
|
| - ExtraICState extra_ic_state) {
|
| - Isolate* isolate = name->GetIsolate();
|
| - if (handler.is_identical_to(isolate->builtins()->LoadIC_Normal()) ||
|
| - handler.is_identical_to(isolate->builtins()->LoadIC_Normal_Strong()) ||
|
| - handler.is_identical_to(isolate->builtins()->StoreIC_Normal())) {
|
| - name = isolate->factory()->normal_ic_symbol();
|
| - }
|
| -
|
| - CacheHolderFlag flag;
|
| - Handle<Map> stub_holder = IC::GetICCacheHolder(map, isolate, &flag);
|
| - if (kind == Code::KEYED_STORE_IC) {
|
| - // Always set the "property" bit.
|
| - extra_ic_state =
|
| - KeyedStoreIC::IcCheckTypeField::update(extra_ic_state, PROPERTY);
|
| - DCHECK(STANDARD_STORE ==
|
| - KeyedStoreIC::GetKeyedAccessStoreMode(extra_ic_state));
|
| - } else if (kind == Code::KEYED_LOAD_IC) {
|
| - extra_ic_state = KeyedLoadIC::IcCheckTypeField::update(extra_ic_state,
|
| - PROPERTY);
|
| - }
|
| -
|
| - Handle<Code> ic;
|
| - // There are multiple string maps that all use the same prototype. That
|
| - // prototype cannot hold multiple handlers, one for each of the string maps,
|
| - // for a single name. Hence, turn off caching of the IC.
|
| - bool can_be_cached = map->instance_type() >= FIRST_NONSTRING_TYPE;
|
| - if (can_be_cached) {
|
| - ic = Find(name, stub_holder, kind, extra_ic_state, flag);
|
| - if (!ic.is_null()) return ic;
|
| - }
|
| -
|
| - PropertyICCompiler ic_compiler(isolate, kind, extra_ic_state, flag);
|
| - ic = ic_compiler.CompileMonomorphic(map, handler, name, PROPERTY);
|
| -
|
| - if (can_be_cached) Map::UpdateCodeCache(stub_holder, name, ic);
|
| - return ic;
|
| -}
|
| -
|
| -
|
| Handle<Code> PropertyICCompiler::ComputeKeyedLoadMonomorphicHandler(
|
| Handle<Map> receiver_map, ExtraICState extra_ic_state) {
|
| Isolate* isolate = receiver_map->GetIsolate();
|
| @@ -138,35 +84,6 @@ Handle<Code> PropertyICCompiler::ComputeKeyedStoreMonomorphicHandler(
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::ComputeKeyedStoreMonomorphic(
|
| - Handle<Map> receiver_map, LanguageMode language_mode,
|
| - KeyedAccessStoreMode store_mode) {
|
| - Isolate* isolate = receiver_map->GetIsolate();
|
| - ExtraICState extra_state =
|
| - KeyedStoreIC::ComputeExtraICState(language_mode, store_mode);
|
| - Code::Flags flags =
|
| - Code::ComputeMonomorphicFlags(Code::KEYED_STORE_IC, extra_state);
|
| -
|
| - DCHECK(store_mode == STANDARD_STORE ||
|
| - store_mode == STORE_AND_GROW_NO_TRANSITION ||
|
| - store_mode == STORE_NO_TRANSITION_IGNORE_OUT_OF_BOUNDS ||
|
| - store_mode == STORE_NO_TRANSITION_HANDLE_COW);
|
| -
|
| - Handle<String> name = isolate->factory()->KeyedStoreMonomorphic_string();
|
| - Handle<Object> probe(receiver_map->FindInCodeCache(*name, flags), isolate);
|
| - if (probe->IsCode()) return Handle<Code>::cast(probe);
|
| -
|
| - PropertyICCompiler compiler(isolate, Code::KEYED_STORE_IC, extra_state);
|
| - Handle<Code> code =
|
| - compiler.CompileKeyedStoreMonomorphic(receiver_map, store_mode);
|
| -
|
| - Map::UpdateCodeCache(receiver_map, name, code);
|
| - DCHECK(KeyedStoreIC::GetKeyedAccessStoreMode(code->extra_ic_state()) ==
|
| - store_mode);
|
| - return code;
|
| -}
|
| -
|
| -
|
| Code* PropertyICCompiler::FindPreMonomorphic(Isolate* isolate, Code::Kind kind,
|
| ExtraICState state) {
|
| Code::Flags flags = Code::ComputeFlags(kind, PREMONOMORPHIC, state);
|
| @@ -239,17 +156,6 @@ Handle<Code> PropertyICCompiler::ComputeCompareNil(Handle<Map> receiver_map,
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::ComputePolymorphic(
|
| - Code::Kind kind, MapHandleList* maps, CodeHandleList* handlers,
|
| - int valid_maps, Handle<Name> name, ExtraICState extra_ic_state) {
|
| - Handle<Code> handler = handlers->at(0);
|
| - Code::StubType type = valid_maps == 1 ? handler->type() : Code::NORMAL;
|
| - DCHECK(kind == Code::LOAD_IC || kind == Code::STORE_IC);
|
| - PropertyICCompiler ic_compiler(name->GetIsolate(), kind, extra_ic_state);
|
| - return ic_compiler.CompilePolymorphic(maps, handlers, name, type, PROPERTY);
|
| -}
|
| -
|
| -
|
| void PropertyICCompiler::ComputeKeyedStorePolymorphicHandlers(
|
| MapHandleList* receiver_maps, MapHandleList* transitioned_maps,
|
| CodeHandleList* handlers, KeyedAccessStoreMode store_mode,
|
| @@ -267,31 +173,6 @@ void PropertyICCompiler::ComputeKeyedStorePolymorphicHandlers(
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::ComputeKeyedStorePolymorphic(
|
| - MapHandleList* receiver_maps, KeyedAccessStoreMode store_mode,
|
| - LanguageMode language_mode) {
|
| - Isolate* isolate = receiver_maps->at(0)->GetIsolate();
|
| - DCHECK(store_mode == STANDARD_STORE ||
|
| - store_mode == STORE_AND_GROW_NO_TRANSITION ||
|
| - store_mode == STORE_NO_TRANSITION_IGNORE_OUT_OF_BOUNDS ||
|
| - store_mode == STORE_NO_TRANSITION_HANDLE_COW);
|
| - Handle<PolymorphicCodeCache> cache =
|
| - isolate->factory()->polymorphic_code_cache();
|
| - ExtraICState extra_state =
|
| - KeyedStoreIC::ComputeExtraICState(language_mode, store_mode);
|
| - Code::Flags flags =
|
| - Code::ComputeFlags(Code::KEYED_STORE_IC, POLYMORPHIC, extra_state);
|
| - Handle<Object> probe = cache->Lookup(receiver_maps, flags);
|
| - if (probe->IsCode()) return Handle<Code>::cast(probe);
|
| -
|
| - PropertyICCompiler compiler(isolate, Code::KEYED_STORE_IC, extra_state);
|
| - Handle<Code> code =
|
| - compiler.CompileKeyedStorePolymorphic(receiver_maps, store_mode);
|
| - PolymorphicCodeCache::Update(cache, receiver_maps, flags, code);
|
| - return code;
|
| -}
|
| -
|
| -
|
| Handle<Code> PropertyICCompiler::CompileLoadInitialize(Code::Flags flags) {
|
| LoadIC::GenerateInitialize(masm());
|
| Handle<Code> code = GetCodeWithFlags(flags, "CompileLoadInitialize");
|
| @@ -394,22 +275,6 @@ void PropertyICCompiler::CompileKeyedStorePolymorphicHandlers(
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::CompileKeyedStorePolymorphic(
|
| - MapHandleList* receiver_maps, KeyedAccessStoreMode store_mode) {
|
| - // Collect MONOMORPHIC stubs for all |receiver_maps|.
|
| - CodeHandleList handlers(receiver_maps->length());
|
| - MapHandleList transitioned_maps(receiver_maps->length());
|
| - CompileKeyedStorePolymorphicHandlers(receiver_maps, &transitioned_maps,
|
| - &handlers, store_mode);
|
| -
|
| - Handle<Code> code = CompileKeyedStorePolymorphic(receiver_maps, &handlers,
|
| - &transitioned_maps);
|
| - isolate()->counters()->keyed_store_polymorphic_stubs()->Increment();
|
| - PROFILE(isolate(), CodeCreateEvent(log_kind(code), *code, 0));
|
| - return code;
|
| -}
|
| -
|
| -
|
| #define __ ACCESS_MASM(masm())
|
|
|
|
|
|
|