cvs commit: ponie/src/pmc perl5cargo_cult.pmc

[email protected] (Nicholas Clark) 4 Nov 2004 07:40:09 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     04/11/03 23:40:09

  Modified:    perl     sv.c sv.h
               src/pmc  perl5cargo_cult.pmc
  Log:
  Move PVFM and PVLV macros into the PMC code
  
  Revision  Changes    Path
  1.53      +5 -25     ponie/perl/sv.c
  
  Index: sv.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.c,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- sv.c	4 Nov 2004 06:42:12 -0000	1.52
  +++ sv.c	4 Nov 2004 07:40:08 -0000	1.53
  @@ -1130,43 +1130,23 @@
   }
   
   IV* Perl_macro_FmLINES (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVFM* data = (XPVFM*) /**/ SvANY(sv);
  -    return &(data->xfm_lines);
  -  }
  -  return &((XPVFM*)SvANY(sv))->xfm_lines;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_LINES);
   }
   
   char* Perl_macro_LvTYPE (pTHX_ SV* sv) {
  -  XPVLV* data;
  -  if(!SvPMC(sv))
  -    abort();
  -  data = (XPVLV*) /**/ SvANY(sv);  
  -  return &(data->xlv_type);
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_TYPE);
   }
   
   SV** Perl_macro_LvTARG (pTHX_ SV* sv) {
  -  XPVLV* data;
  -  if(!SvPMC(sv))
  -    abort();
  -  data = (XPVLV*) /**/ SvANY(sv);  
  -  return &(data->xlv_targ);
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_TARG);
   }
   
   STRLEN* Perl_macro_LvTARGOFF (pTHX_ SV* sv) {
  -  XPVLV* data;
  -  if(!SvPMC(sv))
  -    abort();  
  -  data = (XPVLV*) /**/ SvANY(sv);  
  -  return &(data->xlv_targoff);
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_TARGOFF);
   }
   
   STRLEN* Perl_macro_LvTARGLEN (pTHX_ SV* sv) {
  -  XPVLV* data;
  -  if(!SvPMC(sv))
  -    abort();
  -  data = (XPVLV*) /**/ SvANY(sv);  
  -  return &(data->xlv_targlen);  
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_TARGLEN);
   }
   
   PerlIO** Perl_macro_IoIFP (pTHX_ SV *sv) {
  
  
  
  1.56      +5 -0      ponie/perl/sv.h
  
  Index: sv.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.h,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- sv.h	4 Nov 2004 06:42:12 -0000	1.55
  +++ sv.h	4 Nov 2004 07:40:08 -0000	1.56
  @@ -206,6 +206,11 @@
     Ponie_P_RARE,		/* &BmRARE pointer  */
     Ponie_P_USEFUL,	/* &BmUSEFUL pointer  */
     Ponie_P_PREVIOUS,	/* &BmPREVIOUS pointer  */
  +  Ponie_P_LINES,	/* &FmLINES pointer  */
  +  Ponie_P_TYPE,		/* &LvTYPE pointer  */
  +  Ponie_P_TARG,		/* &LvTARG pointer  */
  +  Ponie_P_TARGOFF,	/* &LvTARGOFF pointer  */
  +  Ponie_P_TARGLEN,	/* &LvTARGLEN pointer  */
     Ponie_P_RVX_0,	/* Clear SvRVX pointer  */
     Ponie_P_PVX_0,	/* Clear SvPVX pointer  */
     Ponie_P_MAX
  
  
  
  1.42      +51 -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.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- perl5cargo_cult.pmc	4 Nov 2004 06:42:12 -0000	1.41
  +++ perl5cargo_cult.pmc	4 Nov 2004 07:40:09 -0000	1.42
  @@ -1,7 +1,7 @@
   /* Perl5QQQ.pmc -*- c -*-
    *  Copyright: 2001-2004 The Perl Foundation.  All Rights Reserved.
    *  CVS Info
  - *     $Id: perl5cargo_cult.pmc,v 1.41 2004/11/04 06:42:12 nicholas Exp $
  + *     $Id: perl5cargo_cult.pmc,v 1.42 2004/11/04 07:40:09 nicholas Exp $
    *  Overview:
    *     These are the vtable functions for the Perl5QQQ base class
    *  Data Structure and Algorithms:
  @@ -144,6 +144,56 @@
                   assert (any);
                   return &(any->xbm_previous);
               }
  +	case Ponie_P_LINES:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVFM *any;
  +
  +                assert (sv);
  +                any = (XPVFM *)sv->sv_any;
  +                assert (any);
  +                return &(any->xfm_lines);
  +            }
  +	case Ponie_P_TYPE:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVLV *any;
  +
  +                assert (sv);
  +                any = (XPVLV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xlv_type);
  +            }
  +	case Ponie_P_TARG:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVLV *any;
  +
  +                assert (sv);
  +                any = (XPVLV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xlv_targ);
  +            }
  +	case Ponie_P_TARGOFF:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVLV *any;
  +
  +                assert (sv);
  +                any = (XPVLV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xlv_targoff);
  +            }
  +	case Ponie_P_TARGLEN:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVLV *any;
  +
  +                assert (sv);
  +                any = (XPVLV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xlv_targlen);
  +            }
   	case Ponie_P_IVX:
   	case Ponie_P_UVX:
   	case Ponie_P_AVOFF: