]> git.vpit.fr Git - perl/modules/Lexical-Types.git/blobdiff - Types.xs
This is 0.16
[perl/modules/Lexical-Types.git] / Types.xs
index 7629733c1085416c1312e3f3b9d263a753748107..7de168535aa48a10e28178e6dc5c869309203259 100644 (file)
--- 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(&lt_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(&lt_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));
   }