Skip to content

Commit

Permalink
Merge pull request #244 from near/start_to_main
Browse files Browse the repository at this point in the history
Use "main" instead of start function
  • Loading branch information
aborg-dev authored Mar 5, 2024
2 parents 3e35ac4 + c72b75f commit 207336a
Show file tree
Hide file tree
Showing 795 changed files with 817 additions and 800 deletions.
6 changes: 4 additions & 2 deletions cranelift/filetests/src/test_zkasm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ mod tests {
linker.func_wrap("env", "assert_eq_i64", |a: i64, b: i64| {
assert_eq!(a, b);
})?;
linker.instantiate(&mut store, &module)?;
let instance = linker.instantiate(&mut store, &module)?;
let main = instance.get_typed_func::<(), ()>(&mut store, "main")?;
main.call(&mut store, ())?;
Ok(())
}

Expand Down Expand Up @@ -118,7 +120,7 @@ mod tests {
testcase.push_str(&format!("\t{function_type}.{}\n", function_name));
}
testcase.push_str(&format!(
"\t{}\n\tcall $assert_eq_{})\n (start $main))\n",
"\t{}\n\tcall $assert_eq_{})\n (export \"main\" (func $main)))\n",
expected_result.trim(),
assert_type
));
Expand Down
19 changes: 13 additions & 6 deletions cranelift/filetests/src/zkasm_codegen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,20 @@ pub fn generate_zkasm(settings: &ZkasmSettings, wasm_module: &[u8]) -> String {

let mut program: Vec<String> = Vec::new();

let start_func = zkasm_environ
let (main_func_index, main_func_type) = zkasm_environ
.info
.start_func
.expect("Must have a start function");
.functions
.iter()
.find(|&(_, exportable_func)| exportable_func.export_names.contains(&"main".to_string()))
.expect("Must have a `main` function");

let signature = zkasm_environ.func_env().func_sig(main_func_type.entity);
assert!(signature.params.is_empty());
assert!(signature.returns.is_empty());

// TODO: Preamble should be generated by a linker and/or clift itself.
program.append(&mut generate_preamble(
start_func.index(),
main_func_index.index(),
&zkasm_environ.info.global_inits,
&zkasm_environ.info.data_inits,
));
Expand Down Expand Up @@ -87,7 +94,7 @@ fn handle_zkasm_settings(

/// Generates a preamble.
pub fn generate_preamble(
start_func_index: usize,
main_func_index: usize,
globals: &[(cranelift_wasm::GlobalIndex, cranelift_wasm::GlobalInit)],
data_segments: &[(u64, Vec<u8>)],
) -> Vec<String> {
Expand Down Expand Up @@ -142,7 +149,7 @@ pub fn generate_preamble(
// Stack memory is a separate region that is independent from the heap.
program.push(" 0xffff => SP".to_string());
program.push(" zkPC + 2 => RR".to_string());
program.push(format!(" :JMP(function_{})", start_func_index));
program.push(format!(" :JMP(function_{})", main_func_index));
program.push(" :JMP(finalizeExecution)".to_string());
program
}
Expand Down
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/_should_fail_unreachable.wat
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
(func $main
unreachable
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/add.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
i32.add
i32.const 1999999999
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/add_func.wat
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
(local.get $rhs)
)
)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/analyze-zkasm/testfiles/simple.wat
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(module
(func $main
nop)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/and.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
i32.and
i32.const 0
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@
(local.get $fp)
(i64.const -2872092127636481573)
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/counter.wat
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@
(local.get $counter)
(i32.const 10)
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/div.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
i32.div_s
i32.const 2
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/eqz.wat
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@
i32.eqz
i32.const 1
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/global.wat
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@
i32.add
i32.const 1
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/i32_add_overflows.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
i32.add
i32.const 0
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/i32_const.wat
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
i32.const 4
i32.const 4
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/i32_mul_overflows.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
i32.mul
i32.const 0
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/i64_const.wat
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
i64.const 9223372036854775807
i64.const 9223372036854775807
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/i64_div.wat
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@
i64.div_s
i64.const 214748366
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/i64_mul.wat
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
i64.mul
i64.mul
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/i64_mul_overflows.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
i64.mul
i64.const 0
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/i64_rem.wat
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@
i64.rem_s
i64.const 2
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/locals.wat
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
(local.get $z)
(i32.const 5)
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/locals_simple.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
(local.get $x)
(i32.const 2)
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/lt_s.wat
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
i32.lt_s
i32.const 0
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/lt_u.wat
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
i32.lt_u
i32.const 0
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/memory.wat
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@
i32.add
i32.const 5
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/memory_i32.wat
Original file line number Diff line number Diff line change
Expand Up @@ -103,5 +103,5 @@
i32.load offset=25 align=4
i32.const 122
call $assert_eq_i32)
(start $main)
(export "main" (func $main))
)
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/mul.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
i32.mul
i32.const 1999999999
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/ne.wat
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@
i32.ne
i32.const 1
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/nop.wat
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
nop
i32.const 0
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/or.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
i32.or
i32.const 0
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/rem.wat
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@
i32.rem_s
i32.const 2
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const -1
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const 0xffffffff
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const 0x00000000
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const 0x00000001
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const -100000
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const 0x80000000
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const 0x7fffffff
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const 0x00000000
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const 0xffffffff
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const 0x00000001
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const 0
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i32.wrap_i64
i32.const 0x9abcdef0
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_s
i64.const 0
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_s
i64.const 10000
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_s
i64.const -10000
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_s
i64.const -1
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_s
i64.const 0x000000007fffffff
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_s
i64.const 0xffffffff80000000
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_u
i64.const 0
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_u
i64.const 10000
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_u
i64.const 0x00000000ffffd8f0
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_u
i64.const 0xffffffff
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_u
i64.const 0x000000007fffffff
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
i64.extend_i32_u
i64.const 0x0000000080000000
call $assert_eq_i64)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/spectest/i32/add_1.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
i32.add
i32.const 2
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
2 changes: 1 addition & 1 deletion cranelift/zkasm_data/spectest/i32/add_2.wat
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
i32.add
i32.const 1
call $assert_eq_i32)
(start $main))
(export "main" (func $main)))
Loading

0 comments on commit 207336a

Please sign in to comment.