cvs commit: ponie/perl embed.fnc embed.h global.sym proto.h sv.c sv.h
[email protected] (Arthur Bergman) 26 Feb 2004 11:42:49 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/02/26 03:42:49
Modified: perl embed.fnc embed.h global.sym proto.h sv.c sv.h
Log:
Add SvMAGIC and SvSTASH wrappers
Revision Changes Path
1.7 +2 -0 ponie/perl/embed.fnc
Index: embed.fnc
===================================================================
RCS file: /cvs/public/ponie/perl/embed.fnc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -w -r1.6 -r1.7
--- embed.fnc 25 Feb 2004 16:08:15 -0000 1.6
+++ embed.fnc 26 Feb 2004 11:42:49 -0000 1.7
@@ -978,6 +978,8 @@
Ap |IV* |macro_SvIVX |SV *
Ap |NV* |macro_SvNVX |SV *
Ap |UV* |macro_SvUVX |SV *
+Ap |MAGIC** |macro_SvMAGIC |SV *
+Ap |HV** |macro_SvSTASH |SV *
Ap |char** |macro_LvTYPE |SV *
Ap |SV** |macro_LvTARG |SV *
1.7 +4 -0 ponie/perl/embed.h
Index: embed.h
===================================================================
RCS file: /cvs/public/ponie/perl/embed.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -w -r1.6 -r1.7
--- embed.h 25 Feb 2004 16:08:15 -0000 1.6
+++ embed.h 26 Feb 2004 11:42:49 -0000 1.7
@@ -1265,6 +1265,8 @@
#define macro_SvIVX Perl_macro_SvIVX
#define macro_SvNVX Perl_macro_SvNVX
#define macro_SvUVX Perl_macro_SvUVX
+#define macro_SvMAGIC Perl_macro_SvMAGIC
+#define macro_SvSTASH Perl_macro_SvSTASH
#define macro_LvTYPE Perl_macro_LvTYPE
#define macro_LvTARG Perl_macro_LvTARG
#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
@@ -3759,6 +3761,8 @@
#define macro_SvIVX(a) Perl_macro_SvIVX(aTHX_ a)
#define macro_SvNVX(a) Perl_macro_SvNVX(aTHX_ a)
#define macro_SvUVX(a) Perl_macro_SvUVX(aTHX_ a)
+#define macro_SvMAGIC(a) Perl_macro_SvMAGIC(aTHX_ a)
+#define macro_SvSTASH(a) Perl_macro_SvSTASH(aTHX_ a)
#define macro_LvTYPE(a) Perl_macro_LvTYPE(aTHX_ a)
#define macro_LvTARG(a) Perl_macro_LvTARG(aTHX_ a)
#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
1.7 +2 -0 ponie/perl/global.sym
Index: global.sym
===================================================================
RCS file: /cvs/public/ponie/perl/global.sym,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -w -r1.6 -r1.7
--- global.sym 25 Feb 2004 16:08:15 -0000 1.6
+++ global.sym 26 Feb 2004 11:42:49 -0000 1.7
@@ -638,6 +638,8 @@
Perl_macro_SvIVX
Perl_macro_SvNVX
Perl_macro_SvUVX
+Perl_macro_SvMAGIC
+Perl_macro_SvSTASH
Perl_macro_LvTYPE
Perl_macro_LvTARG
Perl_Slab_Alloc
1.7 +2 -0 ponie/perl/proto.h
Index: proto.h
===================================================================
RCS file: /cvs/public/ponie/perl/proto.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -w -r1.6 -r1.7
--- proto.h 25 Feb 2004 16:08:15 -0000 1.6
+++ proto.h 26 Feb 2004 11:42:49 -0000 1.7
@@ -936,6 +936,8 @@
PERL_CALLCONV IV* Perl_macro_SvIVX(pTHX_ SV *);
PERL_CALLCONV NV* Perl_macro_SvNVX(pTHX_ SV *);
PERL_CALLCONV UV* Perl_macro_SvUVX(pTHX_ SV *);
+PERL_CALLCONV MAGIC** Perl_macro_SvMAGIC(pTHX_ SV *);
+PERL_CALLCONV HV** Perl_macro_SvSTASH(pTHX_ SV *);
PERL_CALLCONV char** Perl_macro_LvTYPE(pTHX_ SV *);
PERL_CALLCONV SV** Perl_macro_LvTARG(pTHX_ SV *);
1.8 +18 -2 ponie/perl/sv.c
Index: sv.c
===================================================================
RCS file: /cvs/public/ponie/perl/sv.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -w -r1.7 -r1.8
--- sv.c 25 Feb 2004 16:08:15 -0000 1.7
+++ sv.c 26 Feb 2004 11:42:49 -0000 1.8
@@ -1265,6 +1265,22 @@
#define new_XPVIO() my_safemalloc(sizeof(XPVIO))
#define del_XPVIO(p) my_safefree(p)
+MAGIC** Perl_macro_SvMAGIC (pTHX_ SV *sv) {
+ if(SvPMC(sv)) {
+ XPVMG* data = (XPVMG*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
+ return &(data->xmg_magic);
+ }
+ return &((XPVMG*)SvANY(sv))->xmg_magic;
+}
+
+HV** Perl_macro_SvSTASH (pTHX_ SV *sv) {
+ if(SvPMC(sv)) {
+ XPVMG* data = (XPVMG*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
+ return &(data->xmg_stash);
+ }
+ return &((XPVMG*)SvANY(sv))->xmg_stash;
+}
+
UV* Perl_macro_SvUVX (pTHX_ SV *sv) {
if(SvPMC(sv)) {
XPVUV* data = (XPVUV*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
@@ -1520,8 +1536,8 @@
AvFILLp(sv) = -1;
SvIVX(sv) = 0;
SvNVX(sv) = 0.0;
- //SvMAGIC(sv) = magic;
- //SvSTASH(sv) = stash;
+ SvMAGIC(sv) = magic;
+ SvSTASH(sv) = stash;
AvALLOC(sv) = 0;
AvARYLEN(sv) = 0;
AvFLAGS(sv) = 0;
1.7 +2 -2 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -w -r1.6 -r1.7
--- sv.h 25 Feb 2004 16:08:15 -0000 1.6
+++ sv.h 26 Feb 2004 11:42:49 -0000 1.7
@@ -756,8 +756,8 @@
#define SvLENx(sv) SvLEN(sv)
#define SvEND(sv)(((XPV*) SvANY(sv))->xpv_pv + ((XPV*)SvANY(sv))->xpv_cur)
#define SvENDx(sv) ((PL_Sv = (sv)), SvEND(PL_Sv))
-#define SvMAGIC(sv) ((XPVMG*) SvANY(sv))->xmg_magic
-#define SvSTASH(sv) ((XPVMG*) SvANY(sv))->xmg_stash
+#define SvMAGIC(sv) (* Perl_macro_SvMAGIC(aTHX_ (SV*) sv))
+#define SvSTASH(sv) (* Perl_macro_SvSTASH(aTHX_ (SV*) sv))
/* Ask a scalar nicely to try to become an IV, if possible.
Not guaranteed to stay returning void */