Skip to content

Commit

Permalink
Merge branch 'feature/draft_gather_infos_aurelien' of github.com:mass…
Browse files Browse the repository at this point in the history
…alabs/massa-sc-runtime into feature/draft_gather_infos_aurelien
  • Loading branch information
AurelienFT committed Feb 22, 2024
2 parents 11cd132 + 015cbe1 commit ec786c8
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 14 deletions.
31 changes: 22 additions & 9 deletions src/as_execution/abi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,21 @@ pub(crate) fn assembly_script_transfer_coins(
.transfer_coins(&to_address, raw_amount as u64)?;
#[cfg(feature = "execution-trace")]
{
let from_address = env.get_interface().get_call_stack()?.last().unwrap().clone();
let call_stack = env.get_interface().get_call_stack();
// TODO: check if this is always correct (with nested of nested call?)
let from_address = call_stack
.unwrap_or_default()
.last()
.cloned()
.unwrap_or_else(|| "".to_string());

ctx.data_mut().trace.push(AbiTrace {
name: function_name!().to_string(),
params: vec![into_trace_value!(from_address), into_trace_value!(to_address), into_trace_value!(raw_amount)],
params: vec![
into_trace_value!(from_address),
into_trace_value!(to_address),
(stringify!(raw_amount), raw_amount as u64).into(),
],
return_value: AbiTraceType::None,
sub_calls: None,
});
Expand Down Expand Up @@ -126,7 +137,7 @@ pub(crate) fn assembly_script_transfer_coins_for(
params: vec![
into_trace_value!(from_address),
into_trace_value!(to_address),
into_trace_value!(raw_amount),
(stringify!(raw_amount), raw_amount as u64).into(),
],
return_value: AbiTraceType::None,
sub_calls: None,
Expand Down Expand Up @@ -1219,8 +1230,10 @@ pub(crate) fn assembly_script_send_message(
params: vec![
into_trace_value!(target_address),
into_trace_value!(target_handler),
into_trace_value!(validity_start),
into_trace_value!(validity_end),
into_trace_value!(validity_start_period),
into_trace_value!(validity_start_thread),
into_trace_value!(validity_end_period),
into_trace_value!(validity_end_thread),
into_trace_value!(max_gas as u64),
into_trace_value!(raw_fee as u64),
into_trace_value!(raw_coins as u64),
Expand Down Expand Up @@ -1489,13 +1502,13 @@ pub fn assembly_script_function_exists(
let env = get_env(&ctx)?;
sub_remaining_gas_abi(&env, &mut ctx, function_name!())?;
let memory = get_memory!(env);
let address = &read_string(memory, &ctx, address)?;
let function = &read_string(memory, &ctx, function)?;
let function_exists = function_exists(&mut ctx, address, function)?;
let address = read_string(memory, &ctx, address)?;
let function = read_string(memory, &ctx, function)?;
let function_exists = function_exists(&mut ctx, &address, &function)?;
#[cfg(feature = "execution-trace")]
ctx.data_mut().trace.push(AbiTrace {
name: function_name!().to_string(),
params: vec![],
params: vec![into_trace_value!(address), into_trace_value!(function)],
return_value: function_exists.into(),
sub_calls: None,
});
Expand Down
9 changes: 9 additions & 0 deletions src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ pub enum AbiTraceType {
Bool(bool),
U8(u8),
I32(i32),
U32(u32),
I64(i64),
U64(u64),
F64(f64),
Expand Down Expand Up @@ -46,6 +47,14 @@ impl From<i32> for AbiTraceType {
Self::I32(v)
}
}

#[cfg(feature = "execution-trace")]
impl From<u32> for AbiTraceType {
fn from(v: u32) -> Self {
Self::U32(v)
}
}

#[cfg(feature = "execution-trace")]
impl From<i64> for AbiTraceType {
fn from(v: i64) -> Self {
Expand Down
22 changes: 17 additions & 5 deletions src/wasmv1_execution/abi/abis.rs
Original file line number Diff line number Diff line change
Expand Up @@ -395,9 +395,19 @@ fn abi_transfer_coins(
("target_address", req.target_address).into(),
("amount", amount_.to_i64().unwrap_or_default()).into(),
];
if let Some(sender_address) = req.sender_address {
params.push(into_trace_value!(sender_address))
}

let sender_address = match req.sender_address {
Some(sender_address) => sender_address,
None => {
let call_stack = interface.get_call_stack();
call_stack
.unwrap_or_default()
.last()
.cloned()
.unwrap_or_default()
}
};
params.push(into_trace_value!(sender_address));

// let mut guard = handler.store_env.data_mut().lock();
handler.exec_env.trace.push(AbiTrace {
Expand Down Expand Up @@ -946,8 +956,10 @@ fn abi_send_async_message(
let params = vec![
into_trace_value!(req.target_address),
into_trace_value!(req.target_handler),
into_trace_value!((start.period, start_thread)),
into_trace_value!((end.period, end_thread)),
into_trace_value!(start.period),
into_trace_value!(start.thread),
into_trace_value!(end.period),
into_trace_value!(end.thread),
into_trace_value!(req.execution_gas),
into_trace_value!(req.raw_fee),
into_trace_value!(req.raw_coins),
Expand Down

0 comments on commit ec786c8

Please sign in to comment.