| 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 5092e69294be5f81bc22c0af49e849557176e5f6..cfc65fffe9b4a7063ccb11c6161f4bffa892750d 100644
|
| --- a/pkg/kernel/lib/binary/ast_to_binary.dart
|
| +++ b/pkg/kernel/lib/binary/ast_to_binary.dart
|
| @@ -74,16 +74,17 @@ class BinaryPrinter extends Visitor {
|
| writeBytes(utf8Bytes);
|
| }
|
|
|
| - void writeStringTableEntry(String string) {
|
| - List<int> utf8Bytes = const Utf8Encoder().convert(string);
|
| - writeUInt30(utf8Bytes.length);
|
| - writeBytes(utf8Bytes);
|
| - }
|
| -
|
| void writeStringTable(StringIndexer indexer) {
|
| + // Write the end offsets.
|
| writeUInt30(indexer.numberOfStrings);
|
| + int endOffset = 0;
|
| + for (var entry in indexer.entries) {
|
| + endOffset += entry.utf8Bytes.length;
|
| + writeUInt30(endOffset);
|
| + }
|
| + // Write the UTF-8 encoded strings.
|
| for (var entry in indexer.entries) {
|
| - writeStringTableEntry(entry.value);
|
| + writeBytes(entry.utf8Bytes);
|
| }
|
| }
|
|
|
| @@ -1096,9 +1097,12 @@ class TypeParameterIndexer {
|
|
|
| class StringTableEntry implements Comparable<StringTableEntry> {
|
| final String value;
|
| + final List<int> utf8Bytes;
|
| int frequency = 0;
|
|
|
| - StringTableEntry(this.value);
|
| + StringTableEntry(String value)
|
| + : value = value,
|
| + utf8Bytes = const Utf8Encoder().convert(value);
|
|
|
| int compareTo(StringTableEntry other) => other.frequency - frequency;
|
| }
|
|
|