OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/object.h" | 5 #include "vm/object.h" |
6 | 6 |
7 #include "vm/hash_table.h" | 7 #include "vm/hash_table.h" |
8 #include "vm/isolate_reload.h" | 8 #include "vm/isolate_reload.h" |
9 #include "vm/log.h" | 9 #include "vm/log.h" |
10 #include "vm/resolver.h" | 10 #include "vm/resolver.h" |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 for (intptr_t i = 0; i < field_list.Length(); i++) { | 121 for (intptr_t i = 0; i < field_list.Length(); i++) { |
122 field = Field::RawCast(field_list.At(i)); | 122 field = Field::RawCast(field_list.At(i)); |
123 name = field.name(); | 123 name = field.name(); |
124 if (field.is_static()) { | 124 if (field.is_static()) { |
125 // Find the corresponding old field, if it exists, and migrate | 125 // Find the corresponding old field, if it exists, and migrate |
126 // over the field value. | 126 // over the field value. |
127 for (intptr_t j = 0; j < old_field_list.Length(); j++) { | 127 for (intptr_t j = 0; j < old_field_list.Length(); j++) { |
128 old_field = Field::RawCast(old_field_list.At(j)); | 128 old_field = Field::RawCast(old_field_list.At(j)); |
129 old_name = old_field.name(); | 129 old_name = old_field.name(); |
130 if (name.Equals(old_name)) { | 130 if (name.Equals(old_name)) { |
131 if (update_values) { | 131 // We only copy values if requested and if the field is not a const |
| 132 // field. We let const fields be updated with a reload. |
| 133 if (update_values && !field.is_const()) { |
132 value = old_field.StaticValue(); | 134 value = old_field.StaticValue(); |
133 field.SetStaticValue(value); | 135 field.SetStaticValue(value); |
134 } | 136 } |
135 reload_context->AddStaticFieldMapping(old_field, field); | 137 reload_context->AddStaticFieldMapping(old_field, field); |
136 } | 138 } |
137 } | 139 } |
138 } | 140 } |
139 } | 141 } |
140 } | 142 } |
141 | 143 |
(...skipping 614 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
756 const Array& data_array = | 758 const Array& data_array = |
757 Array::Handle(zone, CachedEmptyICDataArray(num_args)); | 759 Array::Handle(zone, CachedEmptyICDataArray(num_args)); |
758 set_ic_data_array(data_array); | 760 set_ic_data_array(data_array); |
759 } | 761 } |
760 } | 762 } |
761 } | 763 } |
762 | 764 |
763 #endif // !PRODUCT | 765 #endif // !PRODUCT |
764 | 766 |
765 } // namespace dart. | 767 } // namespace dart. |
OLD | NEW |