| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 library dart2js.kernel.world_builder; | 5 library dart2js.kernel.world_builder; |
| 6 | 6 |
| 7 import 'package:kernel/ast.dart' as ir; | 7 import 'package:kernel/ast.dart' as ir; |
| 8 | 8 |
| 9 import '../common.dart'; | 9 import '../common.dart'; |
| 10 import '../common/backend_api.dart'; | 10 import '../common/backend_api.dart'; |
| 11 import '../common/resolution.dart'; | 11 import '../common/resolution.dart'; |
| 12 import '../compile_time_constants.dart'; | 12 import '../compile_time_constants.dart'; |
| 13 import '../constants/constant_system.dart'; | 13 import '../constants/constant_system.dart'; |
| 14 import '../constants/constructors.dart'; | 14 import '../constants/constructors.dart'; |
| 15 import '../constants/evaluation.dart'; | 15 import '../constants/evaluation.dart'; |
| 16 import '../constants/expressions.dart'; | 16 import '../constants/expressions.dart'; |
| 17 import '../constants/values.dart'; | 17 import '../constants/values.dart'; |
| 18 import '../common_elements.dart'; | 18 import '../common_elements.dart'; |
| 19 import '../elements/elements.dart'; | 19 import '../elements/elements.dart'; |
| 20 import '../elements/entities.dart'; | 20 import '../elements/entities.dart'; |
| 21 import '../elements/types.dart'; | 21 import '../elements/types.dart'; |
| 22 import '../js_backend/backend_helpers.dart'; | |
| 23 import '../js_backend/constant_system_javascript.dart'; | 22 import '../js_backend/constant_system_javascript.dart'; |
| 24 import '../js_backend/no_such_method_registry.dart'; | 23 import '../js_backend/no_such_method_registry.dart'; |
| 25 import '../native/native.dart' as native; | 24 import '../native/native.dart' as native; |
| 26 import '../native/resolver.dart'; | 25 import '../native/resolver.dart'; |
| 27 import '../ssa/kernel_impact.dart'; | 26 import '../ssa/kernel_impact.dart'; |
| 28 import '../universe/call_structure.dart'; | 27 import '../universe/call_structure.dart'; |
| 29 import 'element_adapter.dart'; | 28 import 'element_adapter.dart'; |
| 30 import 'elements.dart'; | 29 import 'elements.dart'; |
| 31 | 30 |
| 32 part 'native_class_resolver.dart'; | 31 part 'native_class_resolver.dart'; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 Map<ir.Field, KField> _fieldMap = <ir.Field, KField>{}; | 70 Map<ir.Field, KField> _fieldMap = <ir.Field, KField>{}; |
| 72 Map<KField, ConstantExpression> _fieldConstantMap = | 71 Map<KField, ConstantExpression> _fieldConstantMap = |
| 73 <KField, ConstantExpression>{}; | 72 <KField, ConstantExpression>{}; |
| 74 | 73 |
| 75 Map<ir.TreeNode, KLocalFunction> _localFunctionMap = | 74 Map<ir.TreeNode, KLocalFunction> _localFunctionMap = |
| 76 <ir.TreeNode, KLocalFunction>{}; | 75 <ir.TreeNode, KLocalFunction>{}; |
| 77 | 76 |
| 78 KernelWorldBuilder(this.reporter, ir.Program program) | 77 KernelWorldBuilder(this.reporter, ir.Program program) |
| 79 : _env = new KEnv(program) { | 78 : _env = new KEnv(program) { |
| 80 _elementEnvironment = new KernelElementEnvironment(this); | 79 _elementEnvironment = new KernelElementEnvironment(this); |
| 81 _commonElements = new CommonElementsImpl(_elementEnvironment); | 80 _commonElements = new CommonElements(_elementEnvironment); |
| 82 ConstantEnvironment constants = new KernelConstantEnvironment(this); | 81 ConstantEnvironment constants = new KernelConstantEnvironment(this); |
| 83 _nativeBehaviorBuilder = | 82 _nativeBehaviorBuilder = |
| 84 new KernelBehaviorBuilder(_commonElements, helpers, constants); | 83 new KernelBehaviorBuilder(_commonElements, constants); |
| 85 _typeConverter = new DartTypeConverter(this); | 84 _typeConverter = new DartTypeConverter(this); |
| 86 } | 85 } |
| 87 | 86 |
| 88 KMethod get _mainFunction { | 87 KMethod get _mainFunction { |
| 89 return _env.program.mainMethod != null | 88 return _env.program.mainMethod != null |
| 90 ? _getMethod(_env.program.mainMethod) | 89 ? _getMethod(_env.program.mainMethod) |
| 91 : null; | 90 : null; |
| 92 } | 91 } |
| 93 | 92 |
| 94 KLibrary get _mainLibrary { | 93 KLibrary get _mainLibrary { |
| (...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 856 "Outermost invalid types not currently supported"); | 855 "Outermost invalid types not currently supported"); |
| 857 } | 856 } |
| 858 // Nested invalid types are treated as `dynamic`. | 857 // Nested invalid types are treated as `dynamic`. |
| 859 return const DynamicType(); | 858 return const DynamicType(); |
| 860 } | 859 } |
| 861 } | 860 } |
| 862 | 861 |
| 863 /// [native.BehaviorBuilder] for kernel based elements. | 862 /// [native.BehaviorBuilder] for kernel based elements. |
| 864 class KernelBehaviorBuilder extends native.BehaviorBuilder { | 863 class KernelBehaviorBuilder extends native.BehaviorBuilder { |
| 865 final CommonElements commonElements; | 864 final CommonElements commonElements; |
| 866 final BackendHelpers helpers; | |
| 867 final ConstantEnvironment constants; | 865 final ConstantEnvironment constants; |
| 868 | 866 |
| 869 KernelBehaviorBuilder(this.commonElements, this.helpers, this.constants); | 867 KernelBehaviorBuilder(this.commonElements, this.constants); |
| 870 | 868 |
| 871 @override | 869 @override |
| 872 bool get trustJSInteropTypeAnnotations { | 870 bool get trustJSInteropTypeAnnotations { |
| 873 throw new UnimplementedError( | 871 throw new UnimplementedError( |
| 874 "KernelNativeBehaviorComputer.trustJSInteropTypeAnnotations"); | 872 "KernelNativeBehaviorComputer.trustJSInteropTypeAnnotations"); |
| 875 } | 873 } |
| 876 | 874 |
| 877 @override | 875 @override |
| 878 DiagnosticReporter get reporter { | 876 DiagnosticReporter get reporter { |
| 879 throw new UnimplementedError("KernelNativeBehaviorComputer.reporter"); | 877 throw new UnimplementedError("KernelNativeBehaviorComputer.reporter"); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1005 } | 1003 } |
| 1006 | 1004 |
| 1007 InterfaceType getMixinTypeForClass(KClass cls) { | 1005 InterfaceType getMixinTypeForClass(KClass cls) { |
| 1008 KClassEnv env = builder._classEnvs[cls.classIndex]; | 1006 KClassEnv env = builder._classEnvs[cls.classIndex]; |
| 1009 ir.Supertype mixedInType = env.cls.mixedInType; | 1007 ir.Supertype mixedInType = env.cls.mixedInType; |
| 1010 if (mixedInType == null) return null; | 1008 if (mixedInType == null) return null; |
| 1011 return builder.createInterfaceType( | 1009 return builder.createInterfaceType( |
| 1012 mixedInType.classNode, mixedInType.typeArguments); | 1010 mixedInType.classNode, mixedInType.typeArguments); |
| 1013 } | 1011 } |
| 1014 } | 1012 } |
| OLD | NEW |