// Copyright 2024 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "include/v8-initialization.h"
#include "src/base/logging.h"
#include "test/benchmarks/cpp/benchmark-utils.h"
#include "third_party/google_benchmark_chrome/src/include/benchmark/benchmark.h"

// Expanded macro BENCHMARK_MAIN() to allow per-process setup.
int main(int argc, char** argv) {
  CHECK(v8::V8::InitializeICUDefaultLocation(argv[0]));
  v8::V8::InitializeExternalStartupData(argv[0]);

  v8::benchmarking::BenchmarkWithIsolate::InitializeProcess();
  // Contents of BENCHMARK_MAIN().
  {
    ::benchmark::Initialize(&argc, argv);
    if (::benchmark::ReportUnrecognizedArguments(argc, argv)) return 1;
    ::benchmark::RunSpecifiedBenchmarks();
    ::benchmark::Shutdown();
  }
  v8::benchmarking::BenchmarkWithIsolate::ShutdownProcess();
  return 0;
}
