cvs commit: ponie/src/pmc perl5cargo_cult.pmc perl5cargo_cult_statics.c perl5iv.pmc perl5nv.pmc perl5pv.pmc perl5pvav.pmc perl5pvbm.pmc perl5pvcv.pmc perl5pvfm.pmc perl5pvgv.pmc perl5pvhv.pmc perl5pvio.pmc perl5pviv.pmc perl5pvlv.pmc perl5pvmg.pmc perl5pvnv.pmc perl5rv.pmc
[email protected] (Nicholas Clark) 1 May 2005 21:00:49 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 05/05/01 14:00:49
Modified: perl sv.h
src/pmc perl5cargo_cult.pmc perl5cargo_cult_statics.c
perl5iv.pmc perl5nv.pmc perl5pv.pmc perl5pvav.pmc
perl5pvbm.pmc perl5pvcv.pmc perl5pvfm.pmc
perl5pvgv.pmc perl5pvhv.pmc perl5pvio.pmc
perl5pviv.pmc perl5pvlv.pmc perl5pvmg.pmc
perl5pvnv.pmc perl5rv.pmc
Log:
Replace pointer return for SvANY with get/set by value.
Add new enumerations for SvREFCNT manipulation, but don't use them yet.
Revision Changes Path
1.80 +6 -7 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -r1.79 -r1.80
--- sv.h 1 May 2005 17:35:10 -0000 1.79
+++ sv.h 1 May 2005 21:00:48 -0000 1.80
@@ -131,12 +131,8 @@
=cut
*/
-#ifdef PERL_CORE
-#define SvANY(sv) (*((void **)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv), Ponie_P_ANY)) + 0)
-#define SvANY_set(sv, p) (*((void **)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv), Ponie_P_ANY)) = p)
-#else
-#define SvANY(sv) (*((void **)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv), Ponie_P_ANY)))
-#endif
+#define SvANY(sv) Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv), Ponie_P_ANY)
+#define SvANY_set(sv, p) Parrot_PMC_set_pointer_intkey(PL_Parrot, MUMBLE(sv), Ponie_P_ANY, p)
#define SvREFCNT(sv) (*((U32 *)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv), Ponie_P_REFCNT)))
#if defined(PERL_CORE) && defined(PERL_IN_SV_C)
@@ -202,7 +198,8 @@
/* All the things get_pointer_keyed_int can return. */
typedef enum {
- Ponie_P_ANY, /* &SvANY pointer */
+ Ponie_P_ANY, /* SvANY (the value) */
+ Ponie_P_ANY_P, /* &SvANY pointer */
Ponie_P_FLAGS, /* &SvFLAGS pointer */
Ponie_P_REFCNT, /* &SvREFCNT pointer */
Ponie_P_RV, /* &SvRV pointer */
@@ -273,6 +270,8 @@
Ponie_I_SV_ZERO_FLAGS_SET_TYPE,
Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
Ponie_I_SV_FLAGS, /* Read only */
+ Ponie_I_SV_REFCNT, /* SvREFCNT value */
+ Ponie_I_SV_REFCNT_INC, /* SvREFCNT() += value */
Ponie_I_SVf_BREAK,
Ponie_I_SVp_OK,
Ponie_I_SVf_OK,
1.58 +8 -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.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- perl5cargo_cult.pmc 1 May 2005 16:25:32 -0000 1.57
+++ perl5cargo_cult.pmc 1 May 2005 21:00:49 -0000 1.58
@@ -15,6 +15,7 @@
#include "ponie.h"
#define PERL5_FLAGS(pmc) (((struct STRUCT_SV *)PMC_struct_val(pmc))->sv_flags)
+#define PERL5_REFCNT(pmc) (((struct STRUCT_SV *)PMC_struct_val(pmc))->sv_refcnt)
#include "perl5cargo_cult_statics.c"
@@ -70,6 +71,8 @@
void* get_pointer_keyed_int(INTVAL key) {
switch (key) {
case Ponie_P_ANY:
+ return *(void **)PMC_struct_val(SELF);
+ case Ponie_P_ANY_P:
return PMC_struct_val(SELF);
case Ponie_P_FLAGS:
return &(((struct STRUCT_SV*)PMC_struct_val(SELF))->sv_flags);
@@ -518,6 +521,10 @@
void set_pointer_keyed_int(INTVAL key, void *value) {
switch (key) {
+ case Ponie_P_ANY:
+ assert(PMC_struct_val(SELF));
+ *(void **)PMC_struct_val(SELF) = value;
+ break;
case Ponie_P_RVX_0:
assert (value == 0);
PMC_pmc_val(SELF) = NULL;
1.2 +10 -1 ponie/src/pmc/perl5cargo_cult_statics.c
Index: perl5cargo_cult_statics.c
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5cargo_cult_statics.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- perl5cargo_cult_statics.c 30 Apr 2005 21:59:21 -0000 1.1
+++ perl5cargo_cult_statics.c 1 May 2005 21:00:49 -0000 1.2
@@ -34,6 +34,8 @@
switch (key) {
case Ponie_I_SV_FLAGS:
return PERL5_FLAGS(pmc);
+ case Ponie_I_SV_REFCNT:
+ return PERL5_REFCNT(pmc);
case Ponie_I_SV_TYPE:
return PERL5_FLAGS(pmc) & SVTYPEMASK;
case Ponie_I_SVp_OK:
@@ -160,6 +162,13 @@
/*SvANY(sv) = (void *) 0xDEAD;*/
((struct STRUCT_SV *)PMC_struct_val(pmc))->sv_any = 0xDEAD;
return;
+ case Ponie_I_SV_REFCNT:
+ PERL5_REFCNT(pmc) = value;
+ return;
+ case Ponie_I_SV_REFCNT_INC:
+ PERL5_REFCNT(pmc) += value;
+ return;
+
case Ponie_I_SV_UPGRADE:
if ((PERL5_FLAGS(pmc) & SVTYPEMASK) >= value)
return;
1.4 +2 -2 ponie/src/pmc/perl5iv.pmc
Index: perl5iv.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5iv.pmc,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- perl5iv.pmc 30 Apr 2005 13:10:29 -0000 1.3
+++ perl5iv.pmc 1 May 2005 21:00:49 -0000 1.4
@@ -39,7 +39,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = 0;
+ SvANY_set(sv, 0);
SvIV_set(sv, val->iv);
break;
}
1.4 +2 -2 ponie/src/pmc/perl5nv.pmc
Index: perl5nv.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5nv.pmc,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- perl5nv.pmc 30 Apr 2005 13:10:29 -0000 1.3
+++ perl5nv.pmc 1 May 2005 21:00:49 -0000 1.4
@@ -37,7 +37,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = 0;
+ SvANY_set(sv, 0);
SvNV_set(sv, val->nv);
break;
}
1.6 +2 -2 ponie/src/pmc/perl5pv.pmc
Index: perl5pv.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pv.pmc,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- perl5pv.pmc 30 Apr 2005 22:00:13 -0000 1.5
+++ perl5pv.pmc 1 May 2005 21:00:49 -0000 1.6
@@ -98,7 +98,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPV();
+ SvANY_set(sv, new_XPV());
if (val->sv_is_rv) {
SvRV_set(sv, val->rv);
Parrot_PMC_set_pointer_intkey(PL_Parrot,MUMBLE(sv),
1.6 +2 -2 ponie/src/pmc/perl5pvav.pmc
Index: perl5pvav.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pvav.pmc,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- perl5pvav.pmc 30 Apr 2005 22:00:13 -0000 1.5
+++ perl5pvav.pmc 1 May 2005 21:00:49 -0000 1.6
@@ -69,7 +69,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPVAV();
+ SvANY_set(sv, new_XPVAV());
assert(!val->pv);
assert(!val->rv);
1.6 +2 -2 ponie/src/pmc/perl5pvbm.pmc
Index: perl5pvbm.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pvbm.pmc,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- perl5pvbm.pmc 30 Apr 2005 22:00:13 -0000 1.5
+++ perl5pvbm.pmc 1 May 2005 21:00:49 -0000 1.6
@@ -71,7 +71,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPVBM();
+ SvANY_set(sv, new_XPVBM());
if (val->sv_is_rv) {
SvRV_set(sv, val->rv);
Parrot_PMC_set_pointer_intkey(PL_Parrot,MUMBLE(sv),
1.7 +2 -2 ponie/src/pmc/perl5pvcv.pmc
Index: perl5pvcv.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pvcv.pmc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- perl5pvcv.pmc 30 Apr 2005 22:00:13 -0000 1.6
+++ perl5pvcv.pmc 1 May 2005 21:00:49 -0000 1.7
@@ -70,7 +70,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPVCV();
+ SvANY_set(sv, new_XPVCV());
Zero(SvANY(sv), 1, XPVCV);
assert (!val->sv_is_rv);
SvPV_set(sv, val->pv);
1.7 +2 -2 ponie/src/pmc/perl5pvfm.pmc
Index: perl5pvfm.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pvfm.pmc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- perl5pvfm.pmc 30 Apr 2005 22:00:13 -0000 1.6
+++ perl5pvfm.pmc 1 May 2005 21:00:49 -0000 1.7
@@ -36,7 +36,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPVFM();
+ SvANY_set(sv, new_XPVFM());
Zero(SvANY(sv), 1, XPVFM);
if (val->sv_is_rv) {
SvRV_set(sv, val->rv);
1.7 +2 -2 ponie/src/pmc/perl5pvgv.pmc
Index: perl5pvgv.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pvgv.pmc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- perl5pvgv.pmc 30 Apr 2005 22:00:13 -0000 1.6
+++ perl5pvgv.pmc 1 May 2005 21:00:49 -0000 1.7
@@ -37,7 +37,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPVGV();
+ SvANY_set(sv, new_XPVGV());
if (val->sv_is_rv) {
SvRV_set(sv, val->rv);
Parrot_PMC_set_pointer_intkey(PL_Parrot,MUMBLE(sv),
1.7 +2 -2 ponie/src/pmc/perl5pvhv.pmc
Index: perl5pvhv.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pvhv.pmc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- perl5pvhv.pmc 1 May 2005 17:35:10 -0000 1.6
+++ perl5pvhv.pmc 1 May 2005 21:00:49 -0000 1.7
@@ -70,7 +70,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPVHV();
+ SvANY_set(sv, new_XPVHV());
assert(!val->pv);
assert(!val->rv);
1.7 +2 -2 ponie/src/pmc/perl5pvio.pmc
Index: perl5pvio.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pvio.pmc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- perl5pvio.pmc 30 Apr 2005 22:00:13 -0000 1.6
+++ perl5pvio.pmc 1 May 2005 21:00:49 -0000 1.7
@@ -36,7 +36,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPVIO();
+ SvANY_set(sv, new_XPVIO());
Zero(SvANY(sv), 1, XPVIO);
if (val->sv_is_rv) {
SvRV_set(sv, val->rv);
1.7 +2 -2 ponie/src/pmc/perl5pviv.pmc
Index: perl5pviv.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pviv.pmc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- perl5pviv.pmc 30 Apr 2005 22:00:13 -0000 1.6
+++ perl5pviv.pmc 1 May 2005 21:00:49 -0000 1.7
@@ -92,7 +92,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPVIV();
+ SvANY_set(sv, new_XPVIV());
if (val->sv_is_rv) {
SvRV_set(sv, val->rv);
Parrot_PMC_set_pointer_intkey(PL_Parrot,MUMBLE(sv),
1.6 +2 -2 ponie/src/pmc/perl5pvlv.pmc
Index: perl5pvlv.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pvlv.pmc,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- perl5pvlv.pmc 30 Apr 2005 22:00:13 -0000 1.5
+++ perl5pvlv.pmc 1 May 2005 21:00:49 -0000 1.6
@@ -72,7 +72,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPVLV();
+ SvANY_set(sv, new_XPVLV());
if (val->sv_is_rv) {
SvRV_set(sv, val->rv);
Parrot_PMC_set_pointer_intkey(PL_Parrot,MUMBLE(sv),
1.7 +2 -2 ponie/src/pmc/perl5pvmg.pmc
Index: perl5pvmg.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pvmg.pmc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- perl5pvmg.pmc 30 Apr 2005 22:00:13 -0000 1.6
+++ perl5pvmg.pmc 1 May 2005 21:00:49 -0000 1.7
@@ -96,7 +96,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPVMG();
+ SvANY_set(sv, new_XPVMG());
if (val->sv_is_rv) {
SvRV_set(sv, val->rv);
Parrot_PMC_set_pointer_intkey(PL_Parrot,MUMBLE(sv),
1.7 +2 -2 ponie/src/pmc/perl5pvnv.pmc
Index: perl5pvnv.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5pvnv.pmc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- perl5pvnv.pmc 30 Apr 2005 22:00:13 -0000 1.6
+++ perl5pvnv.pmc 1 May 2005 21:00:49 -0000 1.7
@@ -93,7 +93,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = new_XPVNV();
+ SvANY_set(sv, new_XPVNV());
if (val->sv_is_rv) {
SvRV_set(sv, val->rv);
Parrot_PMC_set_pointer_intkey(PL_Parrot,MUMBLE(sv),
1.5 +2 -2 ponie/src/pmc/perl5rv.pmc
Index: perl5rv.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5rv.pmc,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- perl5rv.pmc 30 Apr 2005 17:35:36 -0000 1.4
+++ perl5rv.pmc 1 May 2005 21:00:49 -0000 1.5
@@ -34,7 +34,7 @@
= &((struct Ponie_upgrade_info *)value)->value;
SV *sv = MUMBLE(SELF);
- SvANY(sv) = 0;
+ SvANY_set(sv, 0);
SvRV_set(sv, val->rv);
break;
}