OLD | NEW |
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/v8.h" | 9 #include "src/v8.h" |
10 | 10 |
(...skipping 6903 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6914 | 6914 |
6915 HInstruction* HOptimizedGraphBuilder::BuildMonomorphicElementAccess( | 6915 HInstruction* HOptimizedGraphBuilder::BuildMonomorphicElementAccess( |
6916 HValue* object, | 6916 HValue* object, |
6917 HValue* key, | 6917 HValue* key, |
6918 HValue* val, | 6918 HValue* val, |
6919 HValue* dependency, | 6919 HValue* dependency, |
6920 Handle<Map> map, | 6920 Handle<Map> map, |
6921 PropertyAccessType access_type, | 6921 PropertyAccessType access_type, |
6922 KeyedAccessStoreMode store_mode) { | 6922 KeyedAccessStoreMode store_mode) { |
6923 HCheckMaps* checked_object = Add<HCheckMaps>(object, map, dependency); | 6923 HCheckMaps* checked_object = Add<HCheckMaps>(object, map, dependency); |
6924 if (dependency) { | |
6925 checked_object->ClearDependsOnFlag(kElementsKind); | |
6926 } | |
6927 | 6924 |
6928 if (access_type == STORE && map->prototype()->IsJSObject()) { | 6925 if (access_type == STORE && map->prototype()->IsJSObject()) { |
6929 // monomorphic stores need a prototype chain check because shape | 6926 // monomorphic stores need a prototype chain check because shape |
6930 // changes could allow callbacks on elements in the chain that | 6927 // changes could allow callbacks on elements in the chain that |
6931 // aren't compatible with monomorphic keyed stores. | 6928 // aren't compatible with monomorphic keyed stores. |
6932 PrototypeIterator iter(map); | 6929 PrototypeIterator iter(map); |
6933 JSObject* holder = NULL; | 6930 JSObject* holder = NULL; |
6934 while (!iter.IsAtEnd()) { | 6931 while (!iter.IsAtEnd()) { |
6935 holder = JSObject::cast(*PrototypeIterator::GetCurrent(iter)); | 6932 holder = JSObject::cast(*PrototypeIterator::GetCurrent(iter)); |
6936 iter.Advance(); | 6933 iter.Advance(); |
(...skipping 6451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13388 if (ShouldProduceTraceOutput()) { | 13385 if (ShouldProduceTraceOutput()) { |
13389 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13386 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
13390 } | 13387 } |
13391 | 13388 |
13392 #ifdef DEBUG | 13389 #ifdef DEBUG |
13393 graph_->Verify(false); // No full verify. | 13390 graph_->Verify(false); // No full verify. |
13394 #endif | 13391 #endif |
13395 } | 13392 } |
13396 | 13393 |
13397 } } // namespace v8::internal | 13394 } } // namespace v8::internal |
OLD | NEW |