cvs commit: ponie/perl embed.fnc proto.h sv.c
[email protected] (Nicholas Clark) 5 May 2004 21:02:03 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/05/05 14:02:02
Modified: perl embed.fnc proto.h sv.c
Log:
And now NVs
Revision Changes Path
1.21 +2 -2 ponie/perl/embed.fnc
Index: embed.fnc
===================================================================
RCS file: /cvs/public/ponie/perl/embed.fnc,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -w -r1.20 -r1.21
--- embed.fnc 5 May 2004 19:44:34 -0000 1.20
+++ embed.fnc 5 May 2004 21:02:02 -0000 1.21
@@ -1265,7 +1265,7 @@
s |void |more_xpvbm
s |void |more_xrv
s |Parrot_PMC |new_xiv
-s |XPVNV* |new_xnv
+s |Parrot_PMC |new_xnv
s |Parrot_PMC |new_xpv
s |Parrot_PMC |new_xpviv
s |Parrot_PMC |new_xpvnv
@@ -1279,7 +1279,7 @@
s |XPVBM* |new_xpvbm
s |Parrot_PMC |new_xrv
s |void |del_xiv |Parrot_PMC p
-s |void |del_xnv |XPVNV* p
+s |void |del_xnv |Parrot_PMC p
s |void |del_xpv |Parrot_PMC p
s |void |del_xpviv |Parrot_PMC p
s |void |del_xpvnv |Parrot_PMC p
1.21 +2 -2 ponie/perl/proto.h
Index: proto.h
===================================================================
RCS file: /cvs/public/ponie/perl/proto.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -w -r1.20 -r1.21
--- proto.h 5 May 2004 19:44:34 -0000 1.20
+++ proto.h 5 May 2004 21:02:02 -0000 1.21
@@ -1217,7 +1217,7 @@
STATIC void S_more_xpvbm(pTHX);
STATIC void S_more_xrv(pTHX);
STATIC Parrot_PMC S_new_xiv(pTHX);
-STATIC XPVNV* S_new_xnv(pTHX);
+STATIC Parrot_PMC S_new_xnv(pTHX);
STATIC Parrot_PMC S_new_xpv(pTHX);
STATIC Parrot_PMC S_new_xpviv(pTHX);
STATIC Parrot_PMC S_new_xpvnv(pTHX);
@@ -1231,7 +1231,7 @@
STATIC XPVBM* 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_ XPVNV* p);
+STATIC void S_del_xnv(pTHX_ Parrot_PMC p);
STATIC void S_del_xpv(pTHX_ Parrot_PMC p);
STATIC void S_del_xpviv(pTHX_ Parrot_PMC p);
STATIC void S_del_xpvnv(pTHX_ Parrot_PMC p);
1.28 +11 -16 ponie/perl/sv.c
Index: sv.c
===================================================================
RCS file: /cvs/public/ponie/perl/sv.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -w -r1.27 -r1.28
--- sv.c 5 May 2004 19:44:34 -0000 1.27
+++ sv.c 5 May 2004 21:02:02 -0000 1.28
@@ -618,7 +618,7 @@
STATIC Parrot_PMC
S_new_xiv(pTHX)
{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVIV");
+ Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5IV");
Parrot_PMC pviv = Parrot_PMC_new(PL_Parrot, type);
Parrot_register_pmc(PL_Parrot, pviv);
return MUMBLE(pviv);
@@ -657,31 +657,24 @@
/* grab a new NV body from the free list, allocating more if necessary */
-STATIC XPVNV*
+STATIC Parrot_PMC
S_new_xnv(pTHX)
{
- NV* xnv;
- LOCK_SV_MUTEX;
- if (!PL_xnv_root)
- more_xnv();
- xnv = PL_xnv_root;
- PL_xnv_root = *(NV**)xnv;
- UNLOCK_SV_MUTEX;
- return (XPVNV*)((char*)xnv - STRUCT_OFFSET(XPVNV, xnv_nv));
+ Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5NV");
+ Parrot_PMC pvnv = Parrot_PMC_new(PL_Parrot, type);
+ Parrot_register_pmc(PL_Parrot, pvnv);
+ return MUMBLE(pvnv);
}
/* return an NV body to the free list */
STATIC void
-S_del_xnv(pTHX_ XPVNV *p)
+S_del_xnv(pTHX_ Parrot_PMC p)
{
- NV* xnv = (NV*)((char*)(p) + STRUCT_OFFSET(XPVNV, xnv_nv));
- LOCK_SV_MUTEX;
- *(NV**)xnv = PL_xnv_root;
- PL_xnv_root = xnv;
- UNLOCK_SV_MUTEX;
+ Parrot_unregister_pmc(PL_Parrot, p);
}
+
/* allocate another arena's worth of NV bodies */
STATIC void
@@ -1742,6 +1735,7 @@
magic = 0;
stash = 0;
del_XNV(SvANY(sv));
+ SvPMC_off(sv);
SvANY(sv) = 0;
if (mt < SVt_PVNV)
mt = SVt_PVNV;
@@ -1818,6 +1812,7 @@
break;
case SVt_NV:
SvANY(sv) = new_XNV();
+ SvPMC_on(sv);
SvNVX(sv) = nv;
break;
case SVt_RV: