Index: src/crankshaft/hydrogen.h |
diff --git a/src/crankshaft/hydrogen.h b/src/crankshaft/hydrogen.h |
index 8d32dc6589014c7d8b8e8c90f3a378ad7e6aa994..203c374d25dff78bf0672741ea92b2c991804831 100644 |
--- a/src/crankshaft/hydrogen.h |
+++ b/src/crankshaft/hydrogen.h |
@@ -2456,7 +2456,19 @@ class HOptimizedGraphBuilder : public HGraphBuilder, |
field_type_(HType::Tagged()), |
access_(HObjectAccess::ForMap()), |
lookup_type_(NOT_FOUND), |
- details_(PropertyDetails::Empty()) {} |
+ details_(PropertyDetails::Empty()), |
+ store_mode_(STORE_TO_INITIALIZED_ENTRY) {} |
+ |
+ // Ensure the full store is performed. |
+ void MarkAsInitializingStore() { |
+ DCHECK_EQ(STORE, access_type_); |
+ store_mode_ = INITIALIZING_STORE; |
+ } |
+ |
+ StoreFieldOrKeyedMode StoreMode() { |
+ DCHECK_EQ(STORE, access_type_); |
+ return store_mode_; |
+ } |
// Checkes whether this PropertyAccessInfo can be handled as a monomorphic |
// load named. It additionally fills in the fields necessary to generate the |
@@ -2572,6 +2584,7 @@ class HOptimizedGraphBuilder : public HGraphBuilder, |
transition_ = handle(target); |
number_ = transition_->LastAdded(); |
details_ = transition_->instance_descriptors()->GetDetails(number_); |
+ MarkAsInitializingStore(); |
} |
void NotFound() { |
lookup_type_ = NOT_FOUND; |
@@ -2618,6 +2631,7 @@ class HOptimizedGraphBuilder : public HGraphBuilder, |
Handle<Map> transition_; |
int number_; |
PropertyDetails details_; |
+ StoreFieldOrKeyedMode store_mode_; |
}; |
HValue* BuildMonomorphicAccess(PropertyAccessInfo* info, HValue* object, |