[CFE] Fix instrumenter
The `enter` and `exit` methods in the instrumenter library were also
instrumented and called themselves recursively.
I believe this has been broken since
https://dart-review.googlesource.com/c/sdk/+/387704
Change-Id: Iac3f91a23a25e0122be6bde00a132e4bf530f5db
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/406020
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
diff --git a/pkg/front_end/tool/flame/instrumenter.dart b/pkg/front_end/tool/flame/instrumenter.dart
index 6fa3d16..a205cbd 100644
--- a/pkg/front_end/tool/flame/instrumenter.dart
+++ b/pkg/front_end/tool/flame/instrumenter.dart
@@ -304,12 +304,17 @@
Uint8List bytes = new File.fromUri(output).readAsBytesSync();
new BinaryBuilder(bytes).readComponent(component);
+ int librariesBefore = component.libraries.length;
+
bytes = File.fromUri(instrumentationLibDill).readAsBytesSync();
new BinaryBuilder(bytes).readComponent(component);
+ assert(librariesBefore + 1 == component.libraries.length);
+
List<Procedure> procedures = [];
List<Constructor> constructors = [];
- for (Library lib in component.libraries) {
+ for (int i = 0; i < librariesBefore; i++) {
+ Library lib = component.libraries[i];
if (lib.importUri.scheme == "dart") continue;
for (Class c in lib.classes) {
addIfWantedProcedures(config, procedures, c.procedures);