Contracts: Translate .wat fixtures to rust (#2654)

- Translate all pallet-contracts fixtures from `wat` to Rust files.
- Fix read_sandbox_memory_as to not use MaxEncodedLen as this could
break if used with types with a non-fixed encoded len.

---------

Co-authored-by: alvicsam <alvicsam@gmail.com>
Co-authored-by: Alexander Samusev <41779041+alvicsam@users.noreply.github.com>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
Co-authored-by: command-bot <>
This commit is contained in:
PG Herveou
2024-01-12 21:10:54 +01:00
committed by GitHub
parent c421b87978
commit bd80dcf685
101 changed files with 2352 additions and 2602 deletions
@@ -84,8 +84,8 @@ impl HostFn for HostFnImpl {
gas: u64,
value: &[u8],
input: &[u8],
mut address: Option<&mut [u8]>,
mut output: Option<&mut [u8]>,
mut address: Option<&mut &mut [u8]>,
mut output: Option<&mut &mut [u8]>,
salt: &[u8],
) -> Result {
todo!()
@@ -98,8 +98,8 @@ impl HostFn for HostFnImpl {
deposit: Option<&[u8]>,
value: &[u8],
input: &[u8],
mut address: Option<&mut [u8]>,
mut output: Option<&mut [u8]>,
mut address: Option<&mut &mut [u8]>,
mut output: Option<&mut &mut [u8]>,
salt: &[u8],
) -> Result {
todo!()
@@ -110,7 +110,7 @@ impl HostFn for HostFnImpl {
gas: u64,
value: &[u8],
input_data: &[u8],
mut output: Option<&mut [u8]>,
mut output: Option<&mut &mut [u8]>,
) -> Result {
todo!()
}
@@ -121,7 +121,7 @@ impl HostFn for HostFnImpl {
gas: u64,
value: &[u8],
input_data: &[u8],
mut output: Option<&mut [u8]>,
mut output: Option<&mut &mut [u8]>,
) -> Result {
todo!()
}
@@ -134,7 +134,7 @@ impl HostFn for HostFnImpl {
deposit: Option<&[u8]>,
value: &[u8],
input_data: &[u8],
mut output: Option<&mut [u8]>,
mut output: Option<&mut &mut [u8]>,
) -> Result {
todo!()
}
@@ -147,7 +147,7 @@ impl HostFn for HostFnImpl {
flags: CallFlags,
code_hash: &[u8],
input: &[u8],
mut output: Option<&mut [u8]>,
mut output: Option<&mut &mut [u8]>,
) -> Result {
todo!()
}
@@ -203,7 +203,7 @@ impl HostFn for HostFnImpl {
todo!()
}
fn call_chain_extension(func_id: u32, input: &[u8], output: Option<&mut [u8]>) -> u32 {
fn call_chain_extension(func_id: u32, input: &[u8], output: Option<&mut &mut [u8]>) -> u32 {
todo!()
}
@@ -336,13 +336,14 @@ macro_rules! impl_hash_fn {
}
impl HostFn for HostFnImpl {
#[inline(always)]
fn instantiate_v1(
code_hash: &[u8],
gas: u64,
value: &[u8],
input: &[u8],
mut address: Option<&mut [u8]>,
mut output: Option<&mut [u8]>,
mut address: Option<&mut &mut [u8]>,
mut output: Option<&mut &mut [u8]>,
salt: &[u8],
) -> Result {
let (address_ptr, mut address_len) = ptr_len_or_sentinel(&mut address);
@@ -379,8 +380,8 @@ impl HostFn for HostFnImpl {
deposit: Option<&[u8]>,
value: &[u8],
input: &[u8],
mut address: Option<&mut [u8]>,
mut output: Option<&mut [u8]>,
mut address: Option<&mut &mut [u8]>,
mut output: Option<&mut &mut [u8]>,
salt: &[u8],
) -> Result {
let (address_ptr, mut address_len) = ptr_len_or_sentinel(&mut address);
@@ -418,12 +419,13 @@ impl HostFn for HostFnImpl {
ret_code.into()
}
#[inline(always)]
fn call(
callee: &[u8],
gas: u64,
value: &[u8],
input_data: &[u8],
mut output: Option<&mut [u8]>,
mut output: Option<&mut &mut [u8]>,
) -> Result {
let (output_ptr, mut output_len) = ptr_len_or_sentinel(&mut output);
let ret_code = {
@@ -449,13 +451,14 @@ impl HostFn for HostFnImpl {
ret_code.into()
}
#[inline(always)]
fn call_v1(
flags: CallFlags,
callee: &[u8],
gas: u64,
value: &[u8],
input_data: &[u8],
mut output: Option<&mut [u8]>,
mut output: Option<&mut &mut [u8]>,
) -> Result {
let (output_ptr, mut output_len) = ptr_len_or_sentinel(&mut output);
let ret_code = {
@@ -488,7 +491,7 @@ impl HostFn for HostFnImpl {
deposit: Option<&[u8]>,
value: &[u8],
input_data: &[u8],
mut output: Option<&mut [u8]>,
mut output: Option<&mut &mut [u8]>,
) -> Result {
let (output_ptr, mut output_len) = ptr_len_or_sentinel(&mut output);
let deposit_ptr = ptr_or_sentinel(&deposit);
@@ -520,11 +523,12 @@ impl HostFn for HostFnImpl {
unsafe { sys::caller_is_root() }.into_u32()
}
#[inline(always)]
fn delegate_call(
flags: CallFlags,
code_hash: &[u8],
input: &[u8],
mut output: Option<&mut [u8]>,
mut output: Option<&mut &mut [u8]>,
) -> Result {
let (output_ptr, mut output_len) = ptr_len_or_sentinel(&mut output);
let ret_code = {
@@ -602,6 +606,7 @@ impl HostFn for HostFnImpl {
ret_code.into()
}
#[inline(always)]
fn get_storage(key: &[u8], output: &mut &mut [u8]) -> Result {
let mut output_len = output.len() as u32;
let ret_code =
@@ -610,6 +615,7 @@ impl HostFn for HostFnImpl {
ret_code.into()
}
#[inline(always)]
fn get_storage_v1(key: &[u8], output: &mut &mut [u8]) -> Result {
let mut output_len = output.len() as u32;
let ret_code = {
@@ -626,6 +632,7 @@ impl HostFn for HostFnImpl {
ret_code.into()
}
#[inline(always)]
fn take_storage(key: &[u8], output: &mut &mut [u8]) -> Result {
let mut output_len = output.len() as u32;
let ret_code = {
@@ -665,7 +672,7 @@ impl HostFn for HostFnImpl {
unsafe { sys::v1::terminate(beneficiary.as_ptr()) }
}
fn call_chain_extension(func_id: u32, input: &[u8], mut output: Option<&mut [u8]>) -> u32 {
fn call_chain_extension(func_id: u32, input: &[u8], mut output: Option<&mut &mut [u8]>) -> u32 {
let (output_ptr, mut output_len) = ptr_len_or_sentinel(&mut output);
let ret_code = {
unsafe {
@@ -685,6 +692,7 @@ impl HostFn for HostFnImpl {
ret_code.into_u32()
}
#[inline(always)]
fn input(output: &mut &mut [u8]) {
let mut output_len = output.len() as u32;
{
@@ -707,6 +715,7 @@ impl HostFn for HostFnImpl {
(v1) => [gas_left],
}
#[inline(always)]
fn weight_to_fee(gas: u64, output: &mut &mut [u8]) {
let mut output_len = output.len() as u32;
{