| OLD | NEW |
| 1 // Copyright (c) 2015, the Fletch project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Fletch 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.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
| 4 | 4 |
| 5 library fletchc.fletch_backend; | 5 library fletchc.fletch_backend; |
| 6 | 6 |
| 7 import 'dart:async' show | 7 import 'dart:async' show |
| 8 Future; | 8 Future; |
| 9 | 9 |
| 10 import 'package:compiler/src/dart2jslib.dart' show | 10 import 'package:compiler/src/dart2jslib.dart' show |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 InvokeNative; | 68 InvokeNative; |
| 69 | 69 |
| 70 import 'package:compiler/src/resolution/resolution.dart' show | 70 import 'package:compiler/src/resolution/resolution.dart' show |
| 71 TreeElements; | 71 TreeElements; |
| 72 | 72 |
| 73 import 'package:compiler/src/library_loader.dart' show | 73 import 'package:compiler/src/library_loader.dart' show |
| 74 LibraryLoader; | 74 LibraryLoader; |
| 75 | 75 |
| 76 import 'fletch_constants.dart' show | 76 import 'fletch_constants.dart' show |
| 77 FletchClassConstant, | 77 FletchClassConstant, |
| 78 FletchFunctionConstant; | 78 FletchFunctionConstant, |
| 79 FletchClassInstanceConstant; |
| 79 | 80 |
| 80 import 'compiled_function.dart' show | 81 import 'compiled_function.dart' show |
| 81 CompiledFunction; | 82 CompiledFunction; |
| 82 | 83 |
| 83 import 'fletch_context.dart'; | 84 import 'fletch_context.dart'; |
| 84 | 85 |
| 85 import 'fletch_selector.dart'; | 86 import 'fletch_selector.dart'; |
| 86 | 87 |
| 87 import 'function_codegen.dart'; | 88 import 'function_codegen.dart'; |
| 88 | 89 |
| (...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 915 ConstructedConstantValue value = constant; | 916 ConstructedConstantValue value = constant; |
| 916 ClassElement classElement = value.type.element; | 917 ClassElement classElement = value.type.element; |
| 917 CompiledClass compiledClass = compiledClasses[classElement]; | 918 CompiledClass compiledClass = compiledClasses[classElement]; |
| 918 for (ConstantValue field in value.fields) { | 919 for (ConstantValue field in value.fields) { |
| 919 int fieldId = context.compiledConstants[field]; | 920 int fieldId = context.compiledConstants[field]; |
| 920 commands.add(new PushFromMap(MapId.constants, fieldId)); | 921 commands.add(new PushFromMap(MapId.constants, fieldId)); |
| 921 } | 922 } |
| 922 commands | 923 commands |
| 923 ..add(new PushFromMap(MapId.classes, compiledClass.id)) | 924 ..add(new PushFromMap(MapId.classes, compiledClass.id)) |
| 924 ..add(const PushNewInstance()); | 925 ..add(const PushNewInstance()); |
| 926 } else if (constant is FletchClassInstanceConstant) { |
| 927 commands |
| 928 ..add(new PushFromMap(MapId.classes, constant.classId)) |
| 929 ..add(const PushNewInstance()); |
| 925 } else { | 930 } else { |
| 926 throw "Unsupported constant: ${constant.toStructuredString()}"; | 931 throw "Unsupported constant: ${constant.toStructuredString()}"; |
| 927 } | 932 } |
| 928 commands.add(new PopToMap(MapId.constants, id)); | 933 commands.add(new PopToMap(MapId.constants, id)); |
| 929 }); | 934 }); |
| 930 | 935 |
| 931 for (CompiledClass compiledClass in classes) { | 936 for (CompiledClass compiledClass in classes) { |
| 932 CompiledClass superclass = compiledClass.superclass; | 937 CompiledClass superclass = compiledClass.superclass; |
| 933 if (superclass == null) continue; | 938 if (superclass == null) continue; |
| 934 commands.add(new PushFromMap(MapId.classes, compiledClass.id)); | 939 commands.add(new PushFromMap(MapId.classes, compiledClass.id)); |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1155 compiler.reportError( | 1160 compiler.reportError( |
| 1156 spannable, MessageKind.GENERIC, {'text': reason}); | 1161 spannable, MessageKind.GENERIC, {'text': reason}); |
| 1157 var constString = constantSystem.createString( | 1162 var constString = constantSystem.createString( |
| 1158 new DartString.literal(reason)); | 1163 new DartString.literal(reason)); |
| 1159 context.markConstantUsed(constString); | 1164 context.markConstantUsed(constString); |
| 1160 function | 1165 function |
| 1161 ..builder.loadConst(function.allocateConstant(constString)) | 1166 ..builder.loadConst(function.allocateConstant(constString)) |
| 1162 ..builder.emitThrow(); | 1167 ..builder.emitThrow(); |
| 1163 } | 1168 } |
| 1164 } | 1169 } |
| OLD | NEW |