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));