]> git.vpit.fr Git - perl/modules/Lexical-Types.git/blobdiff - Types.xs
Remove the #ifdef wrapping the mutex locks/unlocks
[perl/modules/Lexical-Types.git] / Types.xs
index b3412b55e66d8bf9f432121e169941724033a592..4b3856225042fa8b68990568595565812b8cb535 100644 (file)
--- a/Types.xs
+++ b/Types.xs
@@ -284,9 +284,6 @@ STATIC SV *lt_tag(pTHX_ SV *value) {
 #define lt_tag(V) lt_tag(aTHX_ (V))
  lt_hint_t *h;
  SV *code = NULL;
-#if LT_THREADSAFE
- dMY_CXT;
-#endif
 
  if (SvROK(value)) {
   value = SvRV(value);
@@ -307,10 +304,13 @@ STATIC SV *lt_tag(pTHX_ SV *value) {
 #endif /* !LT_HINT_STRUCT */
 
 #if LT_THREADSAFE
- /* We only need for the key to be an unique tag for looking up the value later.
-  * Allocated memory provides convenient unique identifiers, so that's why we
-  * use the hint as the key itself. */
- ptable_hints_store(MY_CXT.tbl, h, h);
+ {
+  dMY_CXT;
+  /* We only need for the key to be an unique tag for looking up the value later
+   * Allocated memory provides convenient unique identifiers, so that's why we
+   * use the hint as the key itself. */
+  ptable_hints_store(MY_CXT.tbl, h, h);
+ }
 #endif /* LT_THREADSAFE */
 
  return newSViv(PTR2IV(h));
@@ -373,8 +373,18 @@ STATIC SV *lt_hint(pTHX) {
 STATIC ptable *lt_op_map = NULL;
 
 #ifdef USE_ITHREADS
+
 STATIC perl_mutex lt_op_map_mutex;
-#endif
+
+#define LT_LOCK(M)   MUTEX_LOCK(M)
+#define LT_UNLOCK(M) MUTEX_UNLOCK(M)
+
+#else /* USE_ITHREADS */
+
+#define LT_LOCK(M)
+#define LT_UNLOCK(M)
+
+#endif /* !USE_ITHREADS */
 
 typedef struct {
 #ifdef MULTIPLICITY
@@ -392,9 +402,7 @@ STATIC void lt_map_store(pTHX_ const OP *o, SV *orig_pkg, SV *type_pkg, SV *type
 #define lt_map_store(O, OP, TP, TM, PP) lt_map_store(aTHX_ (O), (OP), (TP), (TM), (PP))
  lt_op_info *oi;
 
-#ifdef USE_ITHREADS
- MUTEX_LOCK(&lt_op_map_mutex);
-#endif
+ LT_LOCK(&lt_op_map_mutex);
 
  if (!(oi = ptable_fetch(lt_op_map, o))) {
   oi = PerlMemShared_malloc(sizeof *oi);
@@ -443,17 +451,13 @@ STATIC void lt_map_store(pTHX_ const OP *o, SV *orig_pkg, SV *type_pkg, SV *type
 
  oi->old_pp_padsv = old_pp_padsv;
 
-#ifdef USE_ITHREADS
- MUTEX_UNLOCK(&lt_op_map_mutex);
-#endif
+ LT_UNLOCK(&lt_op_map_mutex);
 }
 
 STATIC const lt_op_info *lt_map_fetch(const OP *o, lt_op_info *oi) {
  const lt_op_info *val;
 
-#ifdef USE_ITHREADS
- MUTEX_LOCK(&lt_op_map_mutex);
-#endif
+ LT_LOCK(&lt_op_map_mutex);
 
  val = ptable_fetch(lt_op_map, o);
  if (val) {
@@ -461,24 +465,18 @@ STATIC const lt_op_info *lt_map_fetch(const OP *o, lt_op_info *oi) {
   val = oi;
  }
 
-#ifdef USE_ITHREADS
- MUTEX_UNLOCK(&lt_op_map_mutex);
-#endif
+ LT_UNLOCK(&lt_op_map_mutex);
 
  return val;
 }
 
 STATIC void lt_map_delete(pTHX_ const OP *o) {
 #define lt_map_delete(O) lt_map_delete(aTHX_ (O))
-#ifdef USE_ITHREADS
- MUTEX_LOCK(&lt_op_map_mutex);
-#endif
+ LT_LOCK(&lt_op_map_mutex);
 
  ptable_map_delete(lt_op_map, o);
 
-#ifdef USE_ITHREADS
- MUTEX_UNLOCK(&lt_op_map_mutex);
-#endif
+ LT_UNLOCK(&lt_op_map_mutex);
 }
 
 /* --- Hooks --------------------------------------------------------------- */
@@ -562,12 +560,12 @@ STATIC OP *(*lt_old_ck_padany)(pTHX_ OP *) = 0;
 STATIC OP *lt_ck_padany(pTHX_ OP *o) {
  HV *stash;
  SV *code;
- dMY_CXT;
 
  o = lt_old_ck_padany(aTHX_ o);
 
  stash = PL_in_my_stash;
  if (stash && (code = lt_hint())) {
+  dMY_CXT;
   SV *orig_pkg  = newSVpvn(HvNAME_get(stash), HvNAMELEN_get(stash));
   SV *orig_meth = MY_CXT.default_meth;
   SV *type_pkg  = NULL;
@@ -639,8 +637,6 @@ skip:
 STATIC OP *(*lt_old_ck_padsv)(pTHX_ OP *) = 0;
 
 STATIC OP *lt_ck_padsv(pTHX_ OP *o) {
- dMY_CXT;
-
  lt_map_delete(o);
 
  return lt_old_ck_padsv(aTHX_ o);
@@ -678,17 +674,13 @@ LT_PEEP_REC_PROTO {
   switch (o->op_type) {
    case OP_PADSV:
     if (o->op_ppaddr != lt_pp_padsv && o->op_private & OPpLVAL_INTRO) {
-#ifdef USE_ITHREADS
-     MUTEX_LOCK(&lt_op_map_mutex);
-#endif
+     LT_LOCK(&lt_op_map_mutex);
      oi = ptable_fetch(lt_op_map, o);
      if (oi) {
       oi->old_pp_padsv = o->op_ppaddr;
       o->op_ppaddr     = lt_pp_padsv;
      }
-#ifdef USE_ITHREADS
-     MUTEX_UNLOCK(&lt_op_map_mutex);
-#endif
+     LT_UNLOCK(&lt_op_map_mutex);
     }
     break;
 #if !LT_HAS_RPEEP
@@ -749,8 +741,6 @@ STATIC void lt_peep(pTHX_ OP *o) {
 STATIC U32 lt_initialized = 0;
 
 STATIC void lt_teardown(pTHX_ void *root) {
- dMY_CXT;
-
  if (!lt_initialized)
   return;
 
@@ -759,13 +749,16 @@ STATIC void lt_teardown(pTHX_ void *root) {
   return;
 #endif
 
+ {
+  dMY_CXT;
 #if LT_THREADSAFE
- ptable_hints_free(MY_CXT.tbl);
 ptable_hints_free(MY_CXT.tbl);
 #endif
 #if !LT_HAS_RPEEP
- ptable_seen_free(MY_CXT.seen);
 ptable_seen_free(MY_CXT.seen);
 #endif
- SvREFCNT_dec(MY_CXT.default_meth);
+  SvREFCNT_dec(MY_CXT.default_meth);
+ }
 
  PL_check[OP_PADANY] = MEMBER_TO_FPTR(lt_old_ck_padany);
  lt_old_ck_padany    = 0;