cvs commit: ponie/perl embed.fnc proto.h sv.c
[email protected] (Nicholas Clark) 5 May 2004 21:57:52 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/05/05 14:57:52
Modified: perl embed.fnc proto.h sv.c
Log:
And PVBM, leaving only PVGV (which is trouble)
Revision Changes Path
1.22 +2 -2 ponie/perl/embed.fnc
Index: embed.fnc
===================================================================
RCS file: /cvs/public/ponie/perl/embed.fnc,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -w -r1.21 -r1.22
--- embed.fnc 5 May 2004 21:02:02 -0000 1.21
+++ embed.fnc 5 May 2004 21:57:52 -0000 1.22
@@ -1276,7 +1276,7 @@
s |Parrot_PMC |new_xpvfm
s |XPVMG* |new_xpvmg
s |Parrot_PMC |new_xpvlv
-s |XPVBM* |new_xpvbm
+s |Parrot_PMC |new_xpvbm
s |Parrot_PMC |new_xrv
s |void |del_xiv |Parrot_PMC p
s |void |del_xnv |Parrot_PMC p
@@ -1290,7 +1290,7 @@
s |void |del_xpvfm |Parrot_PMC p
s |void |del_xpvmg |XPVMG* p
s |void |del_xpvlv |Parrot_PMC p
-s |void |del_xpvbm |XPVBM* p
+s |void |del_xpvbm |Parrot_PMC p
s |void |del_xrv |XRV* p
s |void |zero_xpvfm |SV *fm
s |void |zero_xpvcv |SV *cv
1.22 +2 -2 ponie/perl/proto.h
Index: proto.h
===================================================================
RCS file: /cvs/public/ponie/perl/proto.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -w -r1.21 -r1.22
--- proto.h 5 May 2004 21:02:02 -0000 1.21
+++ proto.h 5 May 2004 21:57:52 -0000 1.22
@@ -1228,7 +1228,7 @@
STATIC Parrot_PMC S_new_xpvfm(pTHX);
STATIC XPVMG* S_new_xpvmg(pTHX);
STATIC Parrot_PMC S_new_xpvlv(pTHX);
-STATIC XPVBM* S_new_xpvbm(pTHX);
+STATIC Parrot_PMC S_new_xpvbm(pTHX);
STATIC Parrot_PMC S_new_xrv(pTHX);
STATIC void S_del_xiv(pTHX_ Parrot_PMC p);
STATIC void S_del_xnv(pTHX_ Parrot_PMC p);
@@ -1242,7 +1242,7 @@
STATIC void S_del_xpvfm(pTHX_ Parrot_PMC p);
STATIC void S_del_xpvmg(pTHX_ XPVMG* p);
STATIC void S_del_xpvlv(pTHX_ Parrot_PMC p);
-STATIC void S_del_xpvbm(pTHX_ XPVBM* p);
+STATIC void S_del_xpvbm(pTHX_ Parrot_PMC p);
STATIC void S_del_xrv(pTHX_ XRV* p);
STATIC void S_zero_xpvfm(pTHX_ SV *fm);
STATIC void S_zero_xpvcv(pTHX_ SV *cv);
1.29 +8 -15 ponie/perl/sv.c
Index: sv.c
===================================================================
RCS file: /cvs/public/ponie/perl/sv.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -w -r1.28 -r1.29
--- sv.c 5 May 2004 21:02:02 -0000 1.28
+++ sv.c 5 May 2004 21:57:52 -0000 1.29
@@ -1076,7 +1076,6 @@
lval = Parrot_PMC_new(PL_Parrot, type);
-
/* PerlIO_printf(Perl_debug_log,
"Create a new PMC %p\n",lval);
*/
@@ -1115,28 +1114,21 @@
/* grab a new struct xpvbm from the free list, allocating more if necessary */
-STATIC XPVBM*
+STATIC Parrot_PMC
S_new_xpvbm(pTHX)
{
- XPVBM* xpvbm;
- LOCK_SV_MUTEX;
- if (!PL_xpvbm_root)
- more_xpvbm();
- xpvbm = PL_xpvbm_root;
- PL_xpvbm_root = (XPVBM*)xpvbm->xpv_pv;
- UNLOCK_SV_MUTEX;
- return xpvbm;
+ Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVBM");
+ Parrot_PMC pvbm = Parrot_PMC_new(PL_Parrot, type);
+ Parrot_register_pmc(PL_Parrot, pvbm);
+ return MUMBLE(pvbm);
}
/* return a struct xpvbm to the free list */
STATIC void
-S_del_xpvbm(pTHX_ XPVBM *p)
+S_del_xpvbm(pTHX_ Parrot_PMC p)
{
- LOCK_SV_MUTEX;
- p->xpv_pv = (char*)PL_xpvbm_root;
- PL_xpvbm_root = p;
- UNLOCK_SV_MUTEX;
+ Parrot_unregister_pmc(PL_Parrot, p);
}
/* allocate another arena's worth of struct xpvbm */
@@ -1939,6 +1931,7 @@
break;
case SVt_PVBM:
SvANY(sv) = new_XPVBM();
+ SvPMC_on(sv);
SvPVX(sv) = pv;
SvCUR(sv) = cur;
SvLEN(sv) = len;