[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);