| 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,
|
|
|