| 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/aot_optimizer.h" | 7 #include "vm/aot_optimizer.h" |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/ast_printer.h" | 9 #include "vm/ast_printer.h" |
| 10 #include "vm/branch_optimizer.h" | 10 #include "vm/branch_optimizer.h" |
| (...skipping 1754 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1765 } else { | 1765 } else { |
| 1766 dropped_function_count_++; | 1766 dropped_function_count_++; |
| 1767 if (FLAG_trace_precompiler) { | 1767 if (FLAG_trace_precompiler) { |
| 1768 THR_Print("Dropping function %s\n", | 1768 THR_Print("Dropping function %s\n", |
| 1769 function.ToLibNamePrefixedQualifiedCString()); | 1769 function.ToLibNamePrefixedQualifiedCString()); |
| 1770 } | 1770 } |
| 1771 } | 1771 } |
| 1772 } | 1772 } |
| 1773 | 1773 |
| 1774 if (retained_functions.Length() > 0) { | 1774 if (retained_functions.Length() > 0) { |
| 1775 functions = Array::MakeFixedLength(retained_functions); | 1775 functions = Array::MakeArray(retained_functions); |
| 1776 cls.SetFunctions(functions); | 1776 cls.SetFunctions(functions); |
| 1777 } else { | 1777 } else { |
| 1778 cls.SetFunctions(Object::empty_array()); | 1778 cls.SetFunctions(Object::empty_array()); |
| 1779 } | 1779 } |
| 1780 } | 1780 } |
| 1781 } | 1781 } |
| 1782 | 1782 |
| 1783 closures = isolate()->object_store()->closure_functions(); | 1783 closures = isolate()->object_store()->closure_functions(); |
| 1784 retained_functions = GrowableObjectArray::New(); | 1784 retained_functions = GrowableObjectArray::New(); |
| 1785 for (intptr_t j = 0; j < closures.Length(); j++) { | 1785 for (intptr_t j = 0; j < closures.Length(); j++) { |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1827 AddType(type); | 1827 AddType(type); |
| 1828 } else { | 1828 } else { |
| 1829 dropped_field_count_++; | 1829 dropped_field_count_++; |
| 1830 if (FLAG_trace_precompiler) { | 1830 if (FLAG_trace_precompiler) { |
| 1831 THR_Print("Dropping field %s\n", field.ToCString()); | 1831 THR_Print("Dropping field %s\n", field.ToCString()); |
| 1832 } | 1832 } |
| 1833 } | 1833 } |
| 1834 } | 1834 } |
| 1835 | 1835 |
| 1836 if (retained_fields.Length() > 0) { | 1836 if (retained_fields.Length() > 0) { |
| 1837 fields = Array::MakeFixedLength(retained_fields); | 1837 fields = Array::MakeArray(retained_fields); |
| 1838 cls.SetFields(fields); | 1838 cls.SetFields(fields); |
| 1839 } else { | 1839 } else { |
| 1840 cls.SetFields(Object::empty_array()); | 1840 cls.SetFields(Object::empty_array()); |
| 1841 } | 1841 } |
| 1842 } | 1842 } |
| 1843 } | 1843 } |
| 1844 } | 1844 } |
| 1845 | 1845 |
| 1846 | 1846 |
| 1847 void Precompiler::DropTypes() { | 1847 void Precompiler::DropTypes() { |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1981 for (intptr_t j = 0; j < constants.Length(); j++) { | 1981 for (intptr_t j = 0; j < constants.Length(); j++) { |
| 1982 constant ^= constants.At(j); | 1982 constant ^= constants.At(j); |
| 1983 bool retain = consts_to_retain_.HasKey(&constant); | 1983 bool retain = consts_to_retain_.HasKey(&constant); |
| 1984 if (retain) { | 1984 if (retain) { |
| 1985 retained_constants.Add(constant); | 1985 retained_constants.Add(constant); |
| 1986 } | 1986 } |
| 1987 } | 1987 } |
| 1988 intptr_t cid = cls.id(); | 1988 intptr_t cid = cls.id(); |
| 1989 if ((cid == kMintCid) || (cid == kBigintCid) || (cid == kDoubleCid)) { | 1989 if ((cid == kMintCid) || (cid == kBigintCid) || (cid == kDoubleCid)) { |
| 1990 // Constants stored as a plain list, no rehashing needed. | 1990 // Constants stored as a plain list, no rehashing needed. |
| 1991 constants = Array::MakeFixedLength(retained_constants); | 1991 constants = Array::MakeArray(retained_constants); |
| 1992 cls.set_constants(constants); | 1992 cls.set_constants(constants); |
| 1993 } else { | 1993 } else { |
| 1994 // Rehash. | 1994 // Rehash. |
| 1995 cls.set_constants(Object::empty_array()); | 1995 cls.set_constants(Object::empty_array()); |
| 1996 for (intptr_t j = 0; j < retained_constants.Length(); j++) { | 1996 for (intptr_t j = 0; j < retained_constants.Length(); j++) { |
| 1997 constant ^= retained_constants.At(j); | 1997 constant ^= retained_constants.At(j); |
| 1998 cls.InsertCanonicalConstant(Z, constant); | 1998 cls.InsertCanonicalConstant(Z, constant); |
| 1999 } | 1999 } |
| 2000 } | 2000 } |
| 2001 | 2001 |
| (...skipping 1386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3388 | 3388 |
| 3389 ASSERT(FLAG_precompiled_mode); | 3389 ASSERT(FLAG_precompiled_mode); |
| 3390 const bool optimized = function.IsOptimizable(); // False for natives. | 3390 const bool optimized = function.IsOptimizable(); // False for natives. |
| 3391 DartPrecompilationPipeline pipeline(zone, field_type_map); | 3391 DartPrecompilationPipeline pipeline(zone, field_type_map); |
| 3392 return PrecompileFunctionHelper(precompiler, &pipeline, function, optimized); | 3392 return PrecompileFunctionHelper(precompiler, &pipeline, function, optimized); |
| 3393 } | 3393 } |
| 3394 | 3394 |
| 3395 #endif // DART_PRECOMPILER | 3395 #endif // DART_PRECOMPILER |
| 3396 | 3396 |
| 3397 } // namespace dart | 3397 } // namespace dart |
| OLD | NEW |