cvs commit: ponie/src/pmc perl5cargo_cult.pmc

[email protected] (Nicholas Clark) 4 Nov 2004 06:42:12 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     04/11/03 22:42:12

  Modified:    perl     sv.c sv.h
               src/pmc  perl5cargo_cult.pmc
  Log:
  Move the BM macros into the PMC code
  
  Revision  Changes    Path
  1.52      +3 -15     ponie/perl/sv.c
  
  Index: sv.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.c,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- sv.c	3 Nov 2004 23:18:06 -0000	1.51
  +++ sv.c	4 Nov 2004 06:42:12 -0000	1.52
  @@ -1118,27 +1118,15 @@
   }
   
   U8* Perl_macro_BmRARE (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVBM* data = (XPVBM*) /**/ SvANY(sv);
  -    return &(data->xbm_rare);
  -  }
  -  return &((XPVBM*)SvANY(sv))->xbm_rare;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_RARE);
   }
   
   I32* Perl_macro_BmUSEFUL (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVBM* data = (XPVBM*) /**/ SvANY(sv);
  -    return &(data->xbm_useful);
  -  }
  -  return &((XPVBM*)SvANY(sv))->xbm_useful;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_USEFUL);
   }
   
   U16* Perl_macro_BmPREVIOUS (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVBM* data = (XPVBM*) /**/ SvANY(sv);
  -    return &(data->xbm_previous);
  -  }
  -  return &((XPVBM*)SvANY(sv))->xbm_previous;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_PREVIOUS);
   }
   
   IV* Perl_macro_FmLINES (pTHX_ SV *sv) {
  
  
  
  1.55      +3 -0      ponie/perl/sv.h
  
  Index: sv.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.h,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- sv.h	3 Nov 2004 23:18:06 -0000	1.54
  +++ sv.h	4 Nov 2004 06:42:12 -0000	1.55
  @@ -203,6 +203,9 @@
     Ponie_P_HVPLACEHOLDERS,	/* SvNVX pointer  */
     Ponie_P_MAGIC,	/* &SvMAGIC pointer  */
     Ponie_P_STASH,	/* &SvSTASH pointer  */
  +  Ponie_P_RARE,		/* &BmRARE pointer  */
  +  Ponie_P_USEFUL,	/* &BmUSEFUL pointer  */
  +  Ponie_P_PREVIOUS,	/* &BmPREVIOUS pointer  */
     Ponie_P_RVX_0,	/* Clear SvRVX pointer  */
     Ponie_P_PVX_0,	/* Clear SvPVX pointer  */
     Ponie_P_MAX
  
  
  
  1.41      +31 -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.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- perl5cargo_cult.pmc	3 Nov 2004 23:18:06 -0000	1.40
  +++ perl5cargo_cult.pmc	4 Nov 2004 06:42:12 -0000	1.41
  @@ -1,7 +1,7 @@
   /* Perl5QQQ.pmc -*- c -*-
    *  Copyright: 2001-2004 The Perl Foundation.  All Rights Reserved.
    *  CVS Info
  - *     $Id: perl5cargo_cult.pmc,v 1.40 2004/11/03 23:18:06 nicholas Exp $
  + *     $Id: perl5cargo_cult.pmc,v 1.41 2004/11/04 06:42:12 nicholas Exp $
    *  Overview:
    *     These are the vtable functions for the Perl5QQQ base class
    *  Data Structure and Algorithms:
  @@ -114,6 +114,36 @@
                   assert (any);
                   return &(any->xmg_stash);
               }
  +	case Ponie_P_RARE:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVBM *any;
  +
  +                assert (sv);
  +                any = (XPVBM *)sv->sv_any;
  +                assert (any);
  +                return &(any->xbm_rare);
  +            }
  +	case Ponie_P_USEFUL:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVBM *any;
  +
  +                assert (sv);
  +                any = (XPVBM *)sv->sv_any;
  +                assert (any);
  +                return &(any->xbm_useful);
  +            }
  +	case Ponie_P_PREVIOUS:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVBM *any;
  +
  +                assert (sv);
  +                any = (XPVBM *)sv->sv_any;
  +                assert (any);
  +                return &(any->xbm_previous);
  +            }
   	case Ponie_P_IVX:
   	case Ponie_P_UVX:
   	case Ponie_P_AVOFF: