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

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

From:
nicholas
Date:
July 9, 2005 16:00
Subject:
[svn:ponie] rev 323 - in trunk: perl src/pmc
Message ID:
20050709230004.12119.qmail@x1.develooper.com
Author: nicholas
Date: Sat Jul  9 16:00:03 2005
New Revision: 323

Modified:
   trunk/perl/sv.c
   trunk/src/pmc/perl5cargo_cult.pmc
   trunk/src/pmc/perl5cargo_cult_statics.c
Log:
Stage 2 of converting the IV/UV setting code to using the PMC set interface -
actually send it via the PMC.x


Modified: trunk/perl/sv.c
==============================================================================
--- trunk/perl/sv.c	(original)
+++ trunk/perl/sv.c	Sat Jul  9 16:00:03 2005
@@ -1157,32 +1157,8 @@ Does not handle 'set' magic.  See also C
 void
 Perl_sv_setiv(pTHX_ register SV *sv, IV i)
 {
-    //Perl_sv_setiv_backend(aTHX_ sv, i, 0);
-    SV_CHECK_THINKFIRST_COW_DROP(sv);
-    switch (SvTYPE(sv)) {
-    case SVt_NULL:
-	sv_upgrade(sv, SVt_IV);
-	break;
-    case SVt_NV:
-	sv_upgrade(sv, SVt_PVNV);
-	break;
-    case SVt_RV:
-    case SVt_PV:
-	sv_upgrade(sv, SVt_PVIV);
-	break;
-
-    case SVt_PVGV:
-    case SVt_PVAV:
-    case SVt_PVHV:
-    case SVt_PVCV:
-    case SVt_PVFM:
-    case SVt_PVIO:
-	Perl_croak(aTHX_ "Can't coerce %s to integer in %s", sv_reftype(sv,0),
-		   OP_DESC(PL_op));
-    }
-    (void)SvIOK_only(sv);			/* validate number */
-    SvIV_set(sv, i);
-    SvTAINT(sv);
+    Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv),
+				 Ponie_I_SV_IV_NO_GMAGIC, i);
 }
 
 /*
@@ -1196,7 +1172,7 @@ Like C<sv_setiv>, but also handles 'set'
 void
 Perl_sv_setiv_mg(pTHX_ register SV *sv, IV i)
 {
-    Perl_sv_setiv_backend(aTHX_ sv, i, SV_SMAGIC);
+    Parrot_PMC_set_intval(PL_Parrot, MUMBLE(sv), i);
 }
 
 /*
@@ -1211,7 +1187,8 @@ Does not handle 'set' magic.  See also C
 void
 Perl_sv_setuv(pTHX_ register SV *sv, UV u)
 {
-    Perl_sv_setiv_backend(aTHX_ sv, u, SV_SUV);
+    Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv),
+				 Ponie_I_SV_UV_NO_GMAGIC, u);
 }
 
 /*
@@ -1225,7 +1202,7 @@ Like C<sv_setuv>, but also handles 'set'
 void
 Perl_sv_setuv_mg(pTHX_ register SV *sv, UV u)
 {
-    Perl_sv_setiv_backend(aTHX_ sv, u, SV_SUV|SV_SMAGIC);
+    Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_UV, u);
 }
 
 void

Modified: trunk/src/pmc/perl5cargo_cult.pmc
==============================================================================
--- trunk/src/pmc/perl5cargo_cult.pmc	(original)
+++ trunk/src/pmc/perl5cargo_cult.pmc	Sat Jul  9 16:00:03 2005
@@ -123,6 +123,10 @@ pmclass Perl5cargo_cult dynpmc {
         }
     }
 
+    void set_integer_native(INTVAL value) {
+        return Perl_sv_setiv_backend(aTHX_ MUMBLE(SELF), value, SV_SMAGIC);
+    }
+
     INTVAL get_integer() {
         return Perl_sv_2iv_backend(aTHX_ MUMBLE(SELF), SV_GMAGIC);
     }

Modified: trunk/src/pmc/perl5cargo_cult_statics.c
==============================================================================
--- trunk/src/pmc/perl5cargo_cult_statics.c	(original)
+++ trunk/src/pmc/perl5cargo_cult_statics.c	Sat Jul  9 16:00:03 2005
@@ -431,6 +431,17 @@ set_integer_keyed_int(Interp* interprete
             PERL5_FLAGS(pmc) &= ~SVphv_REHASH;
         }
         return;
+
+    case Ponie_I_SV_IV_NO_GMAGIC:
+        Perl_sv_setiv_backend(aTHX_ MUMBLE(pmc), value, 0);
+        return;
+    case Ponie_I_SV_UV:
+        Perl_sv_setiv_backend(aTHX_ MUMBLE(pmc), value, SV_SMAGIC|SV_SUV);
+        return;
+    case Ponie_I_SV_UV_NO_GMAGIC:
+        Perl_sv_setiv_backend(aTHX_ MUMBLE(pmc), value, SV_SUV);
+        return;
+
     default:
         /* Hush gcc. There is a default.  */;
     }



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