cvs commit: ponie/src/pmc perl5cargo_cult.pmc perl5iv.pmc perl5null.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) 30 Apr 2005 13:10:29 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     05/04/30 06:10:29

  Modified:    perl     sv.c sv.h
               src/pmc  perl5cargo_cult.pmc perl5iv.pmc perl5null.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:
  Phase 1 of migrating all the sv_clear functionality into the PMCs
  
  Revision  Changes    Path
  1.69      +2 -64     ponie/perl/sv.c
  
  Index: sv.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.c,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- sv.c	30 Apr 2005 09:12:44 -0000	1.68
  +++ sv.c	30 Apr 2005 13:10:28 -0000	1.69
  @@ -5664,7 +5664,6 @@
   void
   Perl_sv_clear(pTHX_ register SV *sv)
   {
  -    HV* stash;
       assert(sv);
       assert(SvREFCNT(sv) == 0);
   
  @@ -5672,8 +5671,7 @@
   	if (PL_defstash) {		/* Still have a symbol table? */
   	    dSP;
   	    CV* destructor;
  -
  -
  +	    HV* stash;
   
   	    do {	
   		stash = SvSTASH(sv);
  @@ -5726,7 +5724,6 @@
   	if (SvFLAGS(sv) & SVpad_TYPED)
   	    SvREFCNT_dec(SvSTASH(sv));
       }
  -    stash = NULL;
       switch (SvTYPE(sv)) {
       case SVt_PVIO:
   	if (IoIFP(sv) &&
  @@ -5771,7 +5768,6 @@
   	   ourselves when the refcnt drops to zero. Delay SvREFCNT_dec
   	   of stash until current sv is completely gone.
   	   -- JohnPC, 27 Mar 1998 */
  -	stash = GvSTASH(sv);
   	/* FALL THROUGH */
       case SVt_PVMG:
       case SVt_PVNV:
  @@ -5824,65 +5820,7 @@
   	break;
   */
       }
  -
  -    switch (SvTYPE(sv)) {
  -    case SVt_NULL:
  -	break;
  -    case SVt_IV:
  -    case SVt_NV:
  -    case SVt_RV:
  -	assert(SvANY(sv) == 0);
  -	break;
  -    case SVt_PV:
  -	del_XPV(SvANY(sv));
  -	break;
  -    case SVt_PVIV:
  -	del_XPVIV(SvANY(sv));
  -	break;
  -    case SVt_PVNV:
  -	del_XPVNV(SvANY(sv));
  -	break;
  -    case SVt_PVMG:
  -	del_XPVMG(SvANY(sv));
  -	break;
  -    case SVt_PVLV:
  -	del_XPVLV(SvANY(sv));
  -	break;
  -    case SVt_PVAV:
  -	del_XPVAV(SvANY(sv));
  -	break;
  -    case SVt_PVHV:
  -	del_XPVHV(SvANY(sv));
  -	break;
  -    case SVt_PVCV:
  -	del_XPVCV(SvANY(sv));
  -	break;
  -    case SVt_PVGV:
  -	del_XPVGV(SvANY(sv));
  -	/* code duplication for increased performance. */
  -	Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv),
  -				     Ponie_I_SV_ZERO_FLAGS_SET_TYPE,
  -				     SVTYPEMASK);
  -	SvBREAK_on(sv);
  -	/* decrease refcount of the stash that owns this GV, if any */
  -	SvANY(sv) = (void *) 0xDEAD;
  -	if (stash)
  -	    SvREFCNT_dec(stash);
  -	return; /* not break, SvFLAGS reset already happened */
  -    case SVt_PVBM:
  -	del_XPVBM(SvANY(sv));
  -	break;
  -    case SVt_PVFM:
  -	del_XPVFM(SvANY(sv));
  -	break;
  -    case SVt_PVIO:
  -	del_XPVIO(SvANY(sv));
  -	break;
  -    }
  -    Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv),
  -				 Ponie_I_SV_ZERO_FLAGS_SET_TYPE, SVTYPEMASK);
  -    SvBREAK_on(sv);
  -    SvANY(sv) = (void *) 0xDEAD;
  +    Parrot_PMC_set_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CLEAR, 0);
   }
   
   /*
  
  
  
  1.72      +2 -0      ponie/perl/sv.h
  
  Index: sv.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.h,v
  retrieving revision 1.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- sv.h	30 Apr 2005 08:11:43 -0000	1.71
  +++ sv.h	30 Apr 2005 13:10:29 -0000	1.72
  @@ -250,6 +250,7 @@
     Ponie_P_PVX_0,		/* Clear SvPVX pointer	   */
     Ponie_P_GET_UPGRADE,		/* Pull data from SvANY and free it   */
     Ponie_P_SET_UPGRADE,		/* Allocate SvANY and push data to it */
  +  Ponie_P_CLEAR,		/* Free SvANY and things hanging from it */
     Ponie_P_UNGLOB,		/* Special things for sv_unglob */
     Ponie_P_NEWRV_HACK,		/* Special things for newSVrv */
     Ponie_P_REPLACE,		/* Special things for sv_replace */
  @@ -261,6 +262,7 @@
     Ponie_I_SV_UPGRADE,	/* Does the macro version with the < type test.  */
     Ponie_I_SV_UPGRADE_func,	/* Unconditional - direct call to sv_upgrade */
     Ponie_I_SV_ZERO_FLAGS_SET_TYPE,
  +  Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
     Ponie_I_SV_FLAGS,		/* Read only  */
     Ponie_I_SVf_BREAK,
     Ponie_I_SVp_OK,
  
  
  
  1.53      +7 -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.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- perl5cargo_cult.pmc	30 Apr 2005 10:18:59 -0000	1.52
  +++ perl5cargo_cult.pmc	30 Apr 2005 13:10:29 -0000	1.53
  @@ -704,6 +704,12 @@
               ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
                   = (value & SVTYPEMASK);
               return;
  +        case Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD:
  +            ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
  +                = SVTYPEMASK | SVf_BREAK;
  +            /*SvANY(sv) = (void *) 0xDEAD;*/
  +            ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_any = 0xDEAD;
  +            return;
   	case Ponie_I_SV_UPGRADE:
               if ((((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags & SVTYPEMASK) >= value)
                   return;
  
  
  
  1.3       +7 -1      ponie/src/pmc/perl5iv.pmc
  
  Index: perl5iv.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5iv.pmc,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- perl5iv.pmc	29 Apr 2005 23:47:21 -0000	1.2
  +++ perl5iv.pmc	30 Apr 2005 13:10:29 -0000	1.3
  @@ -43,6 +43,12 @@
                   SvIV_set(sv, val->iv);
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            assert(SvANY(MUMBLE(SELF)) == 0);
  +            Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                         Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                         0);
  +            break;
           default:
               SUPER(key, value);
           }
  
  
  
  1.3       +6 -1      ponie/src/pmc/perl5null.pmc
  
  Index: perl5null.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5null.pmc,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- perl5null.pmc	29 Apr 2005 23:47:21 -0000	1.2
  +++ perl5null.pmc	30 Apr 2005 13:10:29 -0000	1.3
  @@ -24,6 +24,11 @@
           case Ponie_P_SET_UPGRADE:
               Perl_croak(aTHX_ "Can't upgrade to undef");
               break;
  +        case Ponie_P_CLEAR:
  +            Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                         Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                         0);
  +            break;
           default:
               SUPER(key, value);
           }
  
  
  
  1.3       +7 -1      ponie/src/pmc/perl5nv.pmc
  
  Index: perl5nv.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5nv.pmc,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- perl5nv.pmc	29 Apr 2005 23:47:21 -0000	1.2
  +++ perl5nv.pmc	30 Apr 2005 13:10:29 -0000	1.3
  @@ -41,6 +41,12 @@
                   SvNV_set(sv, val->nv);
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            assert(SvANY(MUMBLE(SELF)) == 0);
  +            Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                         Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                         0);
  +            break;
           default:
               SUPER(key, value);
           }
  
  
  
  1.3       +11 -1     ponie/src/pmc/perl5pv.pmc
  
  Index: perl5pv.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pv.pmc,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- perl5pv.pmc	29 Apr 2005 23:47:21 -0000	1.2
  +++ perl5pv.pmc	30 Apr 2005 13:10:29 -0000	1.3
  @@ -65,6 +65,16 @@
                   SvLEN_set(sv, val->len);
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +
  +                del_XPV(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +                break;
  +            }
           default:
               SUPER(key, value);
           }
  
  
  
  1.3       +11 -1     ponie/src/pmc/perl5pvav.pmc
  
  Index: perl5pvav.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pvav.pmc,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- perl5pvav.pmc	29 Apr 2005 23:47:21 -0000	1.2
  +++ perl5pvav.pmc	30 Apr 2005 13:10:29 -0000	1.3
  @@ -43,6 +43,16 @@
   		AvFLAGS(sv)	= AVf_REAL;
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +
  +                del_XPVAV(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +                break;
  +            }
           default:
               SUPER(key, value);
           }
  
  
  
  1.3       +11 -1     ponie/src/pmc/perl5pvbm.pmc
  
  Index: perl5pvbm.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pvbm.pmc,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- perl5pvbm.pmc	29 Apr 2005 23:47:21 -0000	1.2
  +++ perl5pvbm.pmc	30 Apr 2005 13:10:29 -0000	1.3
  @@ -47,6 +47,16 @@
   		BmPREVIOUS(sv)	= 0;
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +
  +                del_XPVBM(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +                break;
  +            }
           default:
               SUPER(key, value);
           }
  
  
  
  1.4       +11 -1     ponie/src/pmc/perl5pvcv.pmc
  
  Index: perl5pvcv.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pvcv.pmc,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- perl5pvcv.pmc	30 Apr 2005 09:20:19 -0000	1.3
  +++ perl5pvcv.pmc	30 Apr 2005 13:10:29 -0000	1.4
  @@ -38,6 +38,16 @@
   		SvSTASH_set(sv, val->stash);
   		break;
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +
  +                del_XPVCV(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +                break;
  +            }
           default:
               SUPER(key, value);
           }
  
  
  
  1.4       +11 -1     ponie/src/pmc/perl5pvfm.pmc
  
  Index: perl5pvfm.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pvfm.pmc,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- perl5pvfm.pmc	30 Apr 2005 09:20:19 -0000	1.3
  +++ perl5pvfm.pmc	30 Apr 2005 13:10:29 -0000	1.4
  @@ -44,6 +44,16 @@
                   SvSTASH_set(sv, val->stash);
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +
  +                del_XPVFM(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +                break;
  +            }
           default:
               SUPER(key, value);
           }
  
  
  
  1.4       +18 -3     ponie/src/pmc/perl5pvgv.pmc
  
  Index: perl5pvgv.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pvgv.pmc,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- perl5pvgv.pmc	29 Apr 2005 23:47:21 -0000	1.3
  +++ perl5pvgv.pmc	30 Apr 2005 13:10:29 -0000	1.4
  @@ -53,9 +53,24 @@
               {
                   SELF->vtable = Parrot_base_vtables[PL_pmcname[SVt_PVMG]];
                   break;
  -            default:
  -                SUPER(key, value);
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +                HV *stash = GvSTASH(sv);
  +
  +                del_XPVGV(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +
  +                /* decrease refcount of the stash that owns this GV, if any */
  +                if (stash)
  +                    SvREFCNT_dec(stash);
  +                break;
  +            }
  +        default:
  +            SUPER(key, value);
           }
       }
   }
  
  
  
  1.3       +11 -1     ponie/src/pmc/perl5pvhv.pmc
  
  Index: perl5pvhv.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pvhv.pmc,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- perl5pvhv.pmc	29 Apr 2005 23:47:21 -0000	1.2
  +++ perl5pvhv.pmc	30 Apr 2005 13:10:29 -0000	1.3
  @@ -44,6 +44,16 @@
   		HvNAME(sv)	= 0;
   		break;
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +
  +                del_XPVHV(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +                break;
  +            }
           default:
               SUPER(key, value);
           }
  
  
  
  1.4       +11 -1     ponie/src/pmc/perl5pvio.pmc
  
  Index: perl5pvio.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pvio.pmc,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- perl5pvio.pmc	30 Apr 2005 09:20:19 -0000	1.3
  +++ perl5pvio.pmc	30 Apr 2005 13:10:29 -0000	1.4
  @@ -46,6 +46,16 @@
   		IoPAGE_LEN(sv)	= 60;
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +
  +                del_XPVIO(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +                break;
  +            }
           default:
               SUPER(key, value);
           }
  
  
  
  1.4       +11 -1     ponie/src/pmc/perl5pviv.pmc
  
  Index: perl5pviv.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pviv.pmc,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- perl5pviv.pmc	29 Apr 2005 23:47:21 -0000	1.3
  +++ perl5pviv.pmc	30 Apr 2005 13:10:29 -0000	1.4
  @@ -64,6 +64,16 @@
                   SvNOK_off(sv);
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +
  +                del_XPVIV(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +                break;
  +            }
           default:
               SUPER(key, value);
           }
  
  
  
  1.3       +11 -1     ponie/src/pmc/perl5pvlv.pmc
  
  Index: perl5pvlv.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pvlv.pmc,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- perl5pvlv.pmc	29 Apr 2005 23:47:21 -0000	1.2
  +++ perl5pvlv.pmc	30 Apr 2005 13:10:29 -0000	1.3
  @@ -53,6 +53,16 @@
   		GvFLAGS(sv)	= 0;
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +
  +                del_XPVLV(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +                break;
  +            }
           default:
               SUPER(key, value);
           }
  
  
  
  1.4       +11 -1     ponie/src/pmc/perl5pvmg.pmc
  
  Index: perl5pvmg.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pvmg.pmc,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- perl5pvmg.pmc	29 Apr 2005 23:47:21 -0000	1.3
  +++ perl5pvmg.pmc	30 Apr 2005 13:10:29 -0000	1.4
  @@ -68,6 +68,16 @@
                   SvSTASH_set(sv, val->stash);
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +
  +                del_XPVMG(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +            }
  +            break;
           default:
               SUPER(key, value);
           }
  
  
  
  1.4       +11 -1     ponie/src/pmc/perl5pvnv.pmc
  
  Index: perl5pvnv.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5pvnv.pmc,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- perl5pvnv.pmc	29 Apr 2005 23:47:21 -0000	1.3
  +++ perl5pvnv.pmc	30 Apr 2005 13:10:29 -0000	1.4
  @@ -63,6 +63,16 @@
                   SvNV_set(sv, val->nv);
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            {
  +                SV *sv = MUMBLE(SELF);
  +
  +             	del_XPVNV(SvANY(sv));
  +                Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                             Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                             0);
  +                break;
  +            }
           default:
               SUPER(key, value);
           }
  
  
  
  1.3       +7 -1      ponie/src/pmc/perl5rv.pmc
  
  Index: perl5rv.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5rv.pmc,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- perl5rv.pmc	29 Apr 2005 23:47:21 -0000	1.2
  +++ perl5rv.pmc	30 Apr 2005 13:10:29 -0000	1.3
  @@ -38,6 +38,12 @@
                   SvRV_set(sv, val->rv);
                   break;
               }
  +        case Ponie_P_CLEAR:
  +            assert(SvANY(MUMBLE(SELF)) == 0);
  +            Parrot_PMC_set_intval_intkey(PL_Parrot,SELF,
  +                                         Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD,
  +                                         0);
  +            break;
           default:
               SUPER(key, value);
           }