cvs commit: ponie/src/pmc perl5cargo_cult.pmc

[email protected] (Nicholas Clark) 13 Oct 2004 22:14:24 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     04/10/13 15:14:21

  Modified:    perl     sv.h
               src/pmc  perl5cargo_cult.pmc
  Log:
  Use PMC calls to set/get the IV flags, and SvINOK()
  
  Revision  Changes    Path
  1.26      +8 -9      ponie/perl/sv.h
  
  Index: sv.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.h,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -w -r1.25 -r1.26
  --- sv.h	13 Oct 2004 20:56:28 -0000	1.25
  +++ sv.h	13 Oct 2004 22:14:20 -0000	1.26
  @@ -570,10 +570,9 @@
   =cut
   */
   
  -#define SvNIOK(sv)		(SvFLAGS(sv) & (SVf_IOK|SVf_NOK))
  -#define SvNIOKp(sv)		(SvFLAGS(sv) & (SVp_IOK|SVp_NOK))
  -#define SvNIOK_off(sv)		(SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK| \
  -						  SVp_IOK|SVp_NOK|SVf_IVisUV))
  +#define SvNIOK(sv)		((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVf_NIOK))
  +#define SvNIOKp(sv)		((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVp_NIOK))
  +#define SvNIOK_off(sv)		Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVpf_NIOK, 0)
   
   #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
   #define assert_not_ROK(sv)	({assert(!SvROK(sv) || !SvRV(sv));}),
  @@ -592,19 +591,19 @@
   							SvOOK_off(sv))
   
   #define SvOKp(sv)		(SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK))
  -#define SvIOKp(sv)		(SvFLAGS(sv) & SVp_IOK)
  +#define SvIOKp(sv)		((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVp_IOK))
   #define SvIOKp_on(sv)		(SvRELEASE_IVX(sv), \
  -				    SvFLAGS(sv) |= SVp_IOK)
  +				 Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVp_IOK, 1))
   #define SvNOKp(sv)		((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVp_NOK))
   #define SvNOKp_on(sv)		Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVp_NOK, 1)
   #define SvPOKp(sv)		(SvFLAGS(sv) & SVp_POK)
   #define SvPOKp_on(sv)		(assert_not_ROK(sv)			\
   				 SvFLAGS(sv) |= SVp_POK)
   
  -#define SvIOK(sv)		(SvFLAGS(sv) & SVf_IOK)
  +#define SvIOK(sv)		((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVf_IOK))
   #define SvIOK_on(sv)		(SvRELEASE_IVX(sv), \
  -				    SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
  -#define SvIOK_off(sv)		(SvFLAGS(sv) &= ~(SVf_IOK|SVp_IOK|SVf_IVisUV))
  +				 Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVpf_IOK, 1))
  +#define SvIOK_off(sv)		Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVpf_IOK, 0)
   #define SvIOK_only(sv)		((void)SvOK_off(sv), \
   				    SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
   #define SvIOK_only_UV(sv)	((void)SvOK_off_exc_UV(sv), \
  
  
  
  1.15      +10 -4     ponie/src/pmc/perl5cargo_cult.pmc
  
  Index: perl5cargo_cult.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5cargo_cult.pmc,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -w -r1.14 -r1.15
  --- perl5cargo_cult.pmc	13 Oct 2004 20:56:29 -0000	1.14
  +++ perl5cargo_cult.pmc	13 Oct 2004 22:14:20 -0000	1.15
  @@ -1,7 +1,7 @@
   /* Perl5QQQ.pmc -*- c -*-
    *  Copyright: 2001-2004 The Perl Foundation.  All Rights Reserved.
    *  CVS Info
  - *     $Id: perl5cargo_cult.pmc,v 1.14 2004/10/13 20:56:29 nicholas Exp $
  + *     $Id: perl5cargo_cult.pmc,v 1.15 2004/10/13 22:14:20 nicholas Exp $
    *  Overview:
    *     These are the vtable functions for the Perl5QQQ base class
    *  Data Structure and Algorithms:
  @@ -100,22 +100,28 @@
   	switch (key) {
   	case Ponie_I_SVp_IOK:
   	    (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags) &= ~SVp_IOK;
  -	    if (value)
  +	    if (value) {
  +		/* FIXME SvRELEASE_IVX(sv); */
   		(((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
   		    |= SVp_IOK;
  +	    }
   	    return;
   	case Ponie_I_SVf_IOK:
   	    (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags) &= ~SVf_IOK;
  -	    if (value)
  +	    if (value) {
  +		/* FIXME SvRELEASE_IVX(sv); */
   		(((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
   		    |= SVf_IOK;
  +	    }
   	    return;
   	case Ponie_I_SVpf_IOK:
   	    (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
   		&= ~(SVp_IOK|SVf_IOK);
  -	    if (value)
  +	    if (value) {
  +		/* FIXME SvRELEASE_IVX(sv); */
   		(((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
   		    |= (SVp_IOK|SVf_IOK);
  +	    }
   	    return;
   
   	case Ponie_I_SVpf_NIOK: