feat: add debug node
This commit is contained in:
@@ -99,22 +99,20 @@ pub fn nodarium_execute(_attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
#[no_mangle]
|
||||
#fn_vis extern "C" fn execute(output_pos: i32, #( #arg_names: i32 ),*) -> i32 {
|
||||
|
||||
// log!("before_fn");
|
||||
nodarium_utils::log!("before_fn");
|
||||
let result = #inner_fn_name(
|
||||
#( #tuple_args ),*
|
||||
);
|
||||
// log!("after_fn");
|
||||
nodarium_utils::log!("after_fn");
|
||||
|
||||
let len_bytes = result.len() * 4;
|
||||
unsafe {
|
||||
let src = result.as_ptr() as *const u8;
|
||||
let dst = output_pos as *mut u8;
|
||||
// log!("writing output_pos={:?} src={:?} len_bytes={:?}", output_pos, src, len_bytes);
|
||||
// nodarium_utils::log!("writing output_pos={:?} src={:?} len_bytes={:?}", output_pos, src, len_bytes);
|
||||
dst.copy_from_nonoverlapping(src, len_bytes);
|
||||
}
|
||||
|
||||
core::mem::forget(result);
|
||||
|
||||
len_bytes as i32
|
||||
}
|
||||
};
|
||||
|
||||
@@ -9,6 +9,7 @@ const DefaultOptionsSchema = z.object({
|
||||
accepts: z
|
||||
.array(
|
||||
z.union([
|
||||
z.literal('*'),
|
||||
z.literal('float'),
|
||||
z.literal('integer'),
|
||||
z.literal('boolean'),
|
||||
|
||||
@@ -12,7 +12,7 @@ pub fn decode_float(bits: i32) -> f32 {
|
||||
|
||||
#[inline]
|
||||
pub fn read_i32(ptr: i32) -> i32 {
|
||||
unsafe {
|
||||
unsafe {
|
||||
let _ptr = ptr as *const i32;
|
||||
*_ptr
|
||||
}
|
||||
@@ -27,22 +27,30 @@ pub fn read_f32(ptr: i32) -> f32 {
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn read_i32_slice(tuple: (i32, i32)) -> Vec<i32> {
|
||||
pub fn read_i32_slice(range: (i32, i32)) -> Vec<i32> {
|
||||
let (start, end) = range;
|
||||
assert!(end >= start);
|
||||
let byte_len = (end - start) as usize;
|
||||
assert!(byte_len % 4 == 0);
|
||||
|
||||
unsafe {
|
||||
let start = tuple.0 as *const i32;
|
||||
let end = tuple.1 as *const i32;
|
||||
let len = (end as usize - start as usize) / 4;
|
||||
std::slice::from_raw_parts(start, len).to_vec()
|
||||
let ptr = start as *const i32;
|
||||
let len = byte_len / 4;
|
||||
std::slice::from_raw_parts(ptr, len).to_vec()
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn read_f32_slice(tuple: (i32, i32)) -> Vec<f32> {
|
||||
pub fn read_f32_slice(range: (i32, i32)) -> Vec<f32> {
|
||||
let (start, end) = range;
|
||||
assert!(end >= start);
|
||||
let byte_len = (end - start) as usize;
|
||||
assert!(byte_len % 4 == 0);
|
||||
|
||||
unsafe {
|
||||
let start = tuple.0 as *const f32;
|
||||
let end = tuple.1 as *const f32;
|
||||
let len = (end as usize - start as usize) / 4;
|
||||
std::slice::from_raw_parts(start, len).to_vec()
|
||||
let ptr = start as *const f32;
|
||||
let len = byte_len / 4;
|
||||
std::slice::from_raw_parts(ptr, len).to_vec()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,12 @@ export function createWasmWrapper(buffer: ArrayBuffer, memory: WebAssembly.Memor
|
||||
exports = instance.exports as NodariumExports;
|
||||
|
||||
function execute(outputPos: number, args: number[]): number {
|
||||
return exports.execute(outputPos, ...args);
|
||||
try {
|
||||
return exports.execute(outputPos, ...args);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
function get_definition() {
|
||||
|
||||
Reference in New Issue
Block a user