8e05cd278c
After d65a60db00, we don't need AST with the bytecode to initialize a kernel compiler since the kernel compiler will initialize from a separate file.
Remove duplicated BinaryCacheMetadataRepository.
Fix generating bytecode in non-incremental mode.
Change-Id: Ica7bfb5a2d86dcc224849a9934a7a4676b01f075
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119702
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
71 lines
2.1 KiB
Dart
71 lines
2.1 KiB
Dart
// Copyright (c) 2018, 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 vm.metadata.bytecode;
|
|
|
|
import 'package:kernel/ast.dart'
|
|
show BinarySink, BinarySource, MetadataRepository, Node, TreeNode;
|
|
import '../bytecode/bytecode_serialization.dart'
|
|
show BufferedWriter, BufferedReader, LinkWriter, LinkReader;
|
|
import '../bytecode/declarations.dart' show Component;
|
|
|
|
import 'dart:developer';
|
|
|
|
class BytecodeMetadata {
|
|
final Component component;
|
|
|
|
BytecodeMetadata(this.component);
|
|
|
|
void write(BufferedWriter writer) {
|
|
Timeline.timeSync("BytecodeMetadata.write", () {
|
|
component.write(writer);
|
|
});
|
|
}
|
|
|
|
factory BytecodeMetadata.read(BufferedReader reader) {
|
|
return Timeline.timeSync("BytecodeMetadata.read", () {
|
|
return new BytecodeMetadata(new Component.read(reader));
|
|
});
|
|
}
|
|
|
|
@override
|
|
String toString() => "\n"
|
|
"BytecodeMetadata {\n"
|
|
"$component\n"
|
|
"}\n";
|
|
}
|
|
|
|
/// Repository for [BytecodeMetadata].
|
|
class BytecodeMetadataRepository extends MetadataRepository<BytecodeMetadata> {
|
|
@override
|
|
final String tag = 'vm.bytecode';
|
|
|
|
@override
|
|
final Map<TreeNode, BytecodeMetadata> mapping =
|
|
<TreeNode, BytecodeMetadata>{};
|
|
|
|
@override
|
|
void writeToBinary(BytecodeMetadata metadata, Node node, BinarySink sink) {
|
|
final bytecodeComponent = metadata.component;
|
|
final linkWriter = new LinkWriter();
|
|
final writer = new BufferedWriter(
|
|
bytecodeComponent.version,
|
|
bytecodeComponent.stringTable,
|
|
bytecodeComponent.objectTable,
|
|
linkWriter,
|
|
baseOffset: sink.getBufferOffset());
|
|
metadata.write(writer);
|
|
sink.writeBytes(writer.takeBytes());
|
|
}
|
|
|
|
@override
|
|
BytecodeMetadata readFromBinary(Node node, BinarySource source) {
|
|
final linkReader = new LinkReader();
|
|
final reader = new BufferedReader(-1, null, null, linkReader, source.bytes,
|
|
baseOffset: source.currentOffset);
|
|
final bytecodeComponent = new Component.read(reader);
|
|
return new BytecodeMetadata(bytecodeComponent);
|
|
}
|
|
}
|