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.