| 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); | |
| 255 writeNodeList(node.classes); | 254 writeNodeList(node.classes); |
| 256 writeNodeList(node.fields); | 255 writeNodeList(node.fields); |
| 257 writeNodeList(node.procedures); | 256 writeNodeList(node.procedures); |
| 258 } | 257 } |
| 259 | 258 |
| 260 void writeDeferredImports(Library library) { | 259 void writeDeferredImports(Library library) { |
| 261 _deferredImportIndexer = library.deferredImports.isEmpty | 260 _deferredImportIndexer = library.deferredImports.isEmpty |
| 262 ? const <DeferredImport, int>{} | 261 ? const <DeferredImport, int>{} |
| 263 : <DeferredImport, int>{}; | 262 : <DeferredImport, int>{}; |
| 264 writeUInt30(library.deferredImports.length); | 263 writeUInt30(library.deferredImports.length); |
| 265 for (int i = 0; i < library.deferredImports.length; ++i) { | 264 for (int i = 0; i < library.deferredImports.length; ++i) { |
| 266 var importNode = library.deferredImports[i]; | 265 var importNode = library.deferredImports[i]; |
| 267 _deferredImportIndexer[importNode] = i; | 266 _deferredImportIndexer[importNode] = i; |
| 268 writeDeferredImport(importNode); | 267 writeDeferredImport(importNode); |
| 269 } | 268 } |
| 270 } | 269 } |
| 271 | 270 |
| 272 void writeDeferredImport(DeferredImport node) { | 271 void writeDeferredImport(DeferredImport node) { |
| 273 writeLibraryReference(node.importedLibrary); | 272 writeLibraryReference(node.importedLibrary); |
| 274 writeStringReference(node.name); | 273 writeStringReference(node.name); |
| 275 } | 274 } |
| 276 | 275 |
| 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 | |
| 286 void writeAnnotation(Expression annotation) { | 276 void writeAnnotation(Expression annotation) { |
| 287 _variableIndexer ??= new VariableIndexer(); | 277 _variableIndexer ??= new VariableIndexer(); |
| 288 writeNode(annotation); | 278 writeNode(annotation); |
| 289 } | 279 } |
| 290 | 280 |
| 291 void writeAnnotationList(List<Expression> annotations) { | 281 void writeAnnotationList(List<Expression> annotations) { |
| 292 writeList(annotations, writeAnnotation); | 282 writeList(annotations, writeAnnotation); |
| 293 } | 283 } |
| 294 | 284 |
| 295 int _encodeClassFlags(bool isAbstract, ClassLevel level) { | 285 int _encodeClassFlags(bool isAbstract, ClassLevel level) { |
| (...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1012 | 1002 |
| 1013 visitTypeParameterType(TypeParameterType node) { | 1003 visitTypeParameterType(TypeParameterType node) { |
| 1014 writeByte(Tag.TypeParameterType); | 1004 writeByte(Tag.TypeParameterType); |
| 1015 writeUInt30(_typeParameterIndexer[node.parameter]); | 1005 writeUInt30(_typeParameterIndexer[node.parameter]); |
| 1016 } | 1006 } |
| 1017 | 1007 |
| 1018 visitVectorType(VectorType node) { | 1008 visitVectorType(VectorType node) { |
| 1019 writeByte(Tag.VectorType); | 1009 writeByte(Tag.VectorType); |
| 1020 } | 1010 } |
| 1021 | 1011 |
| 1022 visitTypedefType(TypedefType node) { | |
| 1023 writeByte(Tag.TypedefType); | |
| 1024 writeReference(node.typedefReference); | |
| 1025 writeNodeList(node.typeArguments); | |
| 1026 } | |
| 1027 | |
| 1028 visitTypeParameter(TypeParameter node) { | 1012 visitTypeParameter(TypeParameter node) { |
| 1029 writeStringReference(node.name ?? ''); | 1013 writeStringReference(node.name ?? ''); |
| 1030 writeNode(node.bound); | 1014 writeNode(node.bound); |
| 1031 } | 1015 } |
| 1032 | 1016 |
| 1033 defaultNode(Node node) { | 1017 defaultNode(Node node) { |
| 1034 throw 'Unsupported node: $node'; | 1018 throw 'Unsupported node: $node'; |
| 1035 } | 1019 } |
| 1036 } | 1020 } |
| 1037 | 1021 |
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1349 void flush() { | 1333 void flush() { |
| 1350 _sink.add(_buffer.sublist(0, length)); | 1334 _sink.add(_buffer.sublist(0, length)); |
| 1351 _buffer = new Uint8List(SIZE); | 1335 _buffer = new Uint8List(SIZE); |
| 1352 length = 0; | 1336 length = 0; |
| 1353 } | 1337 } |
| 1354 | 1338 |
| 1355 void flushAndDestroy() { | 1339 void flushAndDestroy() { |
| 1356 _sink.add(_buffer.sublist(0, length)); | 1340 _sink.add(_buffer.sublist(0, length)); |
| 1357 } | 1341 } |
| 1358 } | 1342 } |
| OLD | NEW |