Change 24716 by [EMAIL PROTECTED] on 2005/06/06 14:50:21

        Abstract all access to the shared hash value through SvSHARED_HASH()

Affected files ...

... //depot/perl/hv.c#226 edit
... //depot/perl/pp_hot.c#392 edit
... //depot/perl/sv.c#869 edit
... //depot/perl/sv.h#193 edit

Differences ...

==== //depot/perl/hv.c#226 (text) ====
Index: perl/hv.c
--- perl/hv.c#225~24696~        Fri Jun  3 03:03:21 2005
+++ perl/hv.c   Mon Jun  6 07:50:21 2005
@@ -650,7 +650,7 @@
        flags |= HVhek_REHASH;
     } else if (!hash) {
         if (keysv && (SvIsCOW_shared_hash(keysv))) {
-            hash = SvUVX(keysv);
+            hash = SvSHARED_HASH(keysv);
         } else {
             PERL_HASH(hash, key, klen);
         }
@@ -1014,7 +1014,7 @@
        PERL_HASH_INTERNAL(hash, key, klen);
     } else if (!hash) {
         if (keysv && (SvIsCOW_shared_hash(keysv))) {
-            hash = SvUVX(keysv);
+            hash = SvSHARED_HASH(keysv);
         } else {
             PERL_HASH(hash, key, klen);
         }

==== //depot/perl/pp_hot.c#392 (text) ====
Index: perl/pp_hot.c
--- perl/pp_hot.c#391~24715~    Mon Jun  6 03:01:49 2005
+++ perl/pp_hot.c       Mon Jun  6 07:50:21 2005
@@ -1665,7 +1665,7 @@
     const U32 lval = PL_op->op_flags & OPf_MOD || LVRET;
     const U32 defer = PL_op->op_private & OPpLVAL_DEFER;
     SV *sv;
-    const U32 hash = (SvIsCOW_shared_hash(keysv)) ? SvUVX(keysv) : 0;
+    const U32 hash = (SvIsCOW_shared_hash(keysv)) ? SvSHARED_HASH(keysv) : 0;
     I32 preeminent = 0;
 
     if (SvTYPE(hv) == SVt_PVHV) {
@@ -2960,7 +2960,7 @@
 {
     dSP;
     SV* sv = cSVOP_sv;
-    U32 hash = SvUVX(sv);
+    U32 hash = SvSHARED_HASH(sv);
 
     XPUSHs(method_common(sv, &hash));
     RETURN;

==== //depot/perl/sv.c#869 (text) ====
Index: perl/sv.c
--- perl/sv.c#868~24714~        Mon Jun  6 02:08:45 2005
+++ perl/sv.c   Mon Jun  6 07:50:21 2005
@@ -4521,7 +4521,7 @@
 #endif
                {
                     /* SvIsCOW_shared_hash */
-                    UV hash = SvUVX(sstr);
+                    UV hash = SvSHARED_HASH(sstr);
                     DEBUG_C(PerlIO_printf(Perl_debug_log,
                                           "Copy on write: Sharing hash\n"));
                     SvPV_set(dstr,
@@ -4665,7 +4665,7 @@
 
        if (SvLEN(sstr) == 0) {
            /* source is a COW shared hash key.  */
-           UV hash = SvUVX(sstr);
+           UV hash = SvSHARED_HASH(sstr);
            DEBUG_C(PerlIO_printf(Perl_debug_log,
                                  "Fast copy on write: Sharing hash\n"));
            SvUV_set(dstr, hash);
@@ -4921,7 +4921,7 @@
             const char *pvx = SvPVX_const(sv);
             STRLEN len = SvLEN(sv);
             STRLEN cur = SvCUR(sv);
-            U32 hash = SvUVX(sv);
+            U32 hash = SvSHARED_HASH(sv);
             SV *next = SV_COW_NEXT_SV(sv);   /* next COW sv in the loop. */
             if (DEBUG_C_TEST) {
                 PerlIO_printf(Perl_debug_log,
@@ -4958,7 +4958,7 @@
            const char *pvx = SvPVX_const(sv);
            const int is_utf8 = SvUTF8(sv);
            STRLEN len = SvCUR(sv);
-            U32 hash   = SvUVX(sv);
+            U32 hash   = SvSHARED_HASH(sv);
            SvFAKE_off(sv);
            SvREADONLY_off(sv);
             SvPV_set(sv, (char*)0);

==== //depot/perl/sv.h#193 (text) ====
Index: perl/sv.h
--- perl/sv.h#192~24660~        Wed Jun  1 07:33:14 2005
+++ perl/sv.h   Mon Jun  6 07:50:21 2005
@@ -1309,6 +1309,8 @@
                                    (SVf_FAKE | SVf_READONLY))
 #define SvIsCOW_shared_hash(sv)        (SvIsCOW(sv) && SvLEN(sv) == 0)
 
+#define SvSHARED_HASH(sv) SvUVX(sv)
+
 /* flag values for sv_*_flags functions */
 #define SV_IMMEDIATE_UNREF     1
 #define SV_GMAGIC              2
End of Patch.

Reply via email to