Skip to content

Commit b29b6ec

Browse files
refactor(executor): swap the ptr and size in u64 return value (#34)
1 parent 7bad98c commit b29b6ec

File tree

6 files changed

+9
-9
lines changed

6 files changed

+9
-9
lines changed

poc/executor/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ impl<Ctx: XcqExecutorContext> XcqExecutor<Ctx> {
7777
};
7878

7979
let res = instance.call_typed::<(u32, u32), u64>(&mut self.context, method, (input_ptr, input.len() as u32))?;
80-
let res_ptr = (res >> 32) as u32;
81-
let res_size = (res & 0xffffffff) as u32;
80+
let res_size = (res >> 32) as u32;
81+
let res_ptr = (res & 0xffffffff) as u32;
8282
let result = instance
8383
.read_memory_into_vec(res_ptr, res_size)
8484
.map_err(|e| XcqExecutorError::ExecutionError(polkavm::ExecutionError::Trap(e)))?;

poc/guests/pass-custom-type/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extern "C" fn main(ptr: u32, _size: u32) -> u64 {
5050
let val = b"test";
5151
let size = core::mem::size_of_val(val);
5252
let val_ptr = val.as_ptr();
53-
(val_ptr as u64) << 32 | size as u64
53+
(size as u64) << 32 | val_ptr as u64
5454
}
5555
1 => {
5656
let val = unsafe { core::ptr::read_volatile((ptr + 1) as *const u8) };
@@ -67,7 +67,7 @@ extern "C" fn main(ptr: u32, _size: u32) -> u64 {
6767
}
6868
unsafe { core::ptr::write_volatile(ptr as *mut u32, res) };
6969
let size = core::mem::size_of::<u32>();
70-
(ptr as u64) << 32 | size as u64
70+
(size as u64) << 32 | ptr as u64
7171
}
7272
_ => 0,
7373
}

poc/guests/query-balance-fungibles/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,5 @@ extern "C" fn main(ptr: u32, size: u32) -> u64 {
3636
unsafe {
3737
core::ptr::copy_nonoverlapping(sum_bytes.as_ptr(), ptr, sum_bytes.len());
3838
}
39-
(ptr as u64) << 32 | (sum_bytes.len() as u64)
39+
(sum_bytes.len() as u64) << 32 | (ptr as u64)
4040
}

poc/guests/query-balance/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ extern "C" fn main(ptr: u32, size: u32) -> u64 {
3131
unsafe {
3232
core::ptr::write_volatile(ptr as *mut u64, sum);
3333
}
34-
(ptr as u64) << 32 | (core::mem::size_of::<u64>() as u64)
34+
(core::mem::size_of::<u64>() as u64) << 32 | (ptr as u64)
3535
}

xcq-executor/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ impl<Ctx: XcqExecutorContext> XcqExecutor<Ctx> {
7777
};
7878

7979
let res = instance.call_typed::<(u32, u32), u64>(&mut self.context, method, (input_ptr, input.len() as u32))?;
80-
let res_ptr = (res >> 32) as u32;
81-
let res_size = (res & 0xffffffff) as u32;
80+
let res_size = (res >> 32) as u32;
81+
let res_ptr = (res & 0xffffffff) as u32;
8282
let result = instance
8383
.read_memory_into_vec(res_ptr, res_size)
8484
.map_err(|e| XcqExecutorError::ExecutionError(polkavm::ExecutionError::Trap(e)))?;

xcq-extension/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ impl<E: ExtensionTuple, P: PermController> XcqExecutorContext for Context<E, P>
7575
caller
7676
.write_memory(res_ptr, &res_bytes)
7777
.map_err(|_| ExtensionError::PolkavmError)?;
78-
Ok(((res_ptr as u64) << 32) | (res_bytes_len as u64))
78+
Ok(((res_bytes_len as u64) << 32) | (res_ptr as u64))
7979
};
8080
let result = func_with_result();
8181
tracing::trace!("(host call): result: {:?}", result);

0 commit comments

Comments
 (0)