| 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);
|
| };
|
|
|