| 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 library kernel.ast_to_binary; | 4 library kernel.ast_to_binary; |
| 5 | 5 |
| 6 import '../ast.dart'; | 6 import '../ast.dart'; |
| 7 import '../import_table.dart'; | 7 import '../import_table.dart'; |
| 8 import 'tag.dart'; | 8 import 'tag.dart'; |
| 9 import 'dart:convert'; | 9 import 'dart:convert'; |
| 10 import 'dart:typed_data'; | 10 import 'dart:typed_data'; |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 bool insideExternalLibrary = false; | 244 bool insideExternalLibrary = false; |
| 245 | 245 |
| 246 visitLibrary(Library node) { | 246 visitLibrary(Library node) { |
| 247 insideExternalLibrary = node.isExternal; | 247 insideExternalLibrary = node.isExternal; |
| 248 writeByte(insideExternalLibrary ? 1 : 0); | 248 writeByte(insideExternalLibrary ? 1 : 0); |
| 249 writeCanonicalNameReference(getCanonicalNameOfLibrary(node)); | 249 writeCanonicalNameReference(getCanonicalNameOfLibrary(node)); |
| 250 writeStringReference(node.name ?? ''); | 250 writeStringReference(node.name ?? ''); |
| 251 // TODO(jensj): We save (almost) the same URI twice. | 251 // TODO(jensj): We save (almost) the same URI twice. |
| 252 writeUriReference(node.fileUri ?? ''); | 252 writeUriReference(node.fileUri ?? ''); |
| 253 writeDeferredImports(node); | 253 writeDeferredImports(node); |
| 254 writeNodeList(node.typedefs); |
| 254 writeNodeList(node.classes); | 255 writeNodeList(node.classes); |
| 255 writeNodeList(node.fields); | 256 writeNodeList(node.fields); |
| 256 writeNodeList(node.procedures); | 257 writeNodeList(node.procedures); |
| 257 } | 258 } |
| 258 | 259 |
| 259 void writeDeferredImports(Library library) { | 260 void writeDeferredImports(Library library) { |
| 260 _deferredImportIndexer = library.deferredImports.isEmpty | 261 _deferredImportIndexer = library.deferredImports.isEmpty |
| 261 ? const <DeferredImport, int>{} | 262 ? const <DeferredImport, int>{} |
| 262 : <DeferredImport, int>{}; | 263 : <DeferredImport, int>{}; |
| 263 writeUInt30(library.deferredImports.length); | 264 writeUInt30(library.deferredImports.length); |
| 264 for (int i = 0; i < library.deferredImports.length; ++i) { | 265 for (int i = 0; i < library.deferredImports.length; ++i) { |
| 265 var importNode = library.deferredImports[i]; | 266 var importNode = library.deferredImports[i]; |
| 266 _deferredImportIndexer[importNode] = i; | 267 _deferredImportIndexer[importNode] = i; |
| 267 writeDeferredImport(importNode); | 268 writeDeferredImport(importNode); |
| 268 } | 269 } |
| 269 } | 270 } |
| 270 | 271 |
| 271 void writeDeferredImport(DeferredImport node) { | 272 void writeDeferredImport(DeferredImport node) { |
| 272 writeLibraryReference(node.importedLibrary); | 273 writeLibraryReference(node.importedLibrary); |
| 273 writeStringReference(node.name); | 274 writeStringReference(node.name); |
| 274 } | 275 } |
| 275 | 276 |
| 277 void visitTypedef(Typedef node) { |
| 278 writeCanonicalNameReference(getCanonicalNameOfTypedef(node)); |
| 279 writeOffset(node.fileOffset); |
| 280 writeStringReference(node.name); |
| 281 writeUriReference(node.fileUri ?? ''); |
| 282 writeNodeList(node.typeParameters); |
| 283 writeNode(node.type); |
| 284 } |
| 285 |
| 276 void writeAnnotation(Expression annotation) { | 286 void writeAnnotation(Expression annotation) { |
| 277 _variableIndexer ??= new VariableIndexer(); | 287 _variableIndexer ??= new VariableIndexer(); |
| 278 writeNode(annotation); | 288 writeNode(annotation); |
| 279 } | 289 } |
| 280 | 290 |
| 281 void writeAnnotationList(List<Expression> annotations) { | 291 void writeAnnotationList(List<Expression> annotations) { |
| 282 writeList(annotations, writeAnnotation); | 292 writeList(annotations, writeAnnotation); |
| 283 } | 293 } |
| 284 | 294 |
| 285 int _encodeClassFlags(bool isAbstract, ClassLevel level) { | 295 int _encodeClassFlags(bool isAbstract, ClassLevel level) { |
| (...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1002 | 1012 |
| 1003 visitTypeParameterType(TypeParameterType node) { | 1013 visitTypeParameterType(TypeParameterType node) { |
| 1004 writeByte(Tag.TypeParameterType); | 1014 writeByte(Tag.TypeParameterType); |
| 1005 writeUInt30(_typeParameterIndexer[node.parameter]); | 1015 writeUInt30(_typeParameterIndexer[node.parameter]); |
| 1006 } | 1016 } |
| 1007 | 1017 |
| 1008 visitVectorType(VectorType node) { | 1018 visitVectorType(VectorType node) { |
| 1009 writeByte(Tag.VectorType); | 1019 writeByte(Tag.VectorType); |
| 1010 } | 1020 } |
| 1011 | 1021 |
| 1022 visitTypedefType(TypedefType node) { |
| 1023 writeByte(Tag.TypedefType); |
| 1024 writeReference(node.typedefReference); |
| 1025 writeNodeList(node.typeArguments); |
| 1026 } |
| 1027 |
| 1012 visitTypeParameter(TypeParameter node) { | 1028 visitTypeParameter(TypeParameter node) { |
| 1013 writeStringReference(node.name ?? ''); | 1029 writeStringReference(node.name ?? ''); |
| 1014 writeNode(node.bound); | 1030 writeNode(node.bound); |
| 1015 } | 1031 } |
| 1016 | 1032 |
| 1017 defaultNode(Node node) { | 1033 defaultNode(Node node) { |
| 1018 throw 'Unsupported node: $node'; | 1034 throw 'Unsupported node: $node'; |
| 1019 } | 1035 } |
| 1020 } | 1036 } |
| 1021 | 1037 |
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1333 void flush() { | 1349 void flush() { |
| 1334 _sink.add(_buffer.sublist(0, length)); | 1350 _sink.add(_buffer.sublist(0, length)); |
| 1335 _buffer = new Uint8List(SIZE); | 1351 _buffer = new Uint8List(SIZE); |
| 1336 length = 0; | 1352 length = 0; |
| 1337 } | 1353 } |
| 1338 | 1354 |
| 1339 void flushAndDestroy() { | 1355 void flushAndDestroy() { |
| 1340 _sink.add(_buffer.sublist(0, length)); | 1356 _sink.add(_buffer.sublist(0, length)); |
| 1341 } | 1357 } |
| 1342 } | 1358 } |
| OLD | NEW |