Update based on feedback

This commit is contained in:
ram 2025-02-10 07:21:52 +00:00
parent 1ad9c3672d
commit f63a2c4498

View File

@ -41,7 +41,9 @@ use nac3core::{
numpy::unpack_ndarray_var_tys,
DefinitionId, GenCall,
},
typecheck::typedef::{iter_type_vars, FunSignature, FuncArg, Type, TypeEnum, VarMap},
typecheck::typedef::{
iter_type_vars, FunSignature, FuncArg, Type, TypeEnum, TypeEnum::*, VarMap,
},
};
/// The parallelism mode within a block.
@ -392,8 +394,6 @@ fn gen_rpc_tag(
buffer.push(b'k');
}
use nac3core::typecheck::typedef::TypeEnum::*;
let int32 = ctx.primitives.int32;
let int64 = ctx.primitives.int64;
let float = ctx.primitives.float;
@ -451,7 +451,7 @@ fn gen_rpc_tag(
buffer.push(b'a');
buffer.push((ndarray_ndims & 0xFF) as u8);
gen_rpc_tag(ctx, ndarray_dtype, false, buffer)?; // Pass false for is_kwarg
gen_rpc_tag(ctx, ndarray_dtype, false, buffer)?;
}
_ => return Err(format!("Unsupported type: {:?}", ctx.unifier.stringify(ty))),
}
@ -804,7 +804,7 @@ fn format_rpc_ret<'ctx>(
Some(result)
}
pub fn rpc_codegen_callback_fn<'ctx>(
fn rpc_codegen_callback_fn<'ctx>(
ctx: &mut CodeGenContext<'ctx, '_>,
obj: Option<(Type, ValueEnum<'ctx>)>,
fun: (&FunSignature, DefinitionId),
@ -816,10 +816,6 @@ pub fn rpc_codegen_callback_fn<'ctx>(
let int32 = ctx.ctx.i32_type();
let size_type = ctx.get_size_type();
let ptr_type = int8.ptr_type(AddressSpace::default());
let tag_ptr_type = ctx
.ctx
.struct_type(&[ptr_type.into(), size_type.into()], false)
.ptr_type(AddressSpace::default());
let service_id = int32.const_int(fun.1 .0 as u64, false);
// -- setup rpc tags
let mut tag = Vec::new();
@ -842,9 +838,8 @@ pub fn rpc_codegen_callback_fn<'ctx>(
} else {
let tag_len = tag.len();
let arr_ty = int8.array_type(tag_len as u32);
let tag_const = int8.const_array(
&tag.iter().map(|&b| int8.const_int(u64::from(b), false)).collect::<Vec<_>>(),
);
let tag_const = int8
.const_array(&tag.iter().map(|&b| int8.const_int(u64::from(b), false)).collect_vec());
let arr_gv = ctx.module.add_global(arr_ty, None, &format!("{hash}.arr"));
arr_gv.set_linkage(Linkage::Private);
arr_gv.set_initializer(&tag_const);
@ -941,7 +936,7 @@ pub fn rpc_codegen_callback_fn<'ctx>(
ctx,
if is_async { "rpc_send_async" } else { "rpc_send" },
None,
&[service_id.into(), tag_ptr.into(), args_ptr.into()],
&[service_id.into(), tag_ptr.into(), arg_array.into()],
Some("rpc.send"),
None,
);