MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / sample_function

Function sample_function

cranelift/frontend/src/frontend.rs:1211–1306  ·  view source on GitHub ↗
(lazy_seal: bool)

Source from the content-addressed store, hash-verified

1209 use target_lexicon::PointerWidth;
1210
1211 fn sample_function(lazy_seal: bool) {
1212 let mut sig = Signature::new(CallConv::SystemV);
1213 sig.returns.push(AbiParam::new(I32));
1214 sig.params.push(AbiParam::new(I32));
1215
1216 let mut fn_ctx = FunctionBuilderContext::new();
1217 let mut func = Function::with_name_signature(UserFuncName::testcase("sample"), sig);
1218 {
1219 let mut builder = FunctionBuilder::new(&mut func, &mut fn_ctx);
1220
1221 let block0 = builder.create_block();
1222 let block1 = builder.create_block();
1223 let block2 = builder.create_block();
1224 let block3 = builder.create_block();
1225 let x = builder.declare_var(I32);
1226 let y = builder.declare_var(I32);
1227 let z = builder.declare_var(I32);
1228
1229 builder.append_block_params_for_function_params(block0);
1230
1231 builder.switch_to_block(block0);
1232 if !lazy_seal {
1233 builder.seal_block(block0);
1234 }
1235 {
1236 let tmp = builder.block_params(block0)[0]; // the first function parameter
1237 builder.def_var(x, tmp);
1238 }
1239 {
1240 let tmp = builder.ins().iconst(I32, 2);
1241 builder.def_var(y, tmp);
1242 }
1243 {
1244 let arg1 = builder.use_var(x);
1245 let arg2 = builder.use_var(y);
1246 let tmp = builder.ins().iadd(arg1, arg2);
1247 builder.def_var(z, tmp);
1248 }
1249 builder.ins().jump(block1, &[]);
1250
1251 builder.switch_to_block(block1);
1252 {
1253 let arg1 = builder.use_var(y);
1254 let arg2 = builder.use_var(z);
1255 let tmp = builder.ins().iadd(arg1, arg2);
1256 builder.def_var(z, tmp);
1257 }
1258 {
1259 let arg = builder.use_var(y);
1260 builder.ins().brif(arg, block3, &[], block2, &[]);
1261 }
1262
1263 builder.switch_to_block(block2);
1264 if !lazy_seal {
1265 builder.seal_block(block2);
1266 }
1267 {
1268 let arg1 = builder.use_var(z);

Callers 2

sampleFunction · 0.85
sample_with_lazy_sealFunction · 0.85

Calls 15

verify_functionFunction · 0.85
create_blockMethod · 0.80
declare_varMethod · 0.80
switch_to_blockMethod · 0.80
jumpMethod · 0.80
newFunction · 0.50
builderFunction · 0.50
pushMethod · 0.45
seal_blockMethod · 0.45
block_paramsMethod · 0.45
def_varMethod · 0.45

Tested by 2

sampleFunction · 0.68
sample_with_lazy_sealFunction · 0.68