Index: pkg/kernel/lib/binary/limited_ast_to_binary.dart |
diff --git a/pkg/kernel/lib/binary/limited_ast_to_binary.dart b/pkg/kernel/lib/binary/limited_ast_to_binary.dart |
index 12e768b2e679698ff0f9f93364d017c2473f68f5..a4307e50e2cae0d9687cdf75418ad2cb3157fdde 100644 |
--- a/pkg/kernel/lib/binary/limited_ast_to_binary.dart |
+++ b/pkg/kernel/lib/binary/limited_ast_to_binary.dart |
@@ -13,7 +13,17 @@ import 'package:kernel/binary/ast_to_binary.dart'; |
class LimitedBinaryPrinter extends BinaryPrinter { |
final LibraryFilter predicate; |
- LimitedBinaryPrinter(Sink<List<int>> sink, this.predicate) |
+ /// Excludes all uriToSource information. |
+ /// |
+ /// By default the [predicate] above will only exclude canonical names and |
+ /// kernel libraries, but it will still emit the sources for all libraries. |
+ /// filtered by libraries matching [predicate]. |
+ // TODO(sigmund): provide a way to filter sources directly based on |
+ // [predicate]. That requires special logic to handle sources from part files. |
+ final bool excludeUriToSource; |
+ |
+ LimitedBinaryPrinter( |
+ Sink<List<int>> sink, this.predicate, this.excludeUriToSource) |
: super(sink, stringIndexer: new ReferencesStringIndexer()); |
@override |
@@ -68,6 +78,19 @@ class LimitedBinaryPrinter extends BinaryPrinter { |
var librariesToWrite = libraries.where(predicate).toList(); |
super.writeProgramIndex(program, librariesToWrite); |
} |
+ |
+ void writeUriToSource(Program program) { |
+ if (!excludeUriToSource) { |
+ super.writeUriToSource(program); |
+ } else { |
+ // Emit a practically empty uriToSrouce table. |
+ writeStringTable(new StringIndexer()); |
+ |
+ // Add an entry for '', which is always included by default. |
+ writeUtf8Bytes(const <int>[]); |
+ writeUInt30(0); |
+ } |
+ } |
} |
/// Extension of [StringIndexer] that also indexes canonical names of |