Index: runtime/vm/intermediate_language.h |
=================================================================== |
--- runtime/vm/intermediate_language.h (revision 42713) |
+++ runtime/vm/intermediate_language.h (working copy) |
@@ -3425,7 +3425,8 @@ |
offset_in_bytes_(field.Offset()), |
emit_store_barrier_(emit_store_barrier), |
token_pos_(token_pos), |
- is_initialization_(false) { |
+ is_potential_unboxed_initialization_(false), |
+ is_object_reference_initialization_(false) { |
SetInputAt(kInstancePos, instance); |
SetInputAt(kValuePos, value); |
} |
@@ -3439,7 +3440,8 @@ |
offset_in_bytes_(offset_in_bytes), |
emit_store_barrier_(emit_store_barrier), |
token_pos_(token_pos), |
- is_initialization_(false) { |
+ is_potential_unboxed_initialization_(false), |
+ is_object_reference_initialization_(false) { |
SetInputAt(kInstancePos, instance); |
SetInputAt(kValuePos, value); |
} |
@@ -3446,7 +3448,12 @@ |
DECLARE_INSTRUCTION(StoreInstanceField) |
- void set_is_initialization(bool value) { is_initialization_ = value; } |
+ void set_is_potential_unboxed_initialization(bool value) { |
+ is_potential_unboxed_initialization_ = value; |
+ } |
+ void set_is_object_reference_initialization(bool value) { |
+ is_object_reference_initialization_ = value; |
+ } |
enum { |
kInstancePos = 0, |
@@ -3455,7 +3462,12 @@ |
Value* instance() const { return inputs_[kInstancePos]; } |
Value* value() const { return inputs_[kValuePos]; } |
- bool is_initialization() const { return is_initialization_; } |
+ bool is_potential_unboxed_initialization() const { |
+ return is_potential_unboxed_initialization_; |
+ } |
+ bool is_object_reference_initialization() const { |
+ return is_object_reference_initialization_; |
+ } |
virtual intptr_t token_pos() const { return token_pos_; } |
const Field& field() const { return field_; } |
@@ -3500,7 +3512,11 @@ |
intptr_t offset_in_bytes_; |
const StoreBarrierType emit_store_barrier_; |
const intptr_t token_pos_; |
- bool is_initialization_; // Marks stores in the constructor. |
+ // This may be the first store to an unboxed field. |
+ bool is_potential_unboxed_initialization_; |
+ // True if this store initializes an object reference field of an object that |
+ // was allocated uninitialized; see AllocateUninitializedContext. |
+ bool is_object_reference_initialization_; |
DISALLOW_COPY_AND_ASSIGN(StoreInstanceFieldInstr); |
}; |