Index: pkg/kernel/lib/binary/ast_from_binary.dart |
diff --git a/pkg/kernel/lib/binary/ast_from_binary.dart b/pkg/kernel/lib/binary/ast_from_binary.dart |
index f0c34cd1dab49c9515f8e8d54d17baa8b22fc2a0..3f4d454bea920b509248031006af78cd77553f1f 100644 |
--- a/pkg/kernel/lib/binary/ast_from_binary.dart |
+++ b/pkg/kernel/lib/binary/ast_from_binary.dart |
@@ -68,7 +68,7 @@ class BinaryBuilder { |
} |
} |
- int readMagicWord() { |
+ int readUint32() { |
return (readByte() << 24) | |
(readByte() << 16) | |
(readByte() << 8) | |
@@ -237,7 +237,7 @@ class BinaryBuilder { |
_readOneProgram(program); |
if (_byteIndex < _bytes.length) { |
if (_byteIndex + 3 < _bytes.length) { |
- int magic = readMagicWord(); |
+ int magic = readUint32(); |
if (magic == Tag.ProgramFile) { |
throw 'Concatenated program file given when a single program ' |
'was expected.'; |
@@ -248,7 +248,7 @@ class BinaryBuilder { |
} |
void _readOneProgram(Program program) { |
- int magic = readMagicWord(); |
+ int magic = readUint32(); |
if (magic != Tag.ProgramFile) { |
throw fail('This is not a binary dart file. ' |
'Magic number was: ${magic.toRadixString(16)}'); |
@@ -264,6 +264,16 @@ class BinaryBuilder { |
} |
var mainMethod = readMemberReference(allowNull: true); |
program.mainMethodName ??= mainMethod; |
+ readUint32(); // binary offset for source table. |
+ readUint32(); // binary offset for link table. |
+ readUint32(); // main |
+ for (int i = 0; i < numberOfLibraries; i++) { |
+ readUint32(); // binary offset for library #i. |
+ } |
+ int numberOfLibrariesCheck = readUint32(); |
+ if (numberOfLibraries != numberOfLibrariesCheck) { |
+ throw "Expected number of libraries to match!"; |
Kevin Millikin (Google)
2017/06/29 12:27:36
Even if you're just throwing a string and not some
jensj
2017/06/30 05:51:17
I'm not sure about throwing if we're not at the en
|
+ } |
} |
Map<String, Source> readUriToSource() { |