X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FLexical-Types.git;a=blobdiff_plain;f=Types.xs;h=7de168535aa48a10e28178e6dc5c869309203259;hp=7629733c1085416c1312e3f3b9d263a753748107;hb=HEAD;hpb=30d9da627f7321ff834ee9a53ef8fb508eda2be5 diff --git a/Types.xs b/Types.xs index 7629733..7de1685 100644 --- a/Types.xs +++ b/Types.xs @@ -12,6 +12,7 @@ #include "xsh/caps.h" #include "xsh/util.h" +#include "xsh/mem.h" #include "xsh/ops.h" #include "xsh/peep.h" @@ -47,7 +48,7 @@ static void xsh_user_clone(pTHX_ const xsh_user_cxt_t *old_cxt, xsh_user_cxt_t * /* ... op => info map ...................................................... */ #define PTABLE_NAME ptable_map -#define PTABLE_VAL_FREE(V) PerlMemShared_free(V) +#define PTABLE_VAL_FREE(V) XSH_SHARED_FREE((V), 0, char) #define PTABLE_VAL_NEED_CONTEXT 0 #define PTABLE_NEED_DELETE 1 #define PTABLE_NEED_WALK 0 @@ -140,7 +141,7 @@ static void lt_padxv_map_store(pTHX_ const OP *o, SV *orig_pkg, SV *type_pkg, SV XSH_LOCK(<_op_map_mutex); if (!(oi = ptable_fetch(lt_op_padxv_map, o))) { - oi = PerlMemShared_malloc(sizeof *oi); + XSH_SHARED_ALLOC(oi, 1, lt_op_padxv_info); ptable_map_store(lt_op_padxv_map, o, oi); #ifdef MULTIPLICITY oi->buf = NULL; @@ -161,8 +162,7 @@ static void lt_padxv_map_store(pTHX_ const OP *o, SV *orig_pkg, SV *type_pkg, SV STRLEN new_buf_size = op_len + tp_len + tm_len; char *buf; if (new_buf_size > oi->buf_size) { - PerlMemShared_free(oi->buf); - oi->buf = PerlMemShared_malloc(new_buf_size); + XSH_SHARED_REALLOC(oi->buf, oi->buf_size, new_buf_size, char); oi->buf_size = new_buf_size; } buf = oi->buf; @@ -221,7 +221,7 @@ static void lt_padrange_map_store(pTHX_ const OP *o, const OP *s, OP *(*old_pp)( XSH_LOCK(<_op_map_mutex); if (!(oi = ptable_fetch(lt_op_padrange_map, o))) { - oi = PerlMemShared_malloc(sizeof *oi); + XSH_SHARED_ALLOC(oi, 1, lt_op_padrange_info); ptable_map_store(lt_op_padrange_map, o, oi); } @@ -316,9 +316,9 @@ static OP *lt_pp_padrange(pTHX) { count = PL_op->op_private & OPpPADRANGE_COUNTMASK; for (i = 0, p = roi.padxv_start; i < count && p; ++i, p = p->op_next) { + lt_op_padxv_info oi; while (p->op_type == OP_NULL) p = p->op_next; - lt_op_padxv_info oi; if (p->op_type == OP_PADSV && lt_padxv_map_fetch(p, &oi)) lt_op_padxv_info_call(&oi, PAD_SV(base + i)); }