Index: pkg/kernel/lib/binary/loader.dart |
diff --git a/pkg/kernel/lib/binary/loader.dart b/pkg/kernel/lib/binary/loader.dart |
deleted file mode 100644 |
index 8ee8fb51b2e6124957c48438db330ae9d995aaf2..0000000000000000000000000000000000000000 |
--- a/pkg/kernel/lib/binary/loader.dart |
+++ /dev/null |
@@ -1,116 +0,0 @@ |
-// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
-library kernel.binary.loader; |
- |
-import '../repository.dart'; |
-import '../ast.dart'; |
-import 'tag.dart'; |
-import 'dart:io'; |
-import 'ast_from_binary.dart'; |
- |
-abstract class BinaryReferenceLoader { |
- Library getLibraryReference(Library from, String relativePath); |
- Class getClassReference(Library library, int tag, int index); |
- Member getMemberReference(TreeNode classOrLibrary, int tag, int index); |
- Member getLibraryMemberReference(Library library, int tag, int index); |
- Member getClassMemberReference(Class classNode, int tag, int index); |
-} |
- |
-class BinaryLoader implements BinaryReferenceLoader { |
- final Repository repository; |
- |
- BinaryLoader(this.repository); |
- |
- Library getLibraryReference(Library from, String relativePath) { |
- var fullUri = from.importUri.resolve(relativePath); |
- return repository.getLibraryReference(fullUri); |
- } |
- |
- static int _pow2roundup(int x) { |
- --x; |
- x |= x >> 1; |
- x |= x >> 2; |
- x |= x >> 4; |
- x |= x >> 8; |
- x |= x >> 16; |
- return x + 1; |
- } |
- |
- TreeNode _extendList( |
- TreeNode parent, List<TreeNode> items, int index, TreeNode build()) { |
- if (items.length <= index) { |
- // Avoid excessive resizing by growing the list in steps. |
- items.length = _pow2roundup(index + 1); |
- } |
- return items[index] ??= build()..parent = parent; |
- } |
- |
- Class getClassReference(Library library, int tag, int index) { |
- return _extendList( |
- library, library.classes, index, () => _buildClassReference(tag)); |
- } |
- |
- Class _buildClassReference(int tag) { |
- return new Class(); |
- } |
- |
- Field _buildFieldReference() { |
- return new Field(null); |
- } |
- |
- Constructor _buildConstructorReference() { |
- return new Constructor(null); |
- } |
- |
- Procedure _buildProcedureReference() { |
- return new Procedure(null, null, null); |
- } |
- |
- Member getMemberReference(TreeNode classOrLibrary, int tag, int index) { |
- if (classOrLibrary is Class) { |
- return getClassMemberReference(classOrLibrary, tag, index); |
- } else { |
- return getLibraryMemberReference(classOrLibrary, tag, index); |
- } |
- } |
- |
- Member getLibraryMemberReference(Library library, int tag, int index) { |
- switch (tag) { |
- case Tag.LibraryFieldReference: |
- case Tag.Field: |
- return _extendList( |
- library, library.fields, index, _buildFieldReference); |
- case Tag.LibraryProcedureReference: |
- case Tag.Procedure: |
- return _extendList( |
- library, library.procedures, index, _buildProcedureReference); |
- default: |
- throw 'Invalid library member reference tag: $tag'; |
- } |
- } |
- |
- Member getClassMemberReference(Class classNode, int tag, int index) { |
- switch (tag) { |
- case Tag.ClassFieldReference: |
- case Tag.Field: |
- return _extendList( |
- classNode, classNode.fields, index, _buildFieldReference); |
- case Tag.ClassConstructorReference: |
- case Tag.Constructor: |
- return _extendList(classNode, classNode.constructors, index, |
- _buildConstructorReference); |
- case Tag.ClassProcedureReference: |
- case Tag.Procedure: |
- return _extendList( |
- classNode, classNode.procedures, index, _buildProcedureReference); |
- default: |
- throw 'Invalid library member reference tag: $tag'; |
- } |
- } |
- |
- Program loadProgram(String filename) { |
- var bytes = new File(filename).readAsBytesSync(); |
- return new BinaryBuilder(this, bytes, filename).readProgramFile(); |
- } |
-} |