#!/usr/bin/env dart
// Copyright (c) 2016, 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.

// @dart = 2.9

import 'package:kernel/kernel.dart';
import 'dart:io';

/// Builds N copies of the AST for the given component.
/// Pass --print-metrics to the Dart VM to measure the memory use.
main(List<String> args) {
  if (args.length == 0) {
    print('USAGE: ast_membench FILE.dill NUM_COPIES');
    exit(1);
  }
  String filename = args[0];

  const int defaultCopyCount = 10;
  int copyCount = args.length == 2 ? int.parse(args[1]) : defaultCopyCount;
  List<Component> keepAlive = <Component>[];
  for (int i = 0; i < copyCount; ++i) {
    keepAlive.add(loadComponentFromBinary(filename));
  }

  print('$copyCount copies built');

  if (args.contains('-v')) {
    // Use of the list for something to avoid premature GC.
    int size = 0;
    for (var component in keepAlive) {
      size += component.libraries.length;
    }
    print(size);
  }
}
