develooper Front page | perl.ponie.changes | Postings from August 2005

[svn:ponie] r351 - in trunk: perl src/pmc

From:
nicholas
Date:
August 29, 2005 08:22
Subject:
[svn:ponie] r351 - in trunk: perl src/pmc
Message ID:
20050829152149.22095.qmail@x1.develooper.com
Author: nicholas
Date: Mon Aug 29 08:21:49 2005
New Revision: 351

Modified:
   trunk/perl/sv.c
   trunk/perl/sv.h
   trunk/perl/universal.c
   trunk/src/pmc/perl5cargo_cult.pmc
Log:
Remove SvREFCNT_set


Modified: trunk/perl/sv.c
==============================================================================
--- trunk/perl/sv.c	(original)
+++ trunk/perl/sv.c	Mon Aug 29 08:21:49 2005
@@ -4995,7 +4995,8 @@ Perl_sv_free(pTHX_ SV *sv)
 	    return;
 	if (SvREADONLY(sv) && SvIMMORTAL(sv)) {
 	    /* make sure SvREFCNT(sv)==0 happens very seldom */
-	    SvREFCNT_set(sv, (~(U32)0)/2);
+	    Perl_croak("Immortal %p hit refcnt of 0 - this is not possible",
+		       sv);
 	    return;
 	}
 	if (ckWARN_d(WARN_INTERNAL)) {
@@ -5030,7 +5031,7 @@ Perl_sv_free2(pTHX_ SV *sv)
 #endif
     if (SvREADONLY(sv) && SvIMMORTAL(sv)) {
 	/* make sure SvREFCNT(sv)==0 happens very seldom */
-	SvREFCNT_set(sv, (~(U32)0)/2);
+	Perl_croak("Immortal %p hit refcnt of 0 - this is not possible", sv);
 	return;
     }
     sv_clear(sv);

Modified: trunk/perl/sv.h
==============================================================================
--- trunk/perl/sv.h	(original)
+++ trunk/perl/sv.h	Mon Aug 29 08:21:49 2005
@@ -136,7 +136,6 @@ perform the upgrade if necessary.  See C
 #define SvANY_set(sv, p)	Parrot_PMC_set_pointer_intkey(PL_Parrot, MUMBLE(sv), Ponie_P_ANY, p)
 
 #define SvREFCNT(sv)	((U32)Parrot_PMC_get_intval_intkey(PL_Parrot, MUMBLE(sv), Ponie_I_SV_REFCNT))
-#define SvREFCNT_set(sv, v)	Parrot_PMC_set_intval_intkey(PL_Parrot, MUMBLE(sv), Ponie_I_SV_REFCNT, v)
 
 #if defined(PERL_CORE) && defined(PERL_IN_SV_C)
 /* sv.c will be replaced with PMC code to clone things etc, so little point

Modified: trunk/perl/universal.c
==============================================================================
--- trunk/perl/universal.c	(original)
+++ trunk/perl/universal.c	Mon Aug 29 08:21:49 2005
@@ -778,9 +778,8 @@ XS(XS_Internals_SvREFCNT)	/* This is dan
     if (items == 1)
 	 XSRETURN_IV(SvREFCNT(sv) - 1); /* Minus the ref created for us. */
     else if (items == 2) {
-	/* I hope you really know what you are doing. */
-	SvREFCNT_set(sv, SvIV(ST(1)));
-	XSRETURN_IV(SvREFCNT(sv));
+	Perl_croak(aTHX_
+		   "Using Internals::SvREFCNT to set the refcnt is illegal");
     }
     XSRETURN_UNDEF; /* Can't happen. */
 }

Modified: trunk/src/pmc/perl5cargo_cult.pmc
==============================================================================
--- trunk/src/pmc/perl5cargo_cult.pmc	(original)
+++ trunk/src/pmc/perl5cargo_cult.pmc	Mon Aug 29 08:21:49 2005
@@ -690,7 +690,10 @@ pmclass Perl5cargo_cult dynpmc {
 
                 SELF->vtable = ((PMC *)MUMBLE(value))->vtable;
 
-                SvREFCNT_set(nsv, 0);
+                /* Refcount of nsv is asserted to be 1, so this is a set to
+                   zero.  */
+                Parrot_PMC_set_intval_intkey(INTERP, MUMBLE(nsv),
+					     Ponie_I_SV_REFCNT_INC, -1);
                 Parrot_PMC_set_pointer_intkey(PL_Parrot, MUMBLE(nsv),
                                               Ponie_P_PINE_FOR_FJORDS, 0);
             }



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About