| // 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<Library> libraries, | |
| CoreTypes coreTypes, | |
| ClassHierarchy hierarchy, | |
| Target target, | |
| bool enableAsserts, { | |
| Set<Library> 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); | |
| } |