| Index: pkg/kernel/lib/binary/ast_to_binary.dart
 | 
| diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart
 | 
| index 68f3687fca8d7ae7c7e5c3476f673a1c9146e046..37dd80ea77ba44aec7fce76800ce623f594d03c8 100644
 | 
| --- a/pkg/kernel/lib/binary/ast_to_binary.dart
 | 
| +++ b/pkg/kernel/lib/binary/ast_to_binary.dart
 | 
| @@ -137,20 +137,23 @@ class BinaryPrinter extends Visitor {
 | 
|      _importTable = new ProgramImportTable(program);
 | 
|      _stringIndexer.build(program);
 | 
|      writeStringTable(_stringIndexer);
 | 
| -    writeUriToLineStarts(program);
 | 
| +    writeUriToSource(program);
 | 
|      writeList(program.libraries, writeNode);
 | 
|      writeMemberReference(program.mainMethod, allowNull: true);
 | 
|      _flush();
 | 
|    }
 | 
|  
 | 
| -  void writeUriToLineStarts(Program program) {
 | 
| -    program.uriToLineStarts.keys.forEach((uri) {
 | 
| +  void writeUriToSource(Program program) {
 | 
| +    program.uriToSource.keys.forEach((uri) {
 | 
|        _sourceUriIndexer.put(uri);
 | 
|      });
 | 
|      writeStringTable(_sourceUriIndexer);
 | 
|      for (int i = 0; i < _sourceUriIndexer.entries.length; i++) {
 | 
|        String uri = _sourceUriIndexer.entries[i].value;
 | 
| -      List<int> lineStarts = program.uriToLineStarts[uri] ?? [];
 | 
| +      Source source = program.uriToSource[uri] ?? new Source([], '');
 | 
| +      String sourceCode = source.source;
 | 
| +      writeStringTableEntry(sourceCode);
 | 
| +      List<int> lineStarts = source.lineStarts;
 | 
|        writeUInt30(lineStarts.length);
 | 
|        int previousLineStart = 0;
 | 
|        lineStarts.forEach((lineStart) {
 | 
| 
 |