cvs commit: ponie/perl av.c embed.fnc gv.c hv.c proto.h sv.c util.c
[email protected] (Nicholas Clark) 16 Jun 2004 10:22:22 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/06/16 03:22:22
Modified: perl av.c embed.fnc gv.c hv.c proto.h sv.c util.c
Log:
Seemingly a great step backwards. Remove all the PMCs. ie step 2 in
1: 2: 3:
Head Head PMC
| | |
+-> PMC . +-> Head
| . |
+-> Body + - - -> Body +-> Body
Revision Changes Path
1.6 +6 -6 ponie/perl/av.c
Index: av.c
===================================================================
RCS file: /cvs/public/ponie/perl/av.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -w -r1.5 -r1.6
--- av.c 7 Apr 2004 13:51:58 -0000 1.5
+++ av.c 16 Jun 2004 10:22:19 -0000 1.6
@@ -23,32 +23,32 @@
#include "parrot/extend.h"
SV*** Perl_macro_AvARRAY (pTHX_ AV *av) {
- XPVAV* data = (XPVAV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(av)));
+ XPVAV* data = (XPVAV*) /**/ SvANY(av);
return (SV***)&(data->xav_array);
}
U8* Perl_macro_AvFLAGS (pTHX_ AV *av) {
- XPVAV* data = (XPVAV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(av)));
+ XPVAV* data = (XPVAV*) /**/ SvANY(av);
return &(data->xav_flags);
}
SSize_t* Perl_macro_AvMAX (pTHX_ AV *av) {
- XPVAV* data = (XPVAV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(av)));
+ XPVAV* data = (XPVAV*) /**/ SvANY(av);
return &(data->xav_max);
}
SV*** Perl_macro_AvALLOC (pTHX_ AV *av) {
- XPVAV* data = (XPVAV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(av)));
+ XPVAV* data = (XPVAV*) /**/ SvANY(av);
return &(data->xav_alloc);
}
SV** Perl_macro_AvARYLEN (pTHX_ AV *av) {
- XPVAV* data = (XPVAV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(av)));
+ XPVAV* data = (XPVAV*) /**/ SvANY(av);
return &(data->xav_arylen);
}
SSize_t* Perl_macro_AvFILLp (pTHX_ AV *av) {
- XPVAV* data = (XPVAV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(av)));
+ XPVAV* data = (XPVAV*) /**/ SvANY(av);
return &(data->xav_fill);
}
1.26 +29 -29 ponie/perl/embed.fnc
Index: embed.fnc
===================================================================
RCS file: /cvs/public/ponie/perl/embed.fnc,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -w -r1.25 -r1.26
--- embed.fnc 13 Jun 2004 20:38:53 -0000 1.25
+++ embed.fnc 16 Jun 2004 10:22:19 -0000 1.26
@@ -1268,35 +1268,35 @@
s |void |more_xpvlv
s |void |more_xpvbm
s |void |more_xrv
-s |Parrot_PMC |new_xiv
-s |Parrot_PMC |new_xnv
-s |Parrot_PMC |new_xpv
-s |Parrot_PMC |new_xpviv
-s |Parrot_PMC |new_xpvnv
-s |Parrot_PMC |new_xpvcv
-s |Parrot_PMC |new_xpvav
-s |Parrot_PMC |new_xpvhv
-s |Parrot_PMC |new_xpvio
-s |Parrot_PMC |new_xpvfm
-s |Parrot_PMC |new_xpvmg
-s |Parrot_PMC |new_xpvlv
-s |Parrot_PMC |new_xpvbm
-s |Parrot_PMC |new_xpvgv
-s |Parrot_PMC |new_xrv
-s |void |del_xiv |Parrot_PMC 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
-s |void |del_xpvcv |Parrot_PMC p
-s |void |del_xpvav |Parrot_PMC p
-s |void |del_xpvhv |Parrot_PMC p
-s |void |del_xpvio |Parrot_PMC p
-s |void |del_xpvfm |Parrot_PMC p
-s |void |del_xpvmg |Parrot_PMC p
-s |void |del_xpvlv |Parrot_PMC p
-s |void |del_xpvbm |Parrot_PMC p
-s |void |del_xpvgv |Parrot_PMC p
+s |XPVIV* |new_xiv
+s |XPVNV* |new_xnv
+s |XPV* |new_xpv
+s |XPVIV* |new_xpviv
+s |XPVNV* |new_xpvnv
+s |XPVCV* |new_xpvcv
+s |XPVAV* |new_xpvav
+s |XPVHV* |new_xpvhv
+s |XPVIO* |new_xpvio
+s |XPVFM* |new_xpvfm
+s |XPVMG* |new_xpvmg
+s |XPVLV* |new_xpvlv
+s |XPVBM* |new_xpvbm
+s |XPVGV* |new_xpvgv
+s |XRV* |new_xrv
+s |void |del_xiv |XPVIV* p
+s |void |del_xnv |XPVNV* p
+s |void |del_xpv |XPV* p
+s |void |del_xpviv |XPVIV* p
+s |void |del_xpvnv |XPVNV* p
+s |void |del_xpvcv |XPVCV* p
+s |void |del_xpvav |XPVAV* p
+s |void |del_xpvhv |XPVHV* p
+s |void |del_xpvio |XPVIO* p
+s |void |del_xpvfm |XPVFM* p
+s |void |del_xpvmg |XPVMG* p
+s |void |del_xpvlv |XPVLV* p
+s |void |del_xpvbm |XPVBM* p
+s |void |del_xpvgv |XPVGV* p
s |void |del_xrv |XRV* p
s |void |zero_xpvfm |SV *fm
s |void |zero_xpvcv |SV *cv
1.6 +5 -5 ponie/perl/gv.c
Index: gv.c
===================================================================
RCS file: /cvs/public/ponie/perl/gv.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -w -r1.5 -r1.6
--- gv.c 7 Apr 2004 13:51:58 -0000 1.5
+++ gv.c 16 Jun 2004 10:22:19 -0000 1.6
@@ -28,7 +28,7 @@
GP** Perl_macro_GvGP (pTHX_ GV *sv) {
if(SvPMC(sv)) {
- XPVGV* data = (XPVGV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVGV* data = (XPVGV*) /**/ SvANY(sv);
return &(data->xgv_gp);
}
return &((XPVGV*)SvANY(sv))->xgv_gp;
@@ -36,7 +36,7 @@
char** Perl_macro_GvNAME (pTHX_ GV *sv) {
if(SvPMC(sv)) {
- XPVGV* data = (XPVGV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVGV* data = (XPVGV*) /**/ SvANY(sv);
return &(data->xgv_name);
}
return &((XPVGV*)SvANY(sv))->xgv_name;
@@ -44,7 +44,7 @@
STRLEN* Perl_macro_GvNAMELEN (pTHX_ GV *sv) {
if(SvPMC(sv)) {
- XPVGV* data = (XPVGV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVGV* data = (XPVGV*) /**/ SvANY(sv);
return &(data->xgv_namelen);
}
return &((XPVGV*)SvANY(sv))->xgv_namelen;
@@ -52,7 +52,7 @@
HV** Perl_macro_GvSTASH (pTHX_ GV *sv) {
if(SvPMC(sv)) {
- XPVGV* data = (XPVGV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVGV* data = (XPVGV*) /**/ SvANY(sv);
return &(data->xgv_stash);
}
return &((XPVGV*)SvANY(sv))->xgv_stash;
@@ -60,7 +60,7 @@
U8* Perl_macro_GvFLAGS (pTHX_ GV *sv) {
if(SvPMC(sv)) {
- XPVGV* data = (XPVGV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVGV* data = (XPVGV*) /**/ SvANY(sv);
return &(data->xgv_flags);
}
return &((XPVGV*)SvANY(sv))->xgv_flags;
1.9 +10 -10 ponie/perl/hv.c
Index: hv.c
===================================================================
RCS file: /cvs/public/ponie/perl/hv.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -w -r1.8 -r1.9
--- hv.c 7 Apr 2004 13:51:58 -0000 1.8
+++ hv.c 16 Jun 2004 10:22:19 -0000 1.9
@@ -25,52 +25,52 @@
#define HV_MAX_LENGTH_BEFORE_SPLIT 14
HE*** Perl_macro_HvARRAY (pTHX_ HV *hv) {
- XPVHV* data = (XPVHV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(hv)));
+ XPVHV* data = (XPVHV*) /**/ SvANY(hv);
return (HE***)&data->xhv_array;
}
XPVHV* Perl_macro_HvDATA (pTHX_ HV *hv) {
- return (XPVHV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(hv)));
+ return (XPVHV*) /**/ SvANY(hv);
}
STRLEN* Perl_macro_HvFILL (pTHX_ HV *hv) {
- XPVHV* data = (XPVHV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(hv)));
+ XPVHV* data = (XPVHV*) /**/ SvANY(hv);
return &(data->xhv_fill);
}
STRLEN* Perl_macro_HvMAX (pTHX_ HV *hv) {
- XPVHV* data = (XPVHV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(hv)));
+ XPVHV* data = (XPVHV*) /**/ SvANY(hv);
return &(data->xhv_max);
}
I32* Perl_macro_HvRITER (pTHX_ HV *hv) {
- XPVHV* data = (XPVHV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(hv)));
+ XPVHV* data = (XPVHV*) /**/ SvANY(hv);
return &(data->xhv_riter);
}
HE** Perl_macro_HvEITER (pTHX_ HV *hv) {
- XPVHV* data = (XPVHV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(hv)));
+ XPVHV* data = (XPVHV*) /**/ SvANY(hv);
return &(data->xhv_eiter);
}
PMOP** Perl_macro_HvPMROOT (pTHX_ HV *hv) {
- XPVHV* data = (XPVHV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(hv)));
+ XPVHV* data = (XPVHV*) /**/ SvANY(hv);
return &(data->xhv_pmroot);
}
char** Perl_macro_HvNAME (pTHX_ HV *hv) {
- XPVHV* data = (XPVHV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(hv)));
+ XPVHV* data = (XPVHV*) /**/ SvANY(hv);
return &(data->xhv_name);
}
IV* Perl_macro_XHvTOTALKEYS (pTHX_ HV *hv) {
- XPVHV* data = (XPVHV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(hv)));
+ XPVHV* data = (XPVHV*) /**/ SvANY(hv);
return &(data->xhv_keys);
}
NV* Perl_macro_XHvPLACEHOLDERS (pTHX_ HV *hv) {
- XPVHV* data = (XPVHV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(hv)));
+ XPVHV* data = (XPVHV*) /**/ SvANY(hv);
return &(data->xhv_placeholders);
}
1.26 +29 -29 ponie/perl/proto.h
Index: proto.h
===================================================================
RCS file: /cvs/public/ponie/perl/proto.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -w -r1.25 -r1.26
--- proto.h 13 Jun 2004 20:38:53 -0000 1.25
+++ proto.h 16 Jun 2004 10:22:20 -0000 1.26
@@ -1220,35 +1220,35 @@
STATIC void S_more_xpvlv(pTHX);
STATIC void S_more_xpvbm(pTHX);
STATIC void S_more_xrv(pTHX);
-STATIC Parrot_PMC S_new_xiv(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);
-STATIC Parrot_PMC S_new_xpvcv(pTHX);
-STATIC Parrot_PMC S_new_xpvav(pTHX);
-STATIC Parrot_PMC S_new_xpvhv(pTHX);
-STATIC Parrot_PMC S_new_xpvio(pTHX);
-STATIC Parrot_PMC S_new_xpvfm(pTHX);
-STATIC Parrot_PMC S_new_xpvmg(pTHX);
-STATIC Parrot_PMC S_new_xpvlv(pTHX);
-STATIC Parrot_PMC S_new_xpvbm(pTHX);
-STATIC Parrot_PMC S_new_xpvgv(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);
-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);
-STATIC void S_del_xpvcv(pTHX_ Parrot_PMC p);
-STATIC void S_del_xpvav(pTHX_ Parrot_PMC p);
-STATIC void S_del_xpvhv(pTHX_ Parrot_PMC p);
-STATIC void S_del_xpvio(pTHX_ Parrot_PMC p);
-STATIC void S_del_xpvfm(pTHX_ Parrot_PMC p);
-STATIC void S_del_xpvmg(pTHX_ Parrot_PMC p);
-STATIC void S_del_xpvlv(pTHX_ Parrot_PMC p);
-STATIC void S_del_xpvbm(pTHX_ Parrot_PMC p);
-STATIC void S_del_xpvgv(pTHX_ Parrot_PMC p);
+STATIC XPVIV* S_new_xiv(pTHX);
+STATIC XPVNV* S_new_xnv(pTHX);
+STATIC XPV* S_new_xpv(pTHX);
+STATIC XPVIV* S_new_xpviv(pTHX);
+STATIC XPVNV* S_new_xpvnv(pTHX);
+STATIC XPVCV* S_new_xpvcv(pTHX);
+STATIC XPVAV* S_new_xpvav(pTHX);
+STATIC XPVHV* S_new_xpvhv(pTHX);
+STATIC XPVIO* S_new_xpvio(pTHX);
+STATIC XPVFM* S_new_xpvfm(pTHX);
+STATIC XPVMG* S_new_xpvmg(pTHX);
+STATIC XPVLV* S_new_xpvlv(pTHX);
+STATIC XPVBM* S_new_xpvbm(pTHX);
+STATIC XPVGV* S_new_xpvgv(pTHX);
+STATIC XRV* S_new_xrv(pTHX);
+STATIC void S_del_xiv(pTHX_ XPVIV* p);
+STATIC void S_del_xnv(pTHX_ XPVNV* p);
+STATIC void S_del_xpv(pTHX_ XPV* p);
+STATIC void S_del_xpviv(pTHX_ XPVIV* p);
+STATIC void S_del_xpvnv(pTHX_ XPVNV* p);
+STATIC void S_del_xpvcv(pTHX_ XPVCV* p);
+STATIC void S_del_xpvav(pTHX_ XPVAV* p);
+STATIC void S_del_xpvhv(pTHX_ XPVHV* p);
+STATIC void S_del_xpvio(pTHX_ XPVIO* p);
+STATIC void S_del_xpvfm(pTHX_ XPVFM* p);
+STATIC void S_del_xpvmg(pTHX_ XPVMG* p);
+STATIC void S_del_xpvlv(pTHX_ XPVLV* p);
+STATIC void S_del_xpvbm(pTHX_ XPVBM* p);
+STATIC void S_del_xpvgv(pTHX_ XPVGV* 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.34 +244 -214 ponie/perl/sv.c
Index: sv.c
===================================================================
RCS file: /cvs/public/ponie/perl/sv.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -w -r1.33 -r1.34
--- sv.c 13 Jun 2004 20:38:53 -0000 1.33
+++ sv.c 16 Jun 2004 10:22:20 -0000 1.34
@@ -615,21 +615,32 @@
/* grab a new IV body from the free list, allocating more if necessary */
-STATIC Parrot_PMC
+STATIC XPVIV*
S_new_xiv(pTHX)
{
- 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);
+ IV* xiv;
+ LOCK_SV_MUTEX;
+ if (!PL_xiv_root)
+ more_xiv();
+ xiv = PL_xiv_root;
+ /*
+ * See comment in more_xiv() -- RAM.
+ */
+ PL_xiv_root = *(IV**)xiv;
+ UNLOCK_SV_MUTEX;
+ return (XPVIV*)((char*)xiv - STRUCT_OFFSET(XPVIV, xiv_iv));
}
/* return an IV body to the free list */
STATIC void
-S_del_xiv(pTHX_ Parrot_PMC p)
+S_del_xiv(pTHX_ XPVIV *p)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(p));
+ IV* xiv = (IV*)((char*)(p) + STRUCT_OFFSET(XPVIV, xiv_iv));
+ LOCK_SV_MUTEX;
+ *(IV**)xiv = PL_xiv_root;
+ PL_xiv_root = xiv;
+ UNLOCK_SV_MUTEX;
}
/* allocate another arena's worth of IV bodies */
@@ -657,24 +668,31 @@
/* grab a new NV body from the free list, allocating more if necessary */
-STATIC Parrot_PMC
+STATIC XPVNV*
S_new_xnv(pTHX)
{
- 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);
+ 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));
}
/* return an NV body to the free list */
STATIC void
-S_del_xnv(pTHX_ Parrot_PMC p)
+S_del_xnv(pTHX_ XPVNV *p)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(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;
}
-
/* allocate another arena's worth of NV bodies */
STATIC void
@@ -700,18 +718,17 @@
/* grab a new struct xrv from the free list, allocating more if necessary */
-STATIC Parrot_PMC
+STATIC XRV*
S_new_xrv(pTHX)
{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5RV");
- Parrot_PMC rv;
- /*
- Instead of giving back a real XRV we give back a PMC
- */
-
- rv = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, rv);
- return MUMBLE(rv);
+ XRV* xrv;
+ LOCK_SV_MUTEX;
+ if (!PL_xrv_root)
+ more_xrv();
+ xrv = PL_xrv_root;
+ PL_xrv_root = (XRV*)xrv->xrv_rv;
+ UNLOCK_SV_MUTEX;
+ return xrv;
}
/* return a struct xrv to the free list */
@@ -719,7 +736,10 @@
STATIC void
S_del_xrv(pTHX_ XRV *p)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(p));
+ LOCK_SV_MUTEX;
+ p->xrv_rv = (SV*)PL_xrv_root;
+ PL_xrv_root = p;
+ UNLOCK_SV_MUTEX;
}
/* allocate another arena's worth of struct xrv */
@@ -747,26 +767,28 @@
/* grab a new struct xpv from the free list, allocating more if necessary */
-STATIC Parrot_PMC
+STATIC XPV*
S_new_xpv(pTHX)
{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PV");
- Parrot_PMC pv;
- /*
- Instead of giving back a real XPV we give back a PMC
- */
-
- pv = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, pv);
- return MUMBLE(pv);
+ XPV* xpv;
+ LOCK_SV_MUTEX;
+ if (!PL_xpv_root)
+ more_xpv();
+ xpv = PL_xpv_root;
+ PL_xpv_root = (XPV*)xpv->xpv_pv;
+ UNLOCK_SV_MUTEX;
+ return xpv;
}
/* return a struct xpv to the free list */
STATIC void
-S_del_xpv(pTHX_ Parrot_PMC p)
+S_del_xpv(pTHX_ XPV *p)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(p));
+ LOCK_SV_MUTEX;
+ p->xpv_pv = (char*)PL_xpv_root;
+ PL_xpv_root = p;
+ UNLOCK_SV_MUTEX;
}
/* allocate another arena's worth of struct xpv */
@@ -791,21 +813,28 @@
/* grab a new struct xpviv from the free list, allocating more if necessary */
-STATIC Parrot_PMC
+STATIC XPVIV*
S_new_xpviv(pTHX)
{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVIV");
- Parrot_PMC pviv = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, pviv);
- return MUMBLE(pviv);
+ XPVIV* xpviv;
+ LOCK_SV_MUTEX;
+ if (!PL_xpviv_root)
+ more_xpviv();
+ xpviv = PL_xpviv_root;
+ PL_xpviv_root = (XPVIV*)xpviv->xpv_pv;
+ UNLOCK_SV_MUTEX;
+ return xpviv;
}
/* return a struct xpviv to the free list */
STATIC void
-S_del_xpviv(pTHX_ Parrot_PMC p)
+S_del_xpviv(pTHX_ XPVIV *p)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(p));
+ LOCK_SV_MUTEX;
+ p->xpv_pv = (char*)PL_xpviv_root;
+ PL_xpviv_root = p;
+ UNLOCK_SV_MUTEX;
}
/* allocate another arena's worth of struct xpviv */
@@ -830,21 +859,28 @@
/* grab a new struct xpvnv from the free list, allocating more if necessary */
-STATIC Parrot_PMC
+STATIC XPVNV*
S_new_xpvnv(pTHX)
{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVNV");
- Parrot_PMC pvnv = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, pvnv);
- return MUMBLE(pvnv);
+ XPVNV* xpvnv;
+ LOCK_SV_MUTEX;
+ if (!PL_xpvnv_root)
+ more_xpvnv();
+ xpvnv = PL_xpvnv_root;
+ PL_xpvnv_root = (XPVNV*)xpvnv->xpv_pv;
+ UNLOCK_SV_MUTEX;
+ return xpvnv;
}
/* return a struct xpvnv to the free list */
STATIC void
-S_del_xpvnv(pTHX_ Parrot_PMC p)
+S_del_xpvnv(pTHX_ XPVNV *p)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(p));
+ LOCK_SV_MUTEX;
+ p->xpv_pv = (char*)PL_xpvnv_root;
+ PL_xpvnv_root = p;
+ UNLOCK_SV_MUTEX;
}
/* allocate another arena's worth of struct xpvnv */
@@ -869,28 +905,28 @@
/* grab a new struct xpvcv from the free list, allocating more if necessary */
-STATIC Parrot_PMC
+STATIC XPVCV*
S_new_xpvcv(pTHX)
{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVCV");
- Parrot_PMC cv = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, cv);
- return MUMBLE(cv);
+ XPVCV* xpvcv;
+ LOCK_SV_MUTEX;
+ if (!PL_xpvcv_root)
+ more_xpvcv();
+ xpvcv = PL_xpvcv_root;
+ PL_xpvcv_root = (XPVCV*)xpvcv->xpv_pv;
+ UNLOCK_SV_MUTEX;
+ return xpvcv;
}
/* return a struct xpvcv to the free list */
STATIC void
-S_del_xpvcv(pTHX_ Parrot_PMC cv)
-{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(cv));
-}
-
-void
-S_zero_xpvcv(pTHX_ SV *fm)
+S_del_xpvcv(pTHX_ XPVCV *p)
{
- assert(SvPMC(fm));
- Zero(Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(fm))), 1, XPVCV);
+ LOCK_SV_MUTEX;
+ p->xpv_pv = (char*)PL_xpvcv_root;
+ PL_xpvcv_root = p;
+ UNLOCK_SV_MUTEX;
}
/* allocate another arena's worth of struct xpvcv */
@@ -915,13 +951,28 @@
/* grab a new struct xpvav from the free list, allocating more if necessary */
+STATIC XPVAV*
+S_new_xpvav(pTHX)
+{
+ XPVAV* xpvav;
+ LOCK_SV_MUTEX;
+ if (!PL_xpvav_root)
+ more_xpvav();
+ xpvav = PL_xpvav_root;
+ PL_xpvav_root = (XPVAV*)xpvav->xav_array;
+ UNLOCK_SV_MUTEX;
+ return xpvav;
+}
/* return a struct xpvav to the free list */
STATIC void
-S_del_xpvav(pTHX_ Parrot_PMC av)
+S_del_xpvav(pTHX_ XPVAV *p)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(av));
+ LOCK_SV_MUTEX;
+ p->xav_array = (char*)PL_xpvav_root;
+ PL_xpvav_root = p;
+ UNLOCK_SV_MUTEX;
}
/* allocate another arena's worth of struct xpvav */
@@ -946,10 +997,10 @@
/* grab a new struct xpvhv from the free list, allocating more if necessary */
-STATIC Parrot_PMC
+STATIC XPVHV*
S_new_xpvhv(pTHX)
{
- /* XPVHV* xpvhv;
+ XPVHV* xpvhv;
LOCK_SV_MUTEX;
if (!PL_xpvhv_root)
more_xpvhv();
@@ -957,26 +1008,17 @@
PL_xpvhv_root = (XPVHV*)xpvhv->xhv_array;
UNLOCK_SV_MUTEX;
return xpvhv;
- */
-
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVHV");
- Parrot_PMC hv;
- /*
- Instead of giving back a real XPVLV we give back a PMC
- */
-
-
- hv = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, hv);
- return MUMBLE(hv);
}
/* return a struct xpvhv to the free list */
STATIC void
-S_del_xpvhv(pTHX_ Parrot_PMC p)
+S_del_xpvhv(pTHX_ XPVHV *p)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(p));
+ LOCK_SV_MUTEX;
+ p->xhv_array = (char*)PL_xpvhv_root;
+ PL_xpvhv_root = p;
+ UNLOCK_SV_MUTEX;
}
/* allocate another arena's worth of struct xpvhv */
@@ -1001,21 +1043,28 @@
/* grab a new struct xpvmg from the free list, allocating more if necessary */
-STATIC Parrot_PMC
+STATIC XPVMG*
S_new_xpvmg(pTHX)
{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVMG");
- Parrot_PMC pvpvmg = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, pvpvmg);
- return MUMBLE(pvpvmg);
+ XPVMG* xpvmg;
+ LOCK_SV_MUTEX;
+ if (!PL_xpvmg_root)
+ more_xpvmg();
+ xpvmg = PL_xpvmg_root;
+ PL_xpvmg_root = (XPVMG*)xpvmg->xpv_pv;
+ UNLOCK_SV_MUTEX;
+ return xpvmg;
}
-/* return an PVMG body to the free list */
+/* return a struct xpvmg to the free list */
STATIC void
-S_del_xpvmg(pTHX_ Parrot_PMC p)
+S_del_xpvmg(pTHX_ XPVMG *p)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(p));
+ LOCK_SV_MUTEX;
+ p->xpv_pv = (char*)PL_xpvmg_root;
+ PL_xpvmg_root = p;
+ UNLOCK_SV_MUTEX;
}
/* allocate another arena's worth of struct xpvmg */
@@ -1040,49 +1089,28 @@
/* grab a new struct xpvlv from the free list, allocating more if necessary */
-STATIC Parrot_PMC
-S_new_xpvav(pTHX)
-{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVAV");
- Parrot_PMC av;
- /*
- Instead of giving back a real XPVLV we give back a PMC
- */
-
-
- av = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, av);
- return MUMBLE(av);
-}
-
-
-STATIC Parrot_PMC
+STATIC XPVLV*
S_new_xpvlv(pTHX)
{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVLV");
- Parrot_PMC lval;
- /*
- Instead of giving back a real XPVLV we give back a PMC
-
- */
-
-
-
- lval = Parrot_PMC_new(PL_Parrot, type);
- /* PerlIO_printf(Perl_debug_log,
- "Create a new PMC %p\n",lval);
- */
-
- Parrot_register_pmc(PL_Parrot, lval);
- return MUMBLE(lval);
+ XPVLV* xpvlv;
+ LOCK_SV_MUTEX;
+ if (!PL_xpvlv_root)
+ more_xpvlv();
+ xpvlv = PL_xpvlv_root;
+ PL_xpvlv_root = (XPVLV*)xpvlv->xpv_pv;
+ UNLOCK_SV_MUTEX;
+ return xpvlv;
}
/* return a struct xpvlv to the free list */
STATIC void
-S_del_xpvlv(pTHX_ Parrot_PMC lval)
+S_del_xpvlv(pTHX_ XPVLV *p)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(lval));
+ LOCK_SV_MUTEX;
+ p->xpv_pv = (char*)PL_xpvlv_root;
+ PL_xpvlv_root = p;
+ UNLOCK_SV_MUTEX;
}
/* allocate another arena's worth of struct xpvlv */
@@ -1107,21 +1135,28 @@
/* grab a new struct xpvbm from the free list, allocating more if necessary */
-STATIC Parrot_PMC
+STATIC XPVBM*
S_new_xpvbm(pTHX)
{
- 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);
+ 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;
}
/* return a struct xpvbm to the free list */
STATIC void
-S_del_xpvbm(pTHX_ Parrot_PMC p)
+S_del_xpvbm(pTHX_ XPVBM *p)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(p));
+ LOCK_SV_MUTEX;
+ p->xpv_pv = (char*)PL_xpvbm_root;
+ PL_xpvbm_root = p;
+ UNLOCK_SV_MUTEX;
}
/* allocate another arena's worth of struct xpvbm */
@@ -1144,23 +1179,6 @@
xpvbm->xpv_pv = 0;
}
-STATIC Parrot_PMC
-S_new_xpvgv(pTHX)
-{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVGV");
- Parrot_PMC pvgv = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, pvgv);
- return MUMBLE(pvgv);
-}
-
-/* return a struct xpvgv to the free list */
-
-STATIC void
-S_del_xpvgv(pTHX_ Parrot_PMC p)
-{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(p));
-}
-
#define my_safemalloc(s) (void*)safemalloc(s)
#define my_safefree(p) safefree((char*)p)
@@ -1243,7 +1261,7 @@
#endif /* PURIFY */
#define new_XPVGV() (void*)new_xpvgv()
-#define del_XPVGV(p) del_xpvfm((XPVGV *)p)
+#define del_XPVGV(p) del_xpvgv((XPVGV *)p)
#define new_XPVFM() (void*)new_xpvfm()
#define del_XPVFM(p) del_xpvfm((XPVFM *)p)
@@ -1251,32 +1269,37 @@
#define new_XPVIO() (void*)new_xpvio()
#define del_XPVIO(p) del_xpvio((XPVIO *)p)
-STATIC Parrot_PMC
+STATIC XPVGV *
+S_new_xpvgv(pTHX)
+{
+ return my_safemalloc(sizeof(XPVGV));
+}
+STATIC void
+S_del_xpvgv(pTHX_ XPVGV *fm)
+{
+ my_safefree(fm);
+}
+
+STATIC XPVFM *
S_new_xpvfm(pTHX)
{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVFM");
- Parrot_PMC fm = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, fm);
- return MUMBLE(fm);
+ return my_safemalloc(sizeof(XPVFM));
}
STATIC void
-S_del_xpvfm(pTHX_ Parrot_PMC fm)
+S_del_xpvfm(pTHX_ XPVFM *fm)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(fm));
+ my_safefree(fm);
}
-STATIC Parrot_PMC
+STATIC XPVIO *
S_new_xpvio(pTHX)
{
- Parrot_Int type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVIO");
- Parrot_PMC io = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, io);
- return MUMBLE(io);
+ return my_safemalloc(sizeof(XPVIO));
}
STATIC void
-S_del_xpvio(pTHX_ Parrot_PMC io)
+S_del_xpvio(pTHX_ XPVIO*io)
{
- Parrot_unregister_pmc(PL_Parrot, MUMBLE(io));
+ my_safefree(io);
}
void**
@@ -1295,7 +1318,7 @@
MAGIC** Perl_macro_SvMAGIC (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVMG* data = (XPVMG*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVMG* data = (XPVMG*) /**/ SvANY(sv);
return &(data->xmg_magic);
}
return &((XPVMG*)SvANY(sv))->xmg_magic;
@@ -1303,7 +1326,7 @@
HV** Perl_macro_SvSTASH (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVMG* data = (XPVMG*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVMG* data = (XPVMG*) /**/ SvANY(sv);
return &(data->xmg_stash);
}
return &((XPVMG*)SvANY(sv))->xmg_stash;
@@ -1312,7 +1335,7 @@
SV** Perl_macro_SvRV (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XRV* data = (XRV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XRV* data = (XRV*) /**/ SvANY(sv);
return &(data->xrv_rv);
}
return &((XRV*)SvANY(sv))->xrv_rv;
@@ -1322,7 +1345,7 @@
UV* Perl_macro_SvUVX (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVUV* data = (XPVUV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVUV* data = (XPVUV*) /**/ SvANY(sv);
return &(data->xuv_uv);
}
return &((XPVUV*)SvANY(sv))->xuv_uv;
@@ -1331,7 +1354,7 @@
NV* Perl_macro_SvNVX (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVNV* data = (XPVNV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVNV* data = (XPVNV*) /**/ SvANY(sv);
return &(data->xnv_nv);
}
return &((XPVNV*)SvANY(sv))->xnv_nv;
@@ -1340,7 +1363,7 @@
IV* Perl_macro_SvIVX (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIV* data = (XPVIV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIV* data = (XPVIV*) /**/ SvANY(sv);
return &(data->xiv_iv);
}
return &((XPVIV*)SvANY(sv))->xiv_iv;
@@ -1349,7 +1372,7 @@
char** Perl_macro_SvPVX (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPV* data = (XPV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPV* data = (XPV*) /**/ SvANY(sv);
return &(data->xpv_pv);
}
return &((XPV*)SvANY(sv))->xpv_pv;
@@ -1358,7 +1381,7 @@
STRLEN* Perl_macro_SvLEN (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPV* data = (XPV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPV* data = (XPV*) /**/ SvANY(sv);
return &(data->xpv_len);
}
return &((XPV*)SvANY(sv))->xpv_len;
@@ -1367,7 +1390,7 @@
STRLEN* Perl_macro_SvCUR (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPV* data = (XPV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPV* data = (XPV*) /**/ SvANY(sv);
return &(data->xpv_cur);
}
return &((XPV*)SvANY(sv))->xpv_cur;
@@ -1376,7 +1399,7 @@
U8* Perl_macro_BmRARE (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVBM* data = (XPVBM*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVBM* data = (XPVBM*) /**/ SvANY(sv);
return &(data->xbm_rare);
}
return &((XPVBM*)SvANY(sv))->xbm_rare;
@@ -1384,7 +1407,7 @@
I32* Perl_macro_BmUSEFUL (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVBM* data = (XPVBM*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVBM* data = (XPVBM*) /**/ SvANY(sv);
return &(data->xbm_useful);
}
return &((XPVBM*)SvANY(sv))->xbm_useful;
@@ -1392,7 +1415,7 @@
U16* Perl_macro_BmPREVIOUS (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVBM* data = (XPVBM*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVBM* data = (XPVBM*) /**/ SvANY(sv);
return &(data->xbm_previous);
}
return &((XPVBM*)SvANY(sv))->xbm_previous;
@@ -1400,7 +1423,7 @@
IV* Perl_macro_FmLINES (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVFM* data = (XPVFM*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVFM* data = (XPVFM*) /**/ SvANY(sv);
return &(data->xfm_lines);
}
return &((XPVFM*)SvANY(sv))->xfm_lines;
@@ -1410,7 +1433,7 @@
XPVLV* data;
if(!SvPMC(sv))
abort();
- data = (XPVLV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ data = (XPVLV*) /**/ SvANY(sv);
return &(data->xlv_type);
}
@@ -1418,7 +1441,7 @@
XPVLV* data;
if(!SvPMC(sv))
abort();
- data = (XPVLV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ data = (XPVLV*) /**/ SvANY(sv);
return &(data->xlv_targ);
}
@@ -1426,7 +1449,7 @@
XPVLV* data;
if(!SvPMC(sv))
abort();
- data = (XPVLV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ data = (XPVLV*) /**/ SvANY(sv);
return &(data->xlv_targoff);
}
@@ -1434,13 +1457,13 @@
XPVLV* data;
if(!SvPMC(sv))
abort();
- data = (XPVLV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ data = (XPVLV*) /**/ SvANY(sv);
return &(data->xlv_targlen);
}
PerlIO** Perl_macro_IoIFP (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_ifp);
}
return &((XPVIO*)SvANY(sv))->xio_ifp;
@@ -1448,7 +1471,7 @@
PerlIO** Perl_macro_IoOFP (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_ofp);
}
return &((XPVIO*)SvANY(sv))->xio_ofp;
@@ -1456,7 +1479,7 @@
DIR** Perl_macro_IoDIRP (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_dirp);
}
return &((XPVIO*)SvANY(sv))->xio_dirp;
@@ -1464,7 +1487,7 @@
void** Perl_macro_IoANY (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_any);
}
return &((XPVIO*)SvANY(sv))->xio_any;
@@ -1472,7 +1495,7 @@
IV* Perl_macro_IoLINES (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_lines);
}
return &((XPVIO*)SvANY(sv))->xio_lines;
@@ -1480,7 +1503,7 @@
IV* Perl_macro_IoPAGE (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_page);
}
return &((XPVIO*)SvANY(sv))->xio_page;
@@ -1488,7 +1511,7 @@
IV* Perl_macro_IoPAGE_LEN (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_page_len);
}
return &((XPVIO*)SvANY(sv))->xio_page_len;
@@ -1496,7 +1519,7 @@
IV* Perl_macro_IoLINES_LEFT (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_lines_left);
}
return &((XPVIO*)SvANY(sv))->xio_lines_left;
@@ -1504,7 +1527,7 @@
char** Perl_macro_IoTOP_NAME (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_top_name);
}
return &((XPVIO*)SvANY(sv))->xio_top_name;
@@ -1512,7 +1535,7 @@
GV** Perl_macro_IoTOP_GV (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_top_gv);
}
return &((XPVIO*)SvANY(sv))->xio_top_gv;
@@ -1520,7 +1543,7 @@
char** Perl_macro_IoFMT_NAME (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_fmt_name);
}
return &((XPVIO*)SvANY(sv))->xio_fmt_name;
@@ -1528,7 +1551,7 @@
GV** Perl_macro_IoFMT_GV (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_fmt_gv);
}
return &((XPVIO*)SvANY(sv))->xio_fmt_gv;
@@ -1536,7 +1559,7 @@
char** Perl_macro_IoBOTTOM_NAME (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_bottom_name);
}
return &((XPVIO*)SvANY(sv))->xio_bottom_name;
@@ -1544,7 +1567,7 @@
GV** Perl_macro_IoBOTTOM_GV (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_bottom_gv);
}
return &((XPVIO*)SvANY(sv))->xio_bottom_gv;
@@ -1552,7 +1575,7 @@
short* Perl_macro_IoSUBPROCESS (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_subprocess);
}
return &((XPVIO*)SvANY(sv))->xio_subprocess;
@@ -1560,7 +1583,7 @@
char* Perl_macro_IoTYPE (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_type);
}
return &((XPVIO*)SvANY(sv))->xio_type;
@@ -1568,7 +1591,7 @@
char* Perl_macro_IoFLAGS (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVIO* data = (XPVIO*) /**/ SvANY(sv);
return &(data->xio_flags);
}
return &((XPVIO*)SvANY(sv))->xio_flags;
@@ -1576,7 +1599,7 @@
HV** Perl_macro_CvSTASH (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_stash);
}
return &((XPVCV*)SvANY(sv))->xcv_stash;
@@ -1584,7 +1607,7 @@
OP** Perl_macro_CvSTART (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_start);
}
return &((XPVCV*)SvANY(sv))->xcv_start;
@@ -1592,7 +1615,7 @@
OP** Perl_macro_CvROOT (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_root);
}
return &((XPVCV*)SvANY(sv))->xcv_root;
@@ -1600,7 +1623,7 @@
xpvcv_xcv_xsub_t * Perl_macro_CvXSUB (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_xsub);
}
return &((XPVCV*)SvANY(sv))->xcv_xsub;
@@ -1608,7 +1631,7 @@
ANY* Perl_macro_CvXSUBANY (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_xsubany);
}
return &((XPVCV*)SvANY(sv))->xcv_xsubany;
@@ -1616,7 +1639,7 @@
GV** Perl_macro_CvGV (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_gv);
}
return &((XPVCV*)SvANY(sv))->xcv_gv;
@@ -1624,7 +1647,7 @@
char** Perl_macro_CvFILE (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_file);
}
return &((XPVCV*)SvANY(sv))->xcv_file;
@@ -1632,7 +1655,7 @@
long* Perl_macro_CvDEPTH (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_depth);
}
return &((XPVCV*)SvANY(sv))->xcv_depth;
@@ -1640,7 +1663,7 @@
PADLIST** Perl_macro_CvPADLIST (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_padlist);
}
return &((XPVCV*)SvANY(sv))->xcv_padlist;
@@ -1648,7 +1671,7 @@
CV** Perl_macro_CvOUTSIDE (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_outside);
}
return &((XPVCV*)SvANY(sv))->xcv_outside;
@@ -1656,7 +1679,7 @@
cv_flags_t* Perl_macro_CvFLAGS (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_flags);
}
return &((XPVCV*)SvANY(sv))->xcv_flags;
@@ -1664,7 +1687,7 @@
U32* Perl_macro_CvOUTSIDE_SEQ (pTHX_ SV *sv) {
if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(sv)));
+ XPVCV* data = (XPVCV*) /**/ SvANY(sv);
return &(data->xcv_outside_seq);
}
return &((XPVCV*)SvANY(sv))->xcv_outside_seq;
@@ -1675,14 +1698,21 @@
S_zero_xpvfm(pTHX_ SV *fm)
{
assert(SvPMC(fm));
- Zero(Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(fm))), 1, XPVFM);
+ Zero(/**/ SvANY(fm), 1, XPVFM);
}
void
S_zero_xpvio(pTHX_ SV *io)
{
assert(SvPMC(io));
- Zero(Parrot_PMC_get_pointer(PL_Parrot, MUMBLE(SvANY(io))), 1, XPVIO);
+ Zero(/**/ SvANY(io), 1, XPVIO);
+}
+
+void
+S_zero_xpvcv(pTHX_ SV *fm)
+{
+ assert(SvPMC(fm));
+ Zero(/**/ SvANY(fm), 1, XPVCV);
}
1.5 +9 -7 ponie/perl/util.c
Index: util.c
===================================================================
RCS file: /cvs/public/ponie/perl/util.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -w -r1.4 -r1.5
--- util.c 13 Jun 2004 16:40:05 -0000 1.4
+++ util.c 16 Jun 2004 10:22:20 -0000 1.5
@@ -817,8 +817,9 @@
S_mess_alloc(pTHX)
{
SV *sv;
- Parrot_Int type;
- Parrot_PMC pvpvmg;
+ /*Parrot_Int type;
+ Parrot_PMC pvpvmg;*/
+ XPVMG *any;
if (!PL_dirty)
return sv_2mortal(newSVpvn("",0));
@@ -828,14 +829,15 @@
/* Create as PVMG now, to avoid any upgrading later */
- type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVMG");
- pvpvmg = Parrot_PMC_new(PL_Parrot, type);
- Parrot_register_pmc(PL_Parrot, pvpvmg);
- Zero(Parrot_PMC_get_pointer(PL_Parrot, pvpvmg), 1, XPVMG);
+ /*type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVMG");*/
+ /*pvpvmg = Parrot_PMC_new(PL_Parrot, type);*/
+ /*Parrot_register_pmc(PL_Parrot, pvpvmg);*/
+ /*Zero(Parrot_PMC_get_pointer(PL_Parrot, pvpvmg), 1, XPVMG);*/
New(905, sv, 1, SV);
+ Newz(905, any, 1, XPVMG);
SvFLAGS(sv) = SVt_PVMG;
- SvANY(sv) = (void*)MUMBLE(pvpvmg);
+ SvANY(sv) = /*(void*)MUMBLE(pvpvmg);*/ any;
SvREFCNT(sv) = 1 << 30; /* practically infinite */
SvPMC_on(sv);
PL_mess_sv = sv;