cvs commit: ponie/src/pmc perl5cargo_cult.pmc
[email protected] (Nicholas Clark) 3 Nov 2004 23:18:06 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/11/03 15:18:06
Modified: perl sv.c sv.h
src/pmc perl5cargo_cult.pmc
Log:
SvMAGIC and SvSTASH into the PMC code.
Revision Changes Path
1.51 +2 -10 ponie/perl/sv.c
Index: sv.c
===================================================================
RCS file: /cvs/public/ponie/perl/sv.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- sv.c 3 Nov 2004 22:29:19 -0000 1.50
+++ sv.c 3 Nov 2004 23:18:06 -0000 1.51
@@ -1076,19 +1076,11 @@
}
MAGIC** Perl_macro_SvMAGIC (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVMG* data = (XPVMG*) /**/ SvANY(sv);
- return &(data->xmg_magic);
- }
- return &((XPVMG*)SvANY(sv))->xmg_magic;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_MAGIC);
}
HV** Perl_macro_SvSTASH (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVMG* data = (XPVMG*) /**/ SvANY(sv);
- return &(data->xmg_stash);
- }
- return &((XPVMG*)SvANY(sv))->xmg_stash;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_STASH);
}
1.54 +3 -1 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- sv.h 3 Nov 2004 22:39:07 -0000 1.53
+++ sv.h 3 Nov 2004 23:18:06 -0000 1.54
@@ -191,7 +191,7 @@
typedef enum {
Ponie_P_ANY, /* SvANY pointer */
- Ponie_P_RV, /* &SvRV pointer */
+ Ponie_P_RV, /* &SvRV pointer */
Ponie_P_PVX, /* &SvPVX pointer */
Ponie_P_CUR, /* &SvCUR pointer */
Ponie_P_LEN, /* &SvLEN pointer */
@@ -201,6 +201,8 @@
Ponie_P_HVKEYS, /* &SvIVX pointer */
Ponie_P_NVX, /* &SvNVX pointer */
Ponie_P_HVPLACEHOLDERS, /* SvNVX pointer */
+ Ponie_P_MAGIC, /* &SvMAGIC pointer */
+ Ponie_P_STASH, /* &SvSTASH pointer */
Ponie_P_RVX_0, /* Clear SvRVX pointer */
Ponie_P_PVX_0, /* Clear SvPVX pointer */
Ponie_P_MAX
1.40 +21 -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.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- perl5cargo_cult.pmc 3 Nov 2004 20:46:11 -0000 1.39
+++ perl5cargo_cult.pmc 3 Nov 2004 23:18:06 -0000 1.40
@@ -1,7 +1,7 @@
/* Perl5QQQ.pmc -*- c -*-
* Copyright: 2001-2004 The Perl Foundation. All Rights Reserved.
* CVS Info
- * $Id: perl5cargo_cult.pmc,v 1.39 2004/11/03 20:46:11 nicholas Exp $
+ * $Id: perl5cargo_cult.pmc,v 1.40 2004/11/03 23:18:06 nicholas Exp $
* Overview:
* These are the vtable functions for the Perl5QQQ base class
* Data Structure and Algorithms:
@@ -94,6 +94,26 @@
assert (any);
return &(any->xpv_cur);
}
+ case Ponie_P_MAGIC:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVMG *any;
+
+ assert (sv);
+ any = (XPVMG *)sv->sv_any;
+ assert (any);
+ return &(any->xmg_magic);
+ }
+ case Ponie_P_STASH:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVMG *any;
+
+ assert (sv);
+ any = (XPVMG *)sv->sv_any;
+ assert (any);
+ return &(any->xmg_stash);
+ }
case Ponie_P_IVX:
case Ponie_P_UVX:
case Ponie_P_AVOFF: