cvs commit: ponie/src/pmc perl5cargo_cult.pmc

[email protected] (Nicholas Clark) 3 Nov 2004 23:18:06 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     04/11/03 15:18:06

  Modified:    perl     sv.c sv.h
               src/pmc  perl5cargo_cult.pmc
  Log:
  SvMAGIC and SvSTASH into the PMC code.
  
  Revision  Changes    Path
  1.51      +2 -10     ponie/perl/sv.c
  
  Index: sv.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.c,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- sv.c	3 Nov 2004 22:29:19 -0000	1.50
  +++ sv.c	3 Nov 2004 23:18:06 -0000	1.51
  @@ -1076,19 +1076,11 @@
   }
   
   MAGIC** Perl_macro_SvMAGIC (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVMG* data = (XPVMG*) /**/ SvANY(sv);
  -    return &(data->xmg_magic);
  -  }
  -  return &((XPVMG*)SvANY(sv))->xmg_magic;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_MAGIC);
   }
   
   HV** Perl_macro_SvSTASH (pTHX_ SV *sv) {
  -  if(SvPMC(sv)) {
  -    XPVMG* data = (XPVMG*) /**/ SvANY(sv);
  -    return &(data->xmg_stash);
  -  }
  -  return &((XPVMG*)SvANY(sv))->xmg_stash;
  +  return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_STASH);
   }
   
   
  
  
  
  1.54      +3 -1      ponie/perl/sv.h
  
  Index: sv.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.h,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- sv.h	3 Nov 2004 22:39:07 -0000	1.53
  +++ sv.h	3 Nov 2004 23:18:06 -0000	1.54
  @@ -191,7 +191,7 @@
   
   typedef enum {
     Ponie_P_ANY,	/* SvANY pointer  */
  -  Ponie_P_RV,	/* &SvRV pointer	  */
  +  Ponie_P_RV,	/* &SvRV pointer   */
     Ponie_P_PVX,	/* &SvPVX pointer  */
     Ponie_P_CUR,	/* &SvCUR pointer  */
     Ponie_P_LEN,	/* &SvLEN pointer  */
  @@ -201,6 +201,8 @@
     Ponie_P_HVKEYS,	/* &SvIVX pointer  */
     Ponie_P_NVX,	/* &SvNVX pointer  */
     Ponie_P_HVPLACEHOLDERS,	/* SvNVX pointer  */
  +  Ponie_P_MAGIC,	/* &SvMAGIC pointer  */
  +  Ponie_P_STASH,	/* &SvSTASH pointer  */
     Ponie_P_RVX_0,	/* Clear SvRVX pointer  */
     Ponie_P_PVX_0,	/* Clear SvPVX pointer  */
     Ponie_P_MAX
  
  
  
  1.40      +21 -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.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- perl5cargo_cult.pmc	3 Nov 2004 20:46:11 -0000	1.39
  +++ perl5cargo_cult.pmc	3 Nov 2004 23:18:06 -0000	1.40
  @@ -1,7 +1,7 @@
   /* Perl5QQQ.pmc -*- c -*-
    *  Copyright: 2001-2004 The Perl Foundation.  All Rights Reserved.
    *  CVS Info
  - *     $Id: perl5cargo_cult.pmc,v 1.39 2004/11/03 20:46:11 nicholas Exp $
  + *     $Id: perl5cargo_cult.pmc,v 1.40 2004/11/03 23:18:06 nicholas Exp $
    *  Overview:
    *     These are the vtable functions for the Perl5QQQ base class
    *  Data Structure and Algorithms:
  @@ -94,6 +94,26 @@
                   assert (any);
                   return &(any->xpv_cur);
               }
  +	case Ponie_P_MAGIC:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVMG *any;
  +
  +                assert (sv);
  +                any = (XPVMG *)sv->sv_any;
  +                assert (any);
  +                return &(any->xmg_magic);
  +            }
  +	case Ponie_P_STASH:
  +            {
  +                struct STRUCT_SV* sv = PMC_struct_val(SELF);
  +                XPVMG *any;
  +
  +                assert (sv);
  +                any = (XPVMG *)sv->sv_any;
  +                assert (any);
  +                return &(any->xmg_stash);
  +            }
   	case Ponie_P_IVX:
   	case Ponie_P_UVX:
   	case Ponie_P_AVOFF: