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