Fixes invoke_context.get_return_data() shadowing program_id. (#21562)
This commit is contained in:
parent
8ba676e4c7
commit
c825b0a84d
|
@ -957,16 +957,17 @@ impl Executor for BpfExecutor {
|
||||||
use_jit: bool,
|
use_jit: bool,
|
||||||
) -> Result<(), InstructionError> {
|
) -> Result<(), InstructionError> {
|
||||||
let log_collector = invoke_context.get_log_collector();
|
let log_collector = invoke_context.get_log_collector();
|
||||||
|
let compute_meter = invoke_context.get_compute_meter();
|
||||||
let invoke_depth = invoke_context.invoke_depth();
|
let invoke_depth = invoke_context.invoke_depth();
|
||||||
|
|
||||||
let mut serialize_time = Measure::start("serialize");
|
let mut serialize_time = Measure::start("serialize");
|
||||||
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
||||||
let program = keyed_account_at_index(keyed_accounts, first_instruction_account)?;
|
let program = keyed_account_at_index(keyed_accounts, first_instruction_account)?;
|
||||||
let loader_id = &program.owner()?;
|
let loader_id = program.owner()?;
|
||||||
let program_id = invoke_context.get_caller()?;
|
let program_id = *program.unsigned_key();
|
||||||
let (mut parameter_bytes, account_lengths) = serialize_parameters(
|
let (mut parameter_bytes, account_lengths) = serialize_parameters(
|
||||||
loader_id,
|
&loader_id,
|
||||||
program_id,
|
&program_id,
|
||||||
&keyed_accounts[first_instruction_account + 1..],
|
&keyed_accounts[first_instruction_account + 1..],
|
||||||
instruction_data,
|
instruction_data,
|
||||||
)?;
|
)?;
|
||||||
|
@ -974,8 +975,6 @@ impl Executor for BpfExecutor {
|
||||||
let mut create_vm_time = Measure::start("create_vm");
|
let mut create_vm_time = Measure::start("create_vm");
|
||||||
let mut execute_time;
|
let mut execute_time;
|
||||||
{
|
{
|
||||||
let program_id = &invoke_context.get_caller()?.clone();
|
|
||||||
let compute_meter = invoke_context.get_compute_meter();
|
|
||||||
let mut vm = match create_vm(
|
let mut vm = match create_vm(
|
||||||
&self.executable,
|
&self.executable,
|
||||||
parameter_bytes.as_slice_mut(),
|
parameter_bytes.as_slice_mut(),
|
||||||
|
@ -991,7 +990,7 @@ impl Executor for BpfExecutor {
|
||||||
create_vm_time.stop();
|
create_vm_time.stop();
|
||||||
|
|
||||||
execute_time = Measure::start("execute");
|
execute_time = Measure::start("execute");
|
||||||
stable_log::program_invoke(&log_collector, program_id, invoke_depth);
|
stable_log::program_invoke(&log_collector, &program_id, invoke_depth);
|
||||||
let mut instruction_meter = ThisInstructionMeter::new(compute_meter.clone());
|
let mut instruction_meter = ThisInstructionMeter::new(compute_meter.clone());
|
||||||
let before = compute_meter.borrow().get_remaining();
|
let before = compute_meter.borrow().get_remaining();
|
||||||
let result = if use_jit {
|
let result = if use_jit {
|
||||||
|
@ -1003,7 +1002,7 @@ impl Executor for BpfExecutor {
|
||||||
ic_logger_msg!(
|
ic_logger_msg!(
|
||||||
log_collector,
|
log_collector,
|
||||||
"Program {} consumed {} of {} compute units",
|
"Program {} consumed {} of {} compute units",
|
||||||
program_id,
|
&program_id,
|
||||||
before - after,
|
before - after,
|
||||||
before
|
before
|
||||||
);
|
);
|
||||||
|
@ -1015,7 +1014,7 @@ impl Executor for BpfExecutor {
|
||||||
trace!("BPF Program Instruction Trace:\n{}", trace_string);
|
trace!("BPF Program Instruction Trace:\n{}", trace_string);
|
||||||
}
|
}
|
||||||
drop(vm);
|
drop(vm);
|
||||||
let (program_id, return_data) = invoke_context.get_return_data();
|
let (_returned_from_program_id, return_data) = invoke_context.get_return_data();
|
||||||
if !return_data.is_empty() {
|
if !return_data.is_empty() {
|
||||||
stable_log::program_return(&log_collector, &program_id, return_data);
|
stable_log::program_return(&log_collector, &program_id, return_data);
|
||||||
}
|
}
|
||||||
|
@ -1046,7 +1045,7 @@ impl Executor for BpfExecutor {
|
||||||
let mut deserialize_time = Measure::start("deserialize");
|
let mut deserialize_time = Measure::start("deserialize");
|
||||||
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
||||||
deserialize_parameters(
|
deserialize_parameters(
|
||||||
loader_id,
|
&loader_id,
|
||||||
&keyed_accounts[first_instruction_account + 1..],
|
&keyed_accounts[first_instruction_account + 1..],
|
||||||
parameter_bytes.as_slice(),
|
parameter_bytes.as_slice(),
|
||||||
&account_lengths,
|
&account_lengths,
|
||||||
|
@ -1059,8 +1058,7 @@ impl Executor for BpfExecutor {
|
||||||
execute_time.as_us(),
|
execute_time.as_us(),
|
||||||
deserialize_time.as_us(),
|
deserialize_time.as_us(),
|
||||||
);
|
);
|
||||||
let program_id = invoke_context.get_caller()?;
|
stable_log::program_success(&log_collector, &program_id);
|
||||||
stable_log::program_success(&log_collector, program_id);
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue