pub struct FunctionBuilder { /* private fields */ }Implementations§
Source§impl FunctionBuilder
impl FunctionBuilder
Sourcepub fn new(ty: FuncType) -> Self
pub fn new(ty: FuncType) -> Self
Examples found in repository?
examples/simple_add.rs (line 14)
10fn main() {
11 let out_file = env::args().nth(1).expect("argument missing: output file");
12
13 let mut md = ModuleBuilder::new();
14 let f = FunctionBuilder::new(funtype!((i32, i32) -> i32))
15 .code(|cb, params| {
16 let a = params[0];
17 let b = params[1];
18 cb.get_local(a).get_local(b).i32_add().return_()
19 })
20 .build();
21 md.new_function(f);
22
23 let module = md.build();
24 let mut code = Vec::new();
25 module.dump(&mut code);
26 let mut out = File::create(out_file).unwrap();
27 out.write(&code).unwrap();
28}More examples
examples/fibonacci.rs (line 15)
9fn main() {
10 let out_file = env::args().nth(1).expect("argument missing: output file");
11
12 let mut md = ModuleBuilder::new();
13 // function to create must be the 0th function of the module...
14 let fib = FunctionIndex(0).into();
15 let f = FunctionBuilder::new(funtype!((i32) -> i32))
16 .code(|cb, params| {
17 let n = params[0];
18 cb.get_local(n)
19 .constant(1i32)
20 .i32_sub()
21 .call(fib)
22 .get_local(n)
23 .constant(2i32)
24 .i32_sub()
25 .call(fib)
26 .i32_add()
27 .return_()
28 })
29 .build();
30 md.new_function(f);
31
32 let module = md.build();
33 let mut code = Vec::new();
34 module.dump(&mut code);
35 let mut out = File::create(out_file).unwrap();
36 out.write(&code).unwrap();
37}Sourcepub fn build(self) -> (FuncType, FunctionBody)
pub fn build(self) -> (FuncType, FunctionBody)
Examples found in repository?
examples/simple_add.rs (line 20)
10fn main() {
11 let out_file = env::args().nth(1).expect("argument missing: output file");
12
13 let mut md = ModuleBuilder::new();
14 let f = FunctionBuilder::new(funtype!((i32, i32) -> i32))
15 .code(|cb, params| {
16 let a = params[0];
17 let b = params[1];
18 cb.get_local(a).get_local(b).i32_add().return_()
19 })
20 .build();
21 md.new_function(f);
22
23 let module = md.build();
24 let mut code = Vec::new();
25 module.dump(&mut code);
26 let mut out = File::create(out_file).unwrap();
27 out.write(&code).unwrap();
28}More examples
examples/fibonacci.rs (line 29)
9fn main() {
10 let out_file = env::args().nth(1).expect("argument missing: output file");
11
12 let mut md = ModuleBuilder::new();
13 // function to create must be the 0th function of the module...
14 let fib = FunctionIndex(0).into();
15 let f = FunctionBuilder::new(funtype!((i32) -> i32))
16 .code(|cb, params| {
17 let n = params[0];
18 cb.get_local(n)
19 .constant(1i32)
20 .i32_sub()
21 .call(fib)
22 .get_local(n)
23 .constant(2i32)
24 .i32_sub()
25 .call(fib)
26 .i32_add()
27 .return_()
28 })
29 .build();
30 md.new_function(f);
31
32 let module = md.build();
33 let mut code = Vec::new();
34 module.dump(&mut code);
35 let mut out = File::create(out_file).unwrap();
36 out.write(&code).unwrap();
37}pub fn new_local(&mut self, ty: ValueType) -> LocalIndex
pub fn new_locals(&mut self, tys: Vec<ValueType>) -> Vec<LocalIndex>
Sourcepub fn code<F: FnOnce(CodeBuilder, &[LocalIndex]) -> CodeBuilder>(
self,
f: F,
) -> Self
pub fn code<F: FnOnce(CodeBuilder, &[LocalIndex]) -> CodeBuilder>( self, f: F, ) -> Self
Examples found in repository?
examples/simple_add.rs (lines 15-19)
10fn main() {
11 let out_file = env::args().nth(1).expect("argument missing: output file");
12
13 let mut md = ModuleBuilder::new();
14 let f = FunctionBuilder::new(funtype!((i32, i32) -> i32))
15 .code(|cb, params| {
16 let a = params[0];
17 let b = params[1];
18 cb.get_local(a).get_local(b).i32_add().return_()
19 })
20 .build();
21 md.new_function(f);
22
23 let module = md.build();
24 let mut code = Vec::new();
25 module.dump(&mut code);
26 let mut out = File::create(out_file).unwrap();
27 out.write(&code).unwrap();
28}More examples
examples/fibonacci.rs (lines 16-28)
9fn main() {
10 let out_file = env::args().nth(1).expect("argument missing: output file");
11
12 let mut md = ModuleBuilder::new();
13 // function to create must be the 0th function of the module...
14 let fib = FunctionIndex(0).into();
15 let f = FunctionBuilder::new(funtype!((i32) -> i32))
16 .code(|cb, params| {
17 let n = params[0];
18 cb.get_local(n)
19 .constant(1i32)
20 .i32_sub()
21 .call(fib)
22 .get_local(n)
23 .constant(2i32)
24 .i32_sub()
25 .call(fib)
26 .i32_add()
27 .return_()
28 })
29 .build();
30 md.new_function(f);
31
32 let module = md.build();
33 let mut code = Vec::new();
34 module.dump(&mut code);
35 let mut out = File::create(out_file).unwrap();
36 out.write(&code).unwrap();
37}Auto Trait Implementations§
impl Freeze for FunctionBuilder
impl RefUnwindSafe for FunctionBuilder
impl Send for FunctionBuilder
impl Sync for FunctionBuilder
impl Unpin for FunctionBuilder
impl UnsafeUnpin for FunctionBuilder
impl UnwindSafe for FunctionBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more