cvs commit: ponie/src/pmc perl5cargo_cult.pmc
[email protected] (Nicholas Clark) 4 Nov 2004 10:26:27 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/11/04 02:26:27
Modified: perl sv.c sv.h
src/pmc perl5cargo_cult.pmc
Log:
CV macros into the PMC
Revision Changes Path
1.55 +15 -60 ponie/perl/sv.c
Index: sv.c
===================================================================
RCS file: /cvs/public/ponie/perl/sv.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- sv.c 4 Nov 2004 08:38:41 -0000 1.54
+++ sv.c 4 Nov 2004 10:26:27 -0000 1.55
@@ -1218,99 +1218,54 @@
}
HV** Perl_macro_CvSTASH (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_stash);
- }
- return &((XPVCV*)SvANY(sv))->xcv_stash;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVSTASH);
}
OP** Perl_macro_CvSTART (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_start);
- }
- return &((XPVCV*)SvANY(sv))->xcv_start;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVSTART);
+
}
OP** Perl_macro_CvROOT (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_root);
- }
- return &((XPVCV*)SvANY(sv))->xcv_root;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVROOT);
+
}
xpvcv_xcv_xsub_t * Perl_macro_CvXSUB (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_xsub);
- }
- return &((XPVCV*)SvANY(sv))->xcv_xsub;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVXSUB);
+
}
ANY* Perl_macro_CvXSUBANY (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_xsubany);
- }
- return &((XPVCV*)SvANY(sv))->xcv_xsubany;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVXSUBANY);
}
GV** Perl_macro_CvGV (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_gv);
- }
- return &((XPVCV*)SvANY(sv))->xcv_gv;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVGV);
}
char** Perl_macro_CvFILE (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_file);
- }
- return &((XPVCV*)SvANY(sv))->xcv_file;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVFILE);
}
long* Perl_macro_CvDEPTH (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_depth);
- }
- return &((XPVCV*)SvANY(sv))->xcv_depth;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVDEPTH);
}
PADLIST** Perl_macro_CvPADLIST (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_padlist);
- }
- return &((XPVCV*)SvANY(sv))->xcv_padlist;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVPADLIST);
}
CV** Perl_macro_CvOUTSIDE (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_outside);
- }
- return &((XPVCV*)SvANY(sv))->xcv_outside;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVOUTSIDE);
}
cv_flags_t* Perl_macro_CvFLAGS (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_flags);
- }
- return &((XPVCV*)SvANY(sv))->xcv_flags;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVFLAGS);
}
U32* Perl_macro_CvOUTSIDE_SEQ (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVCV* data = (XPVCV*) /**/ SvANY(sv);
- return &(data->xcv_outside_seq);
- }
- return &((XPVCV*)SvANY(sv))->xcv_outside_seq;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVOUTSIDE_SEQ);
}
1.58 +12 -0 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- sv.h 4 Nov 2004 08:38:41 -0000 1.57
+++ sv.h 4 Nov 2004 10:26:27 -0000 1.58
@@ -228,6 +228,18 @@
Ponie_P_IOSUBPROCESS, /* &IoSUBPROCESS pointer */
Ponie_P_IOTYPE, /* &IoTYPE pointer */
Ponie_P_IOFLAGS, /* &IoFLAGS pointer */
+ Ponie_P_CVSTASH, /* &CvSTASH pointer */
+ Ponie_P_CVSTART, /* &CvSTART pointer */
+ Ponie_P_CVROOT, /* &CvROOT pointer */
+ Ponie_P_CVXSUB, /* &CvXSUB pointer */
+ Ponie_P_CVXSUBANY, /* &CvXSUBANY pointer */
+ Ponie_P_CVGV, /* &CvGV pointer */
+ Ponie_P_CVFILE, /* &CvFILE pointer */
+ Ponie_P_CVDEPTH, /* &CvDEPTH pointer */
+ Ponie_P_CVPADLIST, /* &CvPADLIST pointer */
+ Ponie_P_CVOUTSIDE, /* &CvOUTSIDE pointer */
+ Ponie_P_CVFLAGS, /* &CvFLAGS pointer */
+ Ponie_P_CVOUTSIDE_SEQ, /* &CvOUTSIDE_SEQ pointer */
Ponie_P_RVX_0, /* Clear SvRVX pointer */
Ponie_P_PVX_0, /* Clear SvPVX pointer */
Ponie_P_MAX
1.44 +121 -1 ponie/src/pmc/perl5cargo_cult.pmc
Index: perl5cargo_cult.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5cargo_cult.pmc,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- perl5cargo_cult.pmc 4 Nov 2004 08:38:41 -0000 1.43
+++ perl5cargo_cult.pmc 4 Nov 2004 10:26:27 -0000 1.44
@@ -1,7 +1,7 @@
/* Perl5QQQ.pmc -*- c -*-
* Copyright: 2001-2004 The Perl Foundation. All Rights Reserved.
* CVS Info
- * $Id: perl5cargo_cult.pmc,v 1.43 2004/11/04 08:38:41 nicholas Exp $
+ * $Id: perl5cargo_cult.pmc,v 1.44 2004/11/04 10:26:27 nicholas Exp $
* Overview:
* These are the vtable functions for the Perl5QQQ base class
* Data Structure and Algorithms:
@@ -364,6 +364,126 @@
assert (any);
return &(any->xio_flags);
}
+ case Ponie_P_CVSTASH:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_stash);
+ }
+ case Ponie_P_CVSTART:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_start);
+ }
+ case Ponie_P_CVROOT:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_root);
+ }
+ case Ponie_P_CVXSUB:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_xsub);
+ }
+ case Ponie_P_CVXSUBANY:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_xsubany);
+ }
+ case Ponie_P_CVGV:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_gv);
+ }
+ case Ponie_P_CVFILE:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_file);
+ }
+ case Ponie_P_CVDEPTH:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_depth);
+ }
+ case Ponie_P_CVPADLIST:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_padlist);
+ }
+ case Ponie_P_CVOUTSIDE:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_outside);
+ }
+ case Ponie_P_CVFLAGS:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_flags);
+ }
+ case Ponie_P_CVOUTSIDE_SEQ:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVCV *any;
+
+ assert (sv);
+ any = (XPVCV *)sv->sv_any;
+ assert (any);
+ return &(any->xcv_outside_seq);
+ }
case Ponie_P_IVX:
case Ponie_P_UVX:
case Ponie_P_AVOFF: