call nac3_rc_incr(64) instead

This commit is contained in:
2025-08-01 20:33:02 +08:00
parent f946eccc19
commit fdc251c55f
2 changed files with 20 additions and 20 deletions

View File

@@ -8,13 +8,13 @@ extern "C" void nac3_free(void *ptr);
template<typename SizeT>
void __nac3_rc_incr_impl(void *obj) {
SizeT *p = (SizeT *) ptr;
SizeT *p = (SizeT *) obj;
*(p - 1) += 1;
}
template<typename SizeT>
void __nac3_rc_decr_impl(void *obj) {
SizeT *p = (SizeT *) ptr;
SizeT *p = (SizeT *) obj;
*(p - 1) -= 1;
if (!*(p - 1))
@@ -23,19 +23,21 @@ void __nac3_rc_decr_impl(void *obj) {
extern "C" {
#define DEF_nac3_rc_incr_(T) \
void __nac3_rc_incr_##T(void *ptr) { \
return __nac3_rc_incr_impl<T>(ptr); \
}
#define DEF_nac3_rc_decr_(T) \
void __nac3_rc_decr_##T(void *ptr) { \
return __nac3_rc_incr_impl<T>(ptr); \
}
void nac3_rc_decr(int8_t *ptr) {
__nac3_rc_decr_impl<uint32_t>(ptr);
}
DEF_nac3_rc_decr_(uint32_t);
DEF_nac3_rc_decr_(uint64_t);
DEF_nac3_rc_incr_(uint32_t);
DEF_nac3_rc_incr_(uint64_t);
void nac3_rc_decr64(int8_t *ptr) {
__nac3_rc_decr_impl<uint64_t>(ptr);
}
void nac3_rc_incr(int8_t *ptr) {
__nac3_rc_incr_impl<uint32_t>(ptr);
}
void nac3_rc_incr64(int8_t *ptr) {
__nac3_rc_incr_impl<uint64_t>(ptr);
}
}

View File

@@ -45,12 +45,10 @@ use super::{
},
};
use crate::{
codegen::llvm_fns::FunctionDecl,
codegen::{irrt::get_usize_dependent_function_name, llvm_fns::FunctionDecl},
symbol_resolver::{SymbolValue, ValueEnum},
toplevel::{
DefinitionId, FunAttribute, TopLevelDef,
helper::{PrimDef, arraylike_flatten_element_type, extract_ndims},
numpy::unpack_ndarray_var_tys,
helper::{arraylike_flatten_element_type, extract_ndims, PrimDef}, numpy::unpack_ndarray_var_tys, DefinitionId, FunAttribute, TopLevelDef
},
typecheck::{
magic_methods::{Binop, BinopVariant, HasOpInfo},
@@ -618,9 +616,9 @@ pub fn gen_constructor<'ctx, 'a, G: CodeGenerator>(
.build_bit_cast(zelf_intptr, zelf_ty.ptr_type(AddressSpace::default()), "malloc")
.unwrap();
// TODO(HTGAzureX1212): size_t
let void = ctx.ctx.void_type();
call_extern!(ctx: void _ = "nac3_rc_incr"(zelf_intptr));
let name = get_usize_dependent_function_name(ctx, "nac3_rc_incr");
call_extern!(ctx: void _ = name(zelf_intptr));
// call `__init__` if there is one
if let Some(fun_id) = fun_id {