cvs commit: ponie/src/pmc perl5cargo_cult.pmc

[email protected] (Nicholas Clark) 4 Nov 2004 10:26:27 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     04/11/04 02:26:27

  Modified:    perl     sv.c sv.h
               src/pmc  perl5cargo_cult.pmc
  Log:
  CV macros into the PMC
  
  Revision  Changes    Path
  1.55      +15 -60    ponie/perl/sv.c
  
  Index: sv.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.c,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- sv.c	4 Nov 2004 08:38:41 -0000	1.54
  +++ sv.c	4 Nov 2004 10:26:27 -0000	1.55
  @@ -1218,99 +1218,54 @@
   }
   
   HV** Perl_macro_CvSTASH (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_stash);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_stash;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVSTASH);
   }
   
   OP** Perl_macro_CvSTART (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_start);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_start;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVSTART);
  +
   }
   
   OP** Perl_macro_CvROOT (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_root);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_root;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVROOT);
  +
   }
   
   xpvcv_xcv_xsub_t * Perl_macro_CvXSUB (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_xsub);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_xsub;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVXSUB);
  +
   }
   
   ANY* Perl_macro_CvXSUBANY (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_xsubany);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_xsubany;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVXSUBANY);
   }
   
   GV** Perl_macro_CvGV (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_gv);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_gv;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVGV);
   }
   
   char** Perl_macro_CvFILE (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_file);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_file;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVFILE);
   }
   
   long* Perl_macro_CvDEPTH (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_depth);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_depth;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVDEPTH);
   }
   
   PADLIST** Perl_macro_CvPADLIST (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_padlist);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_padlist;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVPADLIST);
   }
   
   CV** Perl_macro_CvOUTSIDE (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_outside);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_outside;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVOUTSIDE);
   }
   
   cv_flags_t* Perl_macro_CvFLAGS (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_flags);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_flags;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVFLAGS);
   }
   
   U32* Perl_macro_CvOUTSIDE_SEQ (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVCV* data = (XPVCV*) /**/ SvANY(sv);
  -    return &(data->xcv_outside_seq);
  -  }
  -  return &((XPVCV*)SvANY(sv))->xcv_outside_seq;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_CVOUTSIDE_SEQ);
   }
   
   
  
  
  
  1.58      +12 -0     ponie/perl/sv.h
  
  Index: sv.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.h,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- sv.h	4 Nov 2004 08:38:41 -0000	1.57
  +++ sv.h	4 Nov 2004 10:26:27 -0000	1.58
  @@ -228,6 +228,18 @@
     Ponie_P_IOSUBPROCESS,	/* &IoSUBPROCESS pointer  */
     Ponie_P_IOTYPE,	/* &IoTYPE pointer  */
     Ponie_P_IOFLAGS,	/* &IoFLAGS pointer  */
  +  Ponie_P_CVSTASH,	/* &CvSTASH pointer  */
  +  Ponie_P_CVSTART,	/* &CvSTART pointer  */
  +  Ponie_P_CVROOT,	/* &CvROOT pointer  */
  +  Ponie_P_CVXSUB,	/* &CvXSUB pointer  */
  +  Ponie_P_CVXSUBANY,	/* &CvXSUBANY pointer  */
  +  Ponie_P_CVGV,		/* &CvGV pointer  */
  +  Ponie_P_CVFILE,	/* &CvFILE pointer  */
  +  Ponie_P_CVDEPTH,	/* &CvDEPTH pointer  */
  +  Ponie_P_CVPADLIST,	/* &CvPADLIST pointer  */
  +  Ponie_P_CVOUTSIDE,	/* &CvOUTSIDE pointer  */
  +  Ponie_P_CVFLAGS,	/* &CvFLAGS pointer  */
  +  Ponie_P_CVOUTSIDE_SEQ,	/* &CvOUTSIDE_SEQ pointer  */
     Ponie_P_RVX_0,	/* Clear SvRVX pointer  */
     Ponie_P_PVX_0,	/* Clear SvPVX pointer  */
     Ponie_P_MAX
  
  
  
  1.44      +121 -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.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- perl5cargo_cult.pmc	4 Nov 2004 08:38:41 -0000	1.43
  +++ perl5cargo_cult.pmc	4 Nov 2004 10:26:27 -0000	1.44
  @@ -1,7 +1,7 @@
   /* Perl5QQQ.pmc -*- c -*-
    *  Copyright: 2001-2004 The Perl Foundation.  All Rights Reserved.
    *  CVS Info
  - *     $Id: perl5cargo_cult.pmc,v 1.43 2004/11/04 08:38:41 nicholas Exp $
  + *     $Id: perl5cargo_cult.pmc,v 1.44 2004/11/04 10:26:27 nicholas Exp $
    *  Overview:
    *     These are the vtable functions for the Perl5QQQ base class
    *  Data Structure and Algorithms:
  @@ -364,6 +364,126 @@
                   assert (any);
                   return &(any->xio_flags);
               }
  +	case Ponie_P_CVSTASH:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_stash);
  +            }
  +	case Ponie_P_CVSTART:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_start);
  +            }
  +	case Ponie_P_CVROOT:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_root);
  +            }
  +	case Ponie_P_CVXSUB:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_xsub);
  +            }
  +	case Ponie_P_CVXSUBANY:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_xsubany);
  +            }
  +	case Ponie_P_CVGV:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_gv);
  +            }
  +	case Ponie_P_CVFILE:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_file);
  +            }
  +	case Ponie_P_CVDEPTH:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_depth);
  +            }
  +	case Ponie_P_CVPADLIST:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_padlist);
  +            }
  +	case Ponie_P_CVOUTSIDE:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_outside);
  +            }
  +	case Ponie_P_CVFLAGS:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_flags);
  +            }
  +	case Ponie_P_CVOUTSIDE_SEQ:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVCV *any;
  +
  +                assert (sv);
  +                any = (XPVCV *)sv->sv_any;
  +                assert (any);
  +                return &(any->xcv_outside_seq);
  +            }
   	case Ponie_P_IVX:
   	case Ponie_P_UVX:
   	case Ponie_P_AVOFF: