cvs commit: ponie/src/pmc perl5cargo_cult.pmc
[email protected] (Nicholas Clark) 1 May 2005 08:27:08 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 05/05/01 01:27:08
Modified: perl sv.c sv.h
src/pmc perl5cargo_cult.pmc
Log:
Change macro_SvRECNT and SvFLAGS_RW to use get_pointer_intkey instead of
assuming that get_pointer returns a SV head structure and dereferencing that.
Convert assignements to SvANY to SvANY_set
Revision Changes Path
1.73 +6 -7 ponie/perl/sv.c
Index: sv.c
===================================================================
RCS file: /cvs/public/ponie/perl/sv.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -r1.72 -r1.73
--- sv.c 30 Apr 2005 22:03:14 -0000 1.72
+++ sv.c 1 May 2005 08:27:07 -0000 1.73
@@ -1070,21 +1070,20 @@
This won't be the case for SVt_NULL for very long.
return &(((struct STRUCT_SV*)Parrot_PMC_get_pointer(PL_Parrot,MUMBLE(sv)))->sv_any);
*/
- return (struct STRUCT_SV**)Parrot_PMC_get_pointer_intkey(PL_Parrot,
- MUMBLE(sv),
- Ponie_P_ANY);
+ return (void **)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv),
+ Ponie_P_ANY);
}
U32*
S_macro_SvFLAGS_RW (pTHX_ SV *sv) {
- return &(((struct STRUCT_SV*)Parrot_PMC_get_pointer(PL_Parrot,MUMBLE(sv)))
- ->sv_flags);
+ return (U32 *)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv),
+ Ponie_P_FLAGS);
}
U32*
Perl_macro_SvREFCNT (pTHX_ SV *sv) {
- return &(((struct STRUCT_SV*)Parrot_PMC_get_pointer(PL_Parrot,MUMBLE(sv)))
- ->sv_refcnt);
+ return (U32 *)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv),
+ Ponie_P_REFCNT);
}
MAGIC** Perl_macro_SvMAGIC (pTHX_ SV *sv) {
1.74 +3 -1 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -r1.73 -r1.74
--- sv.h 30 Apr 2005 17:35:36 -0000 1.73
+++ sv.h 1 May 2005 08:27:07 -0000 1.74
@@ -196,7 +196,9 @@
/* All the things get_pointer_keyed_int can return. */
typedef enum {
- Ponie_P_ANY, /* SvANY pointer */
+ Ponie_P_ANY, /* &SvANY pointer */
+ Ponie_P_FLAGS, /* &SvFLAGS pointer */
+ Ponie_P_REFCNT, /* &SvREFCNT pointer */
Ponie_P_RV, /* &SvRV pointer */
Ponie_P_PVX, /* &SvPVX pointer */
Ponie_P_CUR, /* &SvCUR pointer */
1.56 +6 -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.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- perl5cargo_cult.pmc 30 Apr 2005 21:59:21 -0000 1.55
+++ perl5cargo_cult.pmc 1 May 2005 08:27:08 -0000 1.56
@@ -71,6 +71,11 @@
switch (key) {
case Ponie_P_ANY:
return PMC_struct_val(SELF);
+ case Ponie_P_FLAGS:
+ return &(((struct STRUCT_SV*)PMC_struct_val(SELF))->sv_flags);
+ case Ponie_P_REFCNT:
+ return &(((struct STRUCT_SV*)PMC_struct_val(SELF))->sv_refcnt);
+
case Ponie_P_RV:
assert (!(PERL5_FLAGS(SELF) & SVp_POK));
return &(PMC_pmc_val(SELF));