Moves InvokeContext::return_data to TransactionContext. (#22411)
This commit is contained in:
committed by
GitHub
parent
9bc2592da1
commit
aadf4b9b63
@ -226,13 +226,13 @@ fn run_program(name: &str) -> u64 {
|
||||
let mut instruction_count = 0;
|
||||
let mut tracer = None;
|
||||
for i in 0..2 {
|
||||
invoke_context.return_data = (
|
||||
invoke_context.transaction_context.set_return_data(
|
||||
*invoke_context
|
||||
.transaction_context
|
||||
.get_program_key()
|
||||
.unwrap(),
|
||||
Vec::new(),
|
||||
);
|
||||
).unwrap();
|
||||
let mut parameter_bytes = parameter_bytes.clone();
|
||||
{
|
||||
let mut vm = create_vm(
|
||||
|
@ -1099,7 +1099,8 @@ impl Executor for BpfExecutor {
|
||||
trace!("BPF Program Instruction Trace:\n{}", trace_string);
|
||||
}
|
||||
drop(vm);
|
||||
let (_returned_from_program_id, return_data) = &invoke_context.return_data;
|
||||
let (_returned_from_program_id, return_data) =
|
||||
invoke_context.transaction_context.get_return_data();
|
||||
if !return_data.is_empty() {
|
||||
stable_log::program_return(&log_collector, &program_id, return_data);
|
||||
}
|
||||
|
@ -2749,14 +2749,20 @@ impl<'a, 'b> SyscallObject<BpfError> for SyscallSetReturnData<'a, 'b> {
|
||||
)
|
||||
.to_vec()
|
||||
};
|
||||
let program_id = question_mark!(
|
||||
let program_id = *question_mark!(
|
||||
invoke_context
|
||||
.transaction_context
|
||||
.get_program_key()
|
||||
.map_err(SyscallError::InstructionError),
|
||||
result
|
||||
);
|
||||
invoke_context.return_data = (*program_id, return_data);
|
||||
question_mark!(
|
||||
invoke_context
|
||||
.transaction_context
|
||||
.set_return_data(program_id, return_data)
|
||||
.map_err(SyscallError::InstructionError),
|
||||
result
|
||||
);
|
||||
|
||||
*result = Ok(0);
|
||||
}
|
||||
@ -2799,7 +2805,7 @@ impl<'a, 'b> SyscallObject<BpfError> for SyscallGetReturnData<'a, 'b> {
|
||||
result
|
||||
);
|
||||
|
||||
let (program_id, return_data) = &invoke_context.return_data;
|
||||
let (program_id, return_data) = invoke_context.transaction_context.get_return_data();
|
||||
length = length.min(return_data.len() as u64);
|
||||
if length != 0 {
|
||||
question_mark!(
|
||||
|
Reference in New Issue
Block a user