| 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 6936 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6947 | 6947 |
| 6948 HInstruction* HOptimizedGraphBuilder::BuildMonomorphicElementAccess( | 6948 HInstruction* HOptimizedGraphBuilder::BuildMonomorphicElementAccess( |
| 6949 HValue* object, | 6949 HValue* object, |
| 6950 HValue* key, | 6950 HValue* key, |
| 6951 HValue* val, | 6951 HValue* val, |
| 6952 HValue* dependency, | 6952 HValue* dependency, |
| 6953 Handle<Map> map, | 6953 Handle<Map> map, |
| 6954 PropertyAccessType access_type, | 6954 PropertyAccessType access_type, |
| 6955 KeyedAccessStoreMode store_mode) { | 6955 KeyedAccessStoreMode store_mode) { |
| 6956 HCheckMaps* checked_object = Add<HCheckMaps>(object, map, dependency); | 6956 HCheckMaps* checked_object = Add<HCheckMaps>(object, map, dependency); |
| 6957 if (dependency) { | |
| 6958 checked_object->ClearDependsOnFlag(kElementsKind); | |
| 6959 } | |
| 6960 | 6957 |
| 6961 if (access_type == STORE && map->prototype()->IsJSObject()) { | 6958 if (access_type == STORE && map->prototype()->IsJSObject()) { |
| 6962 // monomorphic stores need a prototype chain check because shape | 6959 // monomorphic stores need a prototype chain check because shape |
| 6963 // changes could allow callbacks on elements in the chain that | 6960 // changes could allow callbacks on elements in the chain that |
| 6964 // aren't compatible with monomorphic keyed stores. | 6961 // aren't compatible with monomorphic keyed stores. |
| 6965 PrototypeIterator iter(map); | 6962 PrototypeIterator iter(map); |
| 6966 JSObject* holder = NULL; | 6963 JSObject* holder = NULL; |
| 6967 while (!iter.IsAtEnd()) { | 6964 while (!iter.IsAtEnd()) { |
| 6968 holder = JSObject::cast(*PrototypeIterator::GetCurrent(iter)); | 6965 holder = JSObject::cast(*PrototypeIterator::GetCurrent(iter)); |
| 6969 iter.Advance(); | 6966 iter.Advance(); |
| (...skipping 6478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13448 if (ShouldProduceTraceOutput()) { | 13445 if (ShouldProduceTraceOutput()) { |
| 13449 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13446 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
| 13450 } | 13447 } |
| 13451 | 13448 |
| 13452 #ifdef DEBUG | 13449 #ifdef DEBUG |
| 13453 graph_->Verify(false); // No full verify. | 13450 graph_->Verify(false); // No full verify. |
| 13454 #endif | 13451 #endif |
| 13455 } | 13452 } |
| 13456 | 13453 |
| 13457 } } // namespace v8::internal | 13454 } } // namespace v8::internal |
| OLD | NEW |