Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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/precompiler.h" | 5 #include "vm/precompiler.h" |
| 6 | 6 |
| 7 #include "vm/code_patcher.h" | 7 #include "vm/code_patcher.h" |
| 8 #include "vm/compiler.h" | 8 #include "vm/compiler.h" |
| 9 #include "vm/isolate.h" | 9 #include "vm/isolate.h" |
| 10 #include "vm/log.h" | 10 #include "vm/log.h" |
| (...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 581 } | 581 } |
| 582 } | 582 } |
| 583 } | 583 } |
| 584 | 584 |
| 585 | 585 |
| 586 void Precompiler::AddInstantiatedClass(const Class& cls) { | 586 void Precompiler::AddInstantiatedClass(const Class& cls) { |
| 587 if (cls.is_allocated()) return; | 587 if (cls.is_allocated()) return; |
| 588 | 588 |
| 589 class_count_++; | 589 class_count_++; |
| 590 cls.set_is_allocated(true); | 590 cls.set_is_allocated(true); |
| 591 cls.EnsureIsFinalized(T); | |
|
rmacnak
2015/11/17 20:51:18
All the classes should have been finalized before
Florian Schneider
2015/11/18 11:44:09
Not true for certain signature classes: If you set
rmacnak
2015/11/18 19:00:07
Oh, right. Signature classes may be created as we
| |
| 591 changed_ = true; | 592 changed_ = true; |
| 592 | 593 |
| 593 if (FLAG_trace_precompiler) { | 594 if (FLAG_trace_precompiler) { |
| 594 THR_Print("Allocation %" Pd " %s\n", class_count_, cls.ToCString()); | 595 THR_Print("Allocation %" Pd " %s\n", class_count_, cls.ToCString()); |
| 595 } | 596 } |
| 596 | 597 |
| 597 const Class& superclass = Class::Handle(cls.SuperClass()); | 598 const Class& superclass = Class::Handle(cls.SuperClass()); |
| 598 if (!superclass.IsNull()) { | 599 if (!superclass.IsNull()) { |
| 599 AddInstantiatedClass(superclass); | 600 AddInstantiatedClass(superclass); |
| 600 } | 601 } |
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 954 cls = it.GetNextClass(); | 955 cls = it.GetNextClass(); |
| 955 if (cls.IsDynamicClass()) { | 956 if (cls.IsDynamicClass()) { |
| 956 continue; // class 'dynamic' is in the read-only VM isolate. | 957 continue; // class 'dynamic' is in the read-only VM isolate. |
| 957 } | 958 } |
| 958 cls.set_is_allocated(false); | 959 cls.set_is_allocated(false); |
| 959 } | 960 } |
| 960 } | 961 } |
| 961 } | 962 } |
| 962 | 963 |
| 963 } // namespace dart | 964 } // namespace dart |
| OLD | NEW |