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 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 old_func ^= funcs.At(i); | 385 old_func ^= funcs.At(i); |
386 if (old_func.is_static() && | 386 if (old_func.is_static() && |
387 old_func.HasImplicitClosureFunction()) { | 387 old_func.HasImplicitClosureFunction()) { |
388 selector = old_func.name(); | 388 selector = old_func.name(); |
389 new_func = new_cls.LookupFunction(selector); | 389 new_func = new_cls.LookupFunction(selector); |
390 if (!new_func.IsNull() && new_func.is_static()) { | 390 if (!new_func.IsNull() && new_func.is_static()) { |
391 old_func = old_func.ImplicitClosureFunction(); | 391 old_func = old_func.ImplicitClosureFunction(); |
392 old_closure = old_func.ImplicitStaticClosure(); | 392 old_closure = old_func.ImplicitStaticClosure(); |
393 new_func = new_func.ImplicitClosureFunction(); | 393 new_func = new_func.ImplicitClosureFunction(); |
394 new_closure = new_func.ImplicitStaticClosure(); | 394 new_closure = new_func.ImplicitStaticClosure(); |
| 395 if (old_closure.IsCanonical()) { |
| 396 new_closure.SetCanonical(); |
| 397 } |
395 irc->AddBecomeMapping(old_closure, new_closure); | 398 irc->AddBecomeMapping(old_closure, new_closure); |
396 } | 399 } |
397 } | 400 } |
398 } | 401 } |
399 } | 402 } |
400 | 403 |
401 | 404 |
402 class EnumClassConflict : public ClassReasonForCancelling { | 405 class EnumClassConflict : public ClassReasonForCancelling { |
403 public: | 406 public: |
404 EnumClassConflict(Zone* zone, const Class& from, const Class& to) | 407 EnumClassConflict(Zone* zone, const Class& from, const Class& to) |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
753 const Array& data_array = | 756 const Array& data_array = |
754 Array::Handle(zone, CachedEmptyICDataArray(num_args)); | 757 Array::Handle(zone, CachedEmptyICDataArray(num_args)); |
755 set_ic_data_array(data_array); | 758 set_ic_data_array(data_array); |
756 } | 759 } |
757 } | 760 } |
758 } | 761 } |
759 | 762 |
760 #endif // !PRODUCT | 763 #endif // !PRODUCT |
761 | 764 |
762 } // namespace dart. | 765 } // namespace dart. |
OLD | NEW |