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

[email protected] 10 Jul 2005 14:32:54 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
Author: nicholas
Date: Sun Jul 10 07:32:53 2005
New Revision: 327

Modified:
   trunk/   (props changed)
   trunk/perl/sv.c
   trunk/src/pmc/perl5cargo_cult.pmc
Log:
 r26010@ship-in-a-bottle:  nick | 2005-07-10 14:50:02 +0100
 Send all PV sets via a PMC method.


Modified: trunk/perl/sv.c
==============================================================================
--- trunk/perl/sv.c	(original)
+++ trunk/perl/sv.c	Sun Jul 10 07:32:53 2005
@@ -3838,7 +3838,10 @@ undefined.  Does not handle 'set' magic.
 void
 Perl_sv_setpvn(pTHX_ SV *sv, const char *ptr, STRLEN len)
 {
-    Perl_sv_setpvn_backend(aTHX_ sv, ptr, len, 0);
+    struct Ponie_cpvlen setlen = {ptr, len};
+    Parrot_PMC_set_pointer_intkey(PL_Parrot, MUMBLE(sv),
+                                  Ponie_P_SV_PVN_NO_SMAGIC,
+                                  &setlen);
 }
 
 /*
@@ -3852,7 +3855,9 @@ Like C<sv_setpvn>, but also handles 'set
 void
 Perl_sv_setpvn_mg(pTHX_ register SV *sv, register const char *ptr, register STRLEN len)
 {
-    Perl_sv_setpvn_backend(aTHX_ sv, ptr, len, SV_SMAGIC);
+    struct Ponie_cpvlen setlen = {ptr, len};
+    Parrot_PMC_set_pointer_intkey(PL_Parrot, MUMBLE(sv), Ponie_P_SV_PVN,
+				  &setlen);
 }
 
 
@@ -3868,8 +3873,10 @@ handle 'set' magic.  See C<sv_setpv_mg>.
 void
 Perl_sv_setpv(pTHX_ register SV *sv, register const char *ptr)
 {
-    const STRLEN len = ptr ? strlen(ptr) : 0;
-    Perl_sv_setpvn_backend(aTHX_ sv, ptr, len, 0);
+    struct Ponie_cpvlen setlen = {ptr, ptr ? strlen(ptr) : 0};
+    Parrot_PMC_set_pointer_intkey(PL_Parrot, MUMBLE(sv),
+                                  Ponie_P_SV_PVN_NO_SMAGIC,
+                                  &setlen);
 }
 
 /*
@@ -3883,8 +3890,9 @@ Like C<sv_setpv>, but also handles 'set'
 void
 Perl_sv_setpv_mg(pTHX_ register SV *sv, register const char *ptr)
 {
-    const STRLEN len = ptr ? strlen(ptr) : 0;
-    Perl_sv_setpvn_backend(aTHX_ sv, ptr, len, SV_SMAGIC);
+    struct Ponie_cpvlen setlen = {ptr, ptr ? strlen(ptr) : 0};
+    Parrot_PMC_set_pointer_intkey(PL_Parrot, MUMBLE(sv), Ponie_P_SV_PVN,
+                                  &setlen);
 }
 
 /*

Modified: trunk/src/pmc/perl5cargo_cult.pmc
==============================================================================
--- trunk/src/pmc/perl5cargo_cult.pmc	(original)
+++ trunk/src/pmc/perl5cargo_cult.pmc	Sun Jul 10 07:32:53 2005
@@ -713,12 +713,20 @@ pmclass Perl5cargo_cult dynpmc {
                                                  &(output->len), 0);
             }
             break;
+        case Ponie_P_SV_PVN:
+            {
+                struct Ponie_cpvlen *input = (struct Ponie_cpvlen *) value;
+                Perl_sv_setpvn_backend(aTHX_ MUMBLE(SELF), input->pv,
+                                       input->len, SV_SMAGIC);
+            }
+            break;
         case Ponie_P_SV_PVN_NO_SMAGIC:
             {
                 struct Ponie_cpvlen *input = (struct Ponie_cpvlen *) value;
                 Perl_sv_setpvn_backend(aTHX_ MUMBLE(SELF), input->pv,
                                        input->len, 0);
             }
+            break;
         case Ponie_P_PINE_FOR_FJORDS:
             {
                 --PL_sv_count;