a196d68145
This reverts commit 86641d07ae.
Reason for revert: Appears to break Flutter 3H:
- https://logs.chromium.org/logs/dart/buildbucket/cr-buildbucket.appspot.com/8897037674557388176/+/steps/flutter_test_framework_coverage/0/stdout
- https://logs.chromium.org/logs/dart/buildbucket/cr-buildbucket.appspot.com/8897037674557388176/+/steps/flutter_test_framework_tests/0/stdout
- https://logs.chromium.org/logs/dart/buildbucket/cr-buildbucket.appspot.com/8897037674557388176/+/steps/flutter_test_hostonly_devicelab_tests/0/stdout
Original change's description:
> [vm, front-end server] Cache generated bytecode using separate file
>
> Previously, generated bytecode was cached using metadata in kernel AST.
> When serializaing kernel AST (for subsequent compilations) incremental
> serialization was not used, so AST serialization was considerably
> slower in bytecode mode compared to non-bytecode mode.
>
> Apparently, metadata is not compatible with incremental serialization
> (https://github.com/dart-lang/sdk/issues/39302).
>
> This change reimplements caching of generated bytecode using a separate
> 'foo.dill.cache' file near the generated 'foo.dill' and 'foo.dill.ast'.
> AST is now written using incremental serialization both in bytecode
> and non-bytecode modes.
>
> flutter_test_performance benchmark:
>
> AST mode:
>
> "without_change_elapsed_time_ms": 2615-2652,
> "implementation_change_elapsed_time_ms": 6292-6394,
> "interface_change_elapsed_time_ms": 6183-6484,
> "with_coverage_time_ms": 2723-2834
>
> Bytecode mode, before this change:
>
> "without_change_elapsed_time_ms": 3246-3295,
> "implementation_change_elapsed_time_ms": 7998-8068,
> "interface_change_elapsed_time_ms": 7899-8029,
> "with_coverage_time_ms": 3316-3378
>
> Bytecode mode, after this change:
>
> "without_change_elapsed_time_ms": 2689-2737,
> "implementation_change_elapsed_time_ms": 7630-7677,
> "interface_change_elapsed_time_ms": 7724-7917,
> "with_coverage_time_ms": 2841-2949
>
> Change-Id: I603d33f49949146cf6620226d810f2f3cb9853a9
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/124592
> Reviewed-by: Ryan Macnak <rmacnak@google.com>
> Commit-Queue: Alexander Markov <alexmarkov@google.com>
TBR=rmacnak@google.com,alexmarkov@google.com
Change-Id: Ib433b68b7de3b08179c9c080a10f62703cd2546d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/124983
Reviewed-by: Clement Skau <cskau@google.com>
Commit-Queue: Clement Skau <cskau@google.com>
38 lines
1.1 KiB
Dart
38 lines
1.1 KiB
Dart
// Copyright (c) 2019, 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.binary_cache;
|
|
|
|
import 'package:kernel/ast.dart'
|
|
show BinarySink, BinarySource, MetadataRepository, Node, TreeNode;
|
|
|
|
class BinaryCacheMetadataRepository extends MetadataRepository<List<int>> {
|
|
static const repositoryTag = 'vm.binary_cache';
|
|
|
|
@override
|
|
String get tag => repositoryTag;
|
|
|
|
@override
|
|
final Map<TreeNode, List<int>> mapping = <TreeNode, List<int>>{};
|
|
|
|
@override
|
|
void writeToBinary(List<int> metadata, Node node, BinarySink sink) {
|
|
sink.writeByteList(metadata);
|
|
}
|
|
|
|
@override
|
|
List<int> readFromBinary(Node node, BinarySource source) {
|
|
List<int> result = source.readByteList();
|
|
_weakMap[node] = result;
|
|
return result;
|
|
}
|
|
|
|
static List<int> lookup(Node node) => _weakMap[node];
|
|
static void insert(Node node, List<int> metadata) {
|
|
_weakMap[node] = metadata;
|
|
}
|
|
|
|
static final _weakMap = new Expando<List<int>>();
|
|
}
|