cvs commit: ponie/src/pmc perl5cargo_cult.pmc
[email protected] (Nicholas Clark) 4 Nov 2004 07:40:09 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/11/03 23:40:09
Modified: perl sv.c sv.h
src/pmc perl5cargo_cult.pmc
Log:
Move PVFM and PVLV macros into the PMC code
Revision Changes Path
1.53 +5 -25 ponie/perl/sv.c
Index: sv.c
===================================================================
RCS file: /cvs/public/ponie/perl/sv.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- sv.c 4 Nov 2004 06:42:12 -0000 1.52
+++ sv.c 4 Nov 2004 07:40:08 -0000 1.53
@@ -1130,43 +1130,23 @@
}
IV* Perl_macro_FmLINES (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVFM* data = (XPVFM*) /**/ SvANY(sv);
- return &(data->xfm_lines);
- }
- return &((XPVFM*)SvANY(sv))->xfm_lines;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_LINES);
}
char* Perl_macro_LvTYPE (pTHX_ SV* sv) {
- XPVLV* data;
- if(!SvPMC(sv))
- abort();
- data = (XPVLV*) /**/ SvANY(sv);
- return &(data->xlv_type);
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_TYPE);
}
SV** Perl_macro_LvTARG (pTHX_ SV* sv) {
- XPVLV* data;
- if(!SvPMC(sv))
- abort();
- data = (XPVLV*) /**/ SvANY(sv);
- return &(data->xlv_targ);
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_TARG);
}
STRLEN* Perl_macro_LvTARGOFF (pTHX_ SV* sv) {
- XPVLV* data;
- if(!SvPMC(sv))
- abort();
- data = (XPVLV*) /**/ SvANY(sv);
- return &(data->xlv_targoff);
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_TARGOFF);
}
STRLEN* Perl_macro_LvTARGLEN (pTHX_ SV* sv) {
- XPVLV* data;
- if(!SvPMC(sv))
- abort();
- data = (XPVLV*) /**/ SvANY(sv);
- return &(data->xlv_targlen);
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_TARGLEN);
}
PerlIO** Perl_macro_IoIFP (pTHX_ SV *sv) {
1.56 +5 -0 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- sv.h 4 Nov 2004 06:42:12 -0000 1.55
+++ sv.h 4 Nov 2004 07:40:08 -0000 1.56
@@ -206,6 +206,11 @@
Ponie_P_RARE, /* &BmRARE pointer */
Ponie_P_USEFUL, /* &BmUSEFUL pointer */
Ponie_P_PREVIOUS, /* &BmPREVIOUS pointer */
+ Ponie_P_LINES, /* &FmLINES pointer */
+ Ponie_P_TYPE, /* &LvTYPE pointer */
+ Ponie_P_TARG, /* &LvTARG pointer */
+ Ponie_P_TARGOFF, /* &LvTARGOFF pointer */
+ Ponie_P_TARGLEN, /* &LvTARGLEN pointer */
Ponie_P_RVX_0, /* Clear SvRVX pointer */
Ponie_P_PVX_0, /* Clear SvPVX pointer */
Ponie_P_MAX
1.42 +51 -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.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- perl5cargo_cult.pmc 4 Nov 2004 06:42:12 -0000 1.41
+++ perl5cargo_cult.pmc 4 Nov 2004 07:40:09 -0000 1.42
@@ -1,7 +1,7 @@
/* Perl5QQQ.pmc -*- c -*-
* Copyright: 2001-2004 The Perl Foundation. All Rights Reserved.
* CVS Info
- * $Id: perl5cargo_cult.pmc,v 1.41 2004/11/04 06:42:12 nicholas Exp $
+ * $Id: perl5cargo_cult.pmc,v 1.42 2004/11/04 07:40:09 nicholas Exp $
* Overview:
* These are the vtable functions for the Perl5QQQ base class
* Data Structure and Algorithms:
@@ -144,6 +144,56 @@
assert (any);
return &(any->xbm_previous);
}
+ case Ponie_P_LINES:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVFM *any;
+
+ assert (sv);
+ any = (XPVFM *)sv->sv_any;
+ assert (any);
+ return &(any->xfm_lines);
+ }
+ case Ponie_P_TYPE:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVLV *any;
+
+ assert (sv);
+ any = (XPVLV *)sv->sv_any;
+ assert (any);
+ return &(any->xlv_type);
+ }
+ case Ponie_P_TARG:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVLV *any;
+
+ assert (sv);
+ any = (XPVLV *)sv->sv_any;
+ assert (any);
+ return &(any->xlv_targ);
+ }
+ case Ponie_P_TARGOFF:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVLV *any;
+
+ assert (sv);
+ any = (XPVLV *)sv->sv_any;
+ assert (any);
+ return &(any->xlv_targoff);
+ }
+ case Ponie_P_TARGLEN:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVLV *any;
+
+ assert (sv);
+ any = (XPVLV *)sv->sv_any;
+ assert (any);
+ return &(any->xlv_targlen);
+ }
case Ponie_P_IVX:
case Ponie_P_UVX:
case Ponie_P_AVOFF: