Index: runtime/vm/raw_object.h |
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h |
index 0c4fcf60d38b14a7780e4870968ed158c44335da..bacbfe82f274c3c6a75c35a24193d29ad6a0dc1d 100644 |
--- a/runtime/vm/raw_object.h |
+++ b/runtime/vm/raw_object.h |
@@ -830,9 +830,20 @@ class RawField : public RawObject { |
RawObject* owner_; // Class or patch class or mixin class |
// where this field is defined. |
RawAbstractType* type_; |
- RawInstance* value_; // Offset in words for instance and value for static. |
+ union { |
+ RawInstance* static_value_; // Value for static fields. |
+ RawSmi* offset_; // Offset in words for instance fields. |
+ } value_; |
RawArray* dependent_code_; |
- RawFunction* initializer_; |
+ union { |
+ // When precompiling we need to save the static initializer function here |
+ // so that code for it can be generated. |
+ RawFunction* precompiled_; // Static initializer function - precompiling. |
+ // When generating script snapshots after running the application it is |
+ // necessary to save the initial value of static fields so that we can |
+ // restore the value back to the original initial value. |
+ RawInstance* saved_value_; // Saved initial value - static fields. |
+ } initializer_; |
RawSmi* guarded_list_length_; |
RawObject** to() { |
return reinterpret_cast<RawObject**>(&ptr()->guarded_list_length_); |