// Copyright (c) 2025, 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. import 'dart:typed_data' show Uint8List; import 'package:dart2bytecode/bytecode_generator.dart' show generateBytecode; import 'package:dart2bytecode/options.dart' show BytecodeOptions; import 'package:kernel/ast.dart' show Component, Library; import 'package:kernel/binary/ast_to_binary.dart' show BytesSink; import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; import 'package:kernel/core_types.dart' show CoreTypes; import 'package:kernel/target/targets.dart' show Target; import '../../vm/bin/kernel_service.dart' as kernel_service; Uint8List _generateBytecode( Component component, List libraries, CoreTypes coreTypes, ClassHierarchy hierarchy, Target target, bool enableAsserts, { Set extraLoadedLibraries = const {}, }) { final byteSink = new BytesSink(); generateBytecode( component, byteSink, libraries: libraries, extraLoadedLibraries: extraLoadedLibraries, coreTypes: coreTypes, hierarchy: hierarchy, target: target, options: BytecodeOptions( enableAsserts: enableAsserts, emitSourcePositions: true, emitLocalVarInfo: true, emitInstanceFieldInitializers: true, embedSourceText: true, recordCoverage: true, ), ); return byteSink.builder.takeBytes(); } // Wire up bytecode generator to the kernel service to avoid // circular dependency between package:vm and package:dart2bytecode. main([args]) { kernel_service.bytecodeGenerator = _generateBytecode; return kernel_service.main(args); }