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

Side by Side Diff: src/hydrogen.cc

Issue 1330153003: Adding template parameter to PrototypeIterator GetCurrent for casting (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 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
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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/hydrogen.h" 5 #include "src/hydrogen.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "src/allocation-site-scopes.h" 9 #include "src/allocation-site-scopes.h"
10 #include "src/ast-numbering.h" 10 #include "src/ast-numbering.h"
(...skipping 7333 matching lines...) Expand 10 before | Expand all | Expand 10 after
7344 KeyedAccessStoreMode store_mode) { 7344 KeyedAccessStoreMode store_mode) {
7345 HCheckMaps* checked_object = Add<HCheckMaps>(object, map, dependency); 7345 HCheckMaps* checked_object = Add<HCheckMaps>(object, map, dependency);
7346 7346
7347 if (access_type == STORE && map->prototype()->IsJSObject()) { 7347 if (access_type == STORE && map->prototype()->IsJSObject()) {
7348 // monomorphic stores need a prototype chain check because shape 7348 // monomorphic stores need a prototype chain check because shape
7349 // changes could allow callbacks on elements in the chain that 7349 // changes could allow callbacks on elements in the chain that
7350 // aren't compatible with monomorphic keyed stores. 7350 // aren't compatible with monomorphic keyed stores.
7351 PrototypeIterator iter(map); 7351 PrototypeIterator iter(map);
7352 JSObject* holder = NULL; 7352 JSObject* holder = NULL;
7353 while (!iter.IsAtEnd()) { 7353 while (!iter.IsAtEnd()) {
7354 holder = JSObject::cast(*PrototypeIterator::GetCurrent(iter)); 7354 holder = iter.GetCurrent<JSObject>();
Jakob Kummerow 2015/09/09 14:29:55 I think you need to keep the '*' -- when a Prototy
Camillo Bruni 2015/09/09 17:24:07 PrototypeIterator::GetCurrent and ->/.GetCurrent a
Camillo Bruni 2015/09/10 10:53:59 reverted
7355 iter.Advance(); 7355 iter.Advance();
7356 } 7356 }
7357 DCHECK(holder && holder->IsJSObject()); 7357 DCHECK(holder && holder->IsJSObject());
7358 7358
7359 BuildCheckPrototypeMaps(handle(JSObject::cast(map->prototype())), 7359 BuildCheckPrototypeMaps(handle(JSObject::cast(map->prototype())),
7360 Handle<JSObject>(holder)); 7360 Handle<JSObject>(holder));
7361 } 7361 }
7362 7362
7363 LoadKeyedHoleMode load_mode = BuildKeyedHoleMode(map); 7363 LoadKeyedHoleMode load_mode = BuildKeyedHoleMode(map);
7364 return BuildUncheckedMonomorphicElementAccess( 7364 return BuildUncheckedMonomorphicElementAccess(
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
7873 return check; 7873 return check;
7874 } 7874 }
7875 7875
7876 7876
7877 HInstruction* HGraphBuilder::BuildCheckPrototypeMaps(Handle<JSObject> prototype, 7877 HInstruction* HGraphBuilder::BuildCheckPrototypeMaps(Handle<JSObject> prototype,
7878 Handle<JSObject> holder) { 7878 Handle<JSObject> holder) {
7879 PrototypeIterator iter(isolate(), prototype, 7879 PrototypeIterator iter(isolate(), prototype,
7880 PrototypeIterator::START_AT_RECEIVER); 7880 PrototypeIterator::START_AT_RECEIVER);
7881 while (holder.is_null() || 7881 while (holder.is_null() ||
7882 !PrototypeIterator::GetCurrent(iter).is_identical_to(holder)) { 7882 !PrototypeIterator::GetCurrent(iter).is_identical_to(holder)) {
7883 BuildConstantMapCheck( 7883 BuildConstantMapCheck(PrototypeIterator::GetCurrent<JSObject>(iter));
7884 Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter)));
7885 iter.Advance(); 7884 iter.Advance();
7886 if (iter.IsAtEnd()) { 7885 if (iter.IsAtEnd()) {
7887 return NULL; 7886 return NULL;
7888 } 7887 }
7889 } 7888 }
7890 return BuildConstantMapCheck( 7889 return BuildConstantMapCheck(PrototypeIterator::GetCurrent<JSObject>(iter));
7891 Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter)));
7892 } 7890 }
7893 7891
7894 7892
7895 void HOptimizedGraphBuilder::AddCheckPrototypeMaps(Handle<JSObject> holder, 7893 void HOptimizedGraphBuilder::AddCheckPrototypeMaps(Handle<JSObject> holder,
7896 Handle<Map> receiver_map) { 7894 Handle<Map> receiver_map) {
7897 if (!holder.is_null()) { 7895 if (!holder.is_null()) {
7898 Handle<JSObject> prototype(JSObject::cast(receiver_map->prototype())); 7896 Handle<JSObject> prototype(JSObject::cast(receiver_map->prototype()));
7899 BuildCheckPrototypeMaps(prototype, holder); 7897 BuildCheckPrototypeMaps(prototype, holder);
7900 } 7898 }
7901 } 7899 }
(...skipping 5559 matching lines...) Expand 10 before | Expand all | Expand 10 after
13461 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 13459 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
13462 } 13460 }
13463 13461
13464 #ifdef DEBUG 13462 #ifdef DEBUG
13465 graph_->Verify(false); // No full verify. 13463 graph_->Verify(false); // No full verify.
13466 #endif 13464 #endif
13467 } 13465 }
13468 13466
13469 } // namespace internal 13467 } // namespace internal
13470 } // namespace v8 13468 } // namespace v8
OLDNEW
« no previous file with comments | « src/debug/debug-evaluate.cc ('k') | src/ic/handler-compiler.cc » ('j') | src/objects.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698