cvs commit: ponie/perl embed.fnc embed.h global.sym proto.h sv.c sv.h
[email protected] (Nicholas Clark) 1 May 2005 15:12:21 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 05/05/01 08:12:21
Modified: perl embed.fnc embed.h global.sym proto.h sv.c sv.h
Log:
Remove the macro functions for SvANY SvREFCNT SvFLAGS SvSTASH and SvMAGIC, and
inline the PMC call in the macro in the header file.
Revision Changes Path
1.39 +0 -4 ponie/perl/embed.fnc
Index: embed.fnc
===================================================================
RCS file: /cvs/public/ponie/perl/embed.fnc,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- embed.fnc 30 Apr 2005 19:28:02 -0000 1.38
+++ embed.fnc 1 May 2005 15:12:20 -0000 1.39
@@ -984,16 +984,12 @@
Ap |SSize_t*|macro_AvMAX |AV *
Ap |IV*|macro_AvOFF |AV *
-Ap |void** |macro_SvANY |SV *
-Ap |U32* |macro_SvREFCNT |SV *
Ap |char** |macro_SvPVX |SV *
Ap |STRLEN* |macro_SvCUR |SV *
Ap |STRLEN* |macro_SvLEN |SV *
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 *
Ap |STRLEN* |macro_LvTARGLEN |SV *
1.29 +0 -8 ponie/perl/embed.h
Index: embed.h
===================================================================
RCS file: /cvs/public/ponie/perl/embed.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- embed.h 30 Apr 2005 19:28:02 -0000 1.28
+++ embed.h 1 May 2005 15:12:20 -0000 1.29
@@ -1261,16 +1261,12 @@
#define macro_AvFILLp Perl_macro_AvFILLp
#define macro_AvMAX Perl_macro_AvMAX
#define macro_AvOFF Perl_macro_AvOFF
-#define macro_SvANY Perl_macro_SvANY
-#define macro_SvREFCNT Perl_macro_SvREFCNT
#define macro_SvPVX Perl_macro_SvPVX
#define macro_SvCUR Perl_macro_SvCUR
#define macro_SvLEN Perl_macro_SvLEN
#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
#define macro_LvTARGLEN Perl_macro_LvTARGLEN
@@ -3817,16 +3813,12 @@
#define macro_AvFILLp(a) Perl_macro_AvFILLp(aTHX_ a)
#define macro_AvMAX(a) Perl_macro_AvMAX(aTHX_ a)
#define macro_AvOFF(a) Perl_macro_AvOFF(aTHX_ a)
-#define macro_SvANY(a) Perl_macro_SvANY(aTHX_ a)
-#define macro_SvREFCNT(a) Perl_macro_SvREFCNT(aTHX_ a)
#define macro_SvPVX(a) Perl_macro_SvPVX(aTHX_ a)
#define macro_SvCUR(a) Perl_macro_SvCUR(aTHX_ a)
#define macro_SvLEN(a) Perl_macro_SvLEN(aTHX_ a)
#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)
#define macro_LvTARGLEN(a) Perl_macro_LvTARGLEN(aTHX_ a)
1.22 +0 -4 ponie/perl/global.sym
Index: global.sym
===================================================================
RCS file: /cvs/public/ponie/perl/global.sym,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- global.sym 30 Apr 2005 19:28:02 -0000 1.21
+++ global.sym 1 May 2005 15:12:20 -0000 1.22
@@ -651,16 +651,12 @@
Perl_macro_AvFILLp
Perl_macro_AvMAX
Perl_macro_AvOFF
-Perl_macro_SvANY
-Perl_macro_SvREFCNT
Perl_macro_SvPVX
Perl_macro_SvCUR
Perl_macro_SvLEN
Perl_macro_SvIVX
Perl_macro_SvNVX
Perl_macro_SvUVX
-Perl_macro_SvMAGIC
-Perl_macro_SvSTASH
Perl_macro_LvTYPE
Perl_macro_LvTARG
Perl_macro_LvTARGLEN
1.39 +0 -4 ponie/perl/proto.h
Index: proto.h
===================================================================
RCS file: /cvs/public/ponie/perl/proto.h,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- proto.h 30 Apr 2005 19:28:02 -0000 1.38
+++ proto.h 1 May 2005 15:12:20 -0000 1.39
@@ -944,16 +944,12 @@
PERL_CALLCONV SSize_t* Perl_macro_AvMAX(pTHX_ AV *);
PERL_CALLCONV IV* Perl_macro_AvOFF(pTHX_ AV *);
-PERL_CALLCONV void** Perl_macro_SvANY(pTHX_ SV *);
-PERL_CALLCONV U32* Perl_macro_SvREFCNT(pTHX_ SV *);
PERL_CALLCONV char** Perl_macro_SvPVX(pTHX_ SV *);
PERL_CALLCONV STRLEN* Perl_macro_SvCUR(pTHX_ SV *);
PERL_CALLCONV STRLEN* Perl_macro_SvLEN(pTHX_ SV *);
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 *);
PERL_CALLCONV STRLEN* Perl_macro_LvTARGLEN(pTHX_ SV *);
1.75 +0 -33 ponie/perl/sv.c
Index: sv.c
===================================================================
RCS file: /cvs/public/ponie/perl/sv.c,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -r1.74 -r1.75
--- sv.c 1 May 2005 08:36:41 -0000 1.74
+++ sv.c 1 May 2005 15:12:20 -0000 1.75
@@ -1062,39 +1062,6 @@
"", "", "");
}
-void**
-Perl_macro_SvANY (pTHX_ SV *sv) {
- /*
- This is likely to be faster, but it assumes that the PMC pointer is
- valid.
- 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 (void **)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv),
- Ponie_P_ANY);
-}
-
-U32*
-S_macro_SvFLAGS_RW (pTHX_ SV *sv) {
- return (U32 *)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv),
- Ponie_P_FLAGS);
-}
-
-U32*
-Perl_macro_SvREFCNT (pTHX_ SV *sv) {
- return (U32 *)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv),
- Ponie_P_REFCNT);
-}
-
-MAGIC** Perl_macro_SvMAGIC (pTHX_ SV *sv) {
- return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_MAGIC);
-}
-
-HV** Perl_macro_SvSTASH (pTHX_ SV *sv) {
- return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_STASH);
-}
-
-
SV** Perl_macro_SvRV (pTHX_ SV *sv) {
return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_RV);
}
1.76 +19 -14 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -r1.75 -r1.76
--- sv.h 1 May 2005 08:36:41 -0000 1.75
+++ sv.h 1 May 2005 15:12:20 -0000 1.76
@@ -132,17 +132,17 @@
*/
#ifdef PERL_CORE
-#define SvANY(sv) (*Perl_macro_SvANY(aTHX_ (SV *) (sv)) + 0)
-#define SvANY_set(sv, p) (*Perl_macro_SvANY(aTHX_ (SV *) (sv)) = p)
+#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) (*Perl_macro_SvANY(aTHX_ (SV *) (sv)))
+#define SvANY(sv) (*((void **)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv), Ponie_P_ANY)))
#endif
-#define SvREFCNT(sv) (*Perl_macro_SvREFCNT(aTHX_ (SV *) (sv)))
+#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)
/* sv.c will be replaced with PMC code to clone things etc, so little point
in re-working it to avoid all LVALUE accesses at this point. */
-# define SvFLAGS(sv) (*S_macro_SvFLAGS_RW(aTHX_ (SV *) (sv)))
+# define SvFLAGS(sv) (*(U32 *)Parrot_PMC_get_pointer_intkey(PL_Parrot, MUMBLE(sv), Ponie_P_FLAGS))
#else
/* No longer an LVALUE */
# define SvFLAGS(sv) ((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_FLAGS))
@@ -904,11 +904,11 @@
#define SvLEN(sv) (0 + * Perl_macro_SvLEN(aTHX_ (SV*) (sv)))
#ifdef PERL_IN_SV_C
/* Until Perl_sv_unmagic is migrated inside the PMC. */
-#define SvMAGIC(sv) (* Perl_macro_SvMAGIC(aTHX_ (SV*) (sv)))
+#define SvMAGIC(sv) (*(MAGIC**)Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_MAGIC))
#else
-#define SvMAGIC(sv) (0 + * Perl_macro_SvMAGIC(aTHX_ (SV*) (sv)))
+#define SvMAGIC(sv) (0 + *(MAGIC**)Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_MAGIC))
#endif
-#define SvSTASH(sv) (0 + * Perl_macro_SvSTASH(aTHX_ (SV*) (sv)))
+#define SvSTASH(sv) (0 + *(HV **)Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_STASH))
#else
#define SvRV(sv) (* Perl_macro_SvRV(aTHX_ (SV*) (sv)))
#define SvIVX(sv) (* Perl_macro_SvIVX(aTHX_ (SV*) (sv)))
@@ -917,8 +917,8 @@
#define SvPVX(sv) (* Perl_macro_SvPVX(aTHX_ (SV*) (sv)))
#define SvCUR(sv) (* Perl_macro_SvCUR(aTHX_ (SV*) (sv)))
#define SvLEN(sv) (* Perl_macro_SvLEN(aTHX_ (SV*) (sv)))
-#define SvMAGIC(sv) (* Perl_macro_SvMAGIC(aTHX_ (SV*) (sv)))
-#define SvSTASH(sv) (* Perl_macro_SvSTASH(aTHX_ (SV*) (sv)))
+#define SvMAGIC(sv) (*(MAGIC**)Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_MAGIC))
+#define SvSTASH(sv) (*(HV **)Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_STASH))
#endif
#define SvRVx(sv) SvRV(sv)
@@ -953,10 +953,10 @@
(* Perl_macro_SvRV(aTHX_ (SV*) (sv)) = (val)); } STMT_END
#define SvMAGIC_set(sv, val) \
STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
- (* Perl_macro_SvMAGIC(aTHX_ (SV*) (sv)) = (val)); } STMT_END
+ (*(MAGIC**)Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_MAGIC) = (val)); } STMT_END
#define SvSTASH_set(sv, val) \
STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
- (* Perl_macro_SvSTASH(aTHX_ (SV*) (sv)) = (val)); } STMT_END
+ (*(HV **)Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_STASH) = (val)); } STMT_END
#define SvCUR_set(sv, val) \
STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
(* Perl_macro_SvCUR(aTHX_ (SV*) (sv)) = (val)); } STMT_END
@@ -1497,7 +1497,12 @@
points straight to a perl struct, and accidentally tries to access it.
Catches writes that would corrupt parrot's state before the corruption.
*/
-#define MUMBLE(p) ((void *)((p)?~(UV)(p):0))
-#else
+#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
+/* Some things are passing *sp++ to SvANY, often indirectly. */
+#define MUMBLE(p) ({void *_p = (void *)p; (void *)((_p)?~(UV)(_p):0);})
+#endif
+#endif
+
+#ifndef MUMBLE
#define MUMBLE(p) p
#endif