MCPcopy Index your code
hub / github.com/aiscriptdev/aiscript / compile

Function compile

aiscript-vm/src/compiler/mod.rs:12–35  ·  view source on GitHub ↗
(
    ctx: Context<'gc>,
    source: &'gc str,
)

Source from the content-addressed store, hash-verified

10mod optimizer;
11
12pub fn compile<'gc>(
13 ctx: Context<'gc>,
14 source: &'gc str,
15) -> Result<BTreeMap<ChunkId, Gc<'gc, Function<'gc>>>, VmError> {
16 let mut parser = Parser::new(ctx, source);
17 let program = parser.parse()?;
18 #[cfg(feature = "debug")]
19 println!("AST: {}", program);
20 #[cfg(feature = "optimizer")]
21 let optimizer = optimizer::ChunkOptimizer::new();
22
23 CodeGen::generate(program, ctx).map(|chunks| {
24 chunks
25 .into_iter()
26 .map(|(id, function)| {
27 #[cfg(feature = "optimizer")]
28 let mut function = function;
29 #[cfg(feature = "optimizer")]
30 optimizer.optimize(&mut function.chunk);
31 (id, Gc::new(&ctx, function))
32 })
33 .collect()
34 })
35}

Callers 2

compileMethod · 0.85
import_moduleMethod · 0.85

Calls 2

parseMethod · 0.45
optimizeMethod · 0.45

Tested by

no test coverage detected