| 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/isolate_reload.h" | 5 #include "vm/isolate_reload.h" |
| 6 | 6 |
| 7 #include "vm/become.h" | 7 #include "vm/become.h" |
| 8 #include "vm/bit_vector.h" | 8 #include "vm/bit_vector.h" |
| 9 #include "vm/code_generator.h" | 9 #include "vm/code_generator.h" |
| 10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
| (...skipping 942 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 953 | 953 |
| 954 #ifdef DEBUG | 954 #ifdef DEBUG |
| 955 VerifyMaps(); | 955 VerifyMaps(); |
| 956 #endif | 956 #endif |
| 957 | 957 |
| 958 { | 958 { |
| 959 TIMELINE_SCOPE(CopyStaticFieldsAndPatchFieldsAndFunctions); | 959 TIMELINE_SCOPE(CopyStaticFieldsAndPatchFieldsAndFunctions); |
| 960 // Copy static field values from the old classes to the new classes. | 960 // Copy static field values from the old classes to the new classes. |
| 961 // Patch fields and functions in the old classes so that they retain | 961 // Patch fields and functions in the old classes so that they retain |
| 962 // the old script. | 962 // the old script. |
| 963 Class& cls = Class::Handle(); | 963 Class& old_cls = Class::Handle(); |
| 964 Class& new_cls = Class::Handle(); | 964 Class& new_cls = Class::Handle(); |
| 965 | |
| 966 UnorderedHashMap<ClassMapTraits> class_map(class_map_storage_); | 965 UnorderedHashMap<ClassMapTraits> class_map(class_map_storage_); |
| 967 | 966 |
| 968 { | 967 { |
| 969 UnorderedHashMap<ClassMapTraits>::Iterator it(&class_map); | 968 UnorderedHashMap<ClassMapTraits>::Iterator it(&class_map); |
| 970 while (it.MoveNext()) { | 969 while (it.MoveNext()) { |
| 971 const intptr_t entry = it.Current(); | 970 const intptr_t entry = it.Current(); |
| 972 new_cls = Class::RawCast(class_map.GetKey(entry)); | 971 new_cls = Class::RawCast(class_map.GetKey(entry)); |
| 973 cls = Class::RawCast(class_map.GetPayload(entry, 0)); | 972 old_cls = Class::RawCast(class_map.GetPayload(entry, 0)); |
| 974 if (new_cls.raw() != cls.raw()) { | 973 if (new_cls.raw() != old_cls.raw()) { |
| 975 ASSERT(new_cls.is_enum_class() == cls.is_enum_class()); | 974 ASSERT(new_cls.is_enum_class() == old_cls.is_enum_class()); |
| 976 if (new_cls.is_enum_class() && new_cls.is_finalized()) { | 975 if (new_cls.is_enum_class() && new_cls.is_finalized()) { |
| 977 new_cls.ReplaceEnum(cls); | 976 new_cls.ReplaceEnum(old_cls); |
| 978 } else { | 977 } else { |
| 979 new_cls.CopyStaticFieldValues(cls); | 978 new_cls.CopyStaticFieldValues(old_cls); |
| 980 } | 979 } |
| 981 cls.PatchFieldsAndFunctions(); | 980 old_cls.PatchFieldsAndFunctions(); |
| 981 old_cls.MigrateImplicitStaticClosures(this, new_cls); |
| 982 } | 982 } |
| 983 } | 983 } |
| 984 } | 984 } |
| 985 | 985 |
| 986 class_map.Release(); | 986 class_map.Release(); |
| 987 } | 987 } |
| 988 | 988 |
| 989 // Copy over certain properties of libraries, e.g. is the library | 989 // Copy over certain properties of libraries, e.g. is the library |
| 990 // debuggable? | 990 // debuggable? |
| 991 { | 991 { |
| (...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1586 ASSERT(!super_cls.IsNull()); | 1586 ASSERT(!super_cls.IsNull()); |
| 1587 super_cls.AddDirectSubclass(cls); | 1587 super_cls.AddDirectSubclass(cls); |
| 1588 } | 1588 } |
| 1589 } | 1589 } |
| 1590 } | 1590 } |
| 1591 } | 1591 } |
| 1592 | 1592 |
| 1593 #endif // !PRODUCT | 1593 #endif // !PRODUCT |
| 1594 | 1594 |
| 1595 } // namespace dart | 1595 } // namespace dart |
| OLD | NEW |