Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/stub-cache.cc

Issue 429543004: Only generate a single normal IC per kind per slow-mode map. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Port comment Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/ic.cc ('k') | src/x64/stub-cache-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/api.h" 7 #include "src/api.h"
8 #include "src/arguments.h" 8 #include "src/arguments.h"
9 #include "src/ast.h" 9 #include "src/ast.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 Handle<Object> probe(stub_holder->FindInCodeCache(*name, flags), 125 Handle<Object> probe(stub_holder->FindInCodeCache(*name, flags),
126 name->GetIsolate()); 126 name->GetIsolate());
127 if (probe->IsCode()) return Handle<Code>::cast(probe); 127 if (probe->IsCode()) return Handle<Code>::cast(probe);
128 return Handle<Code>::null(); 128 return Handle<Code>::null();
129 } 129 }
130 130
131 131
132 Handle<Code> PropertyICCompiler::ComputeMonomorphic( 132 Handle<Code> PropertyICCompiler::ComputeMonomorphic(
133 Code::Kind kind, Handle<Name> name, Handle<HeapType> type, 133 Code::Kind kind, Handle<Name> name, Handle<HeapType> type,
134 Handle<Code> handler, ExtraICState extra_ic_state) { 134 Handle<Code> handler, ExtraICState extra_ic_state) {
135 Isolate* isolate = name->GetIsolate();
136 if (handler.is_identical_to(isolate->builtins()->LoadIC_Normal()) ||
137 handler.is_identical_to(isolate->builtins()->StoreIC_Normal())) {
138 name = isolate->factory()->normal_ic_symbol();
139 }
140
135 CacheHolderFlag flag; 141 CacheHolderFlag flag;
136 Isolate* isolate = name->GetIsolate();
137 Handle<Map> stub_holder = IC::GetICCacheHolder(*type, isolate, &flag); 142 Handle<Map> stub_holder = IC::GetICCacheHolder(*type, isolate, &flag);
138 143
139 Handle<Code> ic; 144 Handle<Code> ic;
140 // There are multiple string maps that all use the same prototype. That 145 // There are multiple string maps that all use the same prototype. That
141 // prototype cannot hold multiple handlers, one for each of the string maps, 146 // prototype cannot hold multiple handlers, one for each of the string maps,
142 // for a single name. Hence, turn off caching of the IC. 147 // for a single name. Hence, turn off caching of the IC.
143 bool can_be_cached = !type->Is(HeapType::String()); 148 bool can_be_cached = !type->Is(HeapType::String());
144 if (can_be_cached) { 149 if (can_be_cached) {
145 ic = Find(name, stub_holder, kind, extra_ic_state, flag); 150 ic = Find(name, stub_holder, kind, extra_ic_state, flag);
146 if (!ic.is_null()) return ic; 151 if (!ic.is_null()) return ic;
(...skipping 1203 matching lines...) Expand 10 before | Expand all | Expand 10 after
1350 Handle<FunctionTemplateInfo>( 1355 Handle<FunctionTemplateInfo>(
1351 FunctionTemplateInfo::cast(signature->receiver())); 1356 FunctionTemplateInfo::cast(signature->receiver()));
1352 } 1357 }
1353 } 1358 }
1354 1359
1355 is_simple_api_call_ = true; 1360 is_simple_api_call_ = true;
1356 } 1361 }
1357 1362
1358 1363
1359 } } // namespace v8::internal 1364 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/ic.cc ('k') | src/x64/stub-cache-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698