cvs commit: ponie/src/pmc perl5lv.pmc

[email protected] (Arthur Bergman) 29 Feb 2004 18:02:20 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     04/02/29 10:02:19

  Modified:    perl     embed.fnc embed.h global.sym mg.c proto.h sv.c sv.h
               src/pmc  perl5lv.pmc
  Log:
  lvalue addition
  
  Revision  Changes    Path
  1.10      +4 -1      ponie/perl/embed.fnc
  
  Index: embed.fnc
  ===================================================================
  RCS file: /cvs/public/ponie/perl/embed.fnc,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -w -r1.9 -r1.10
  --- embed.fnc	27 Feb 2004 14:23:39 -0000	1.9
  +++ embed.fnc	29 Feb 2004 18:02:19 -0000	1.10
  @@ -986,6 +986,8 @@
   Ap      |SSize_t*|macro_AvFILLp  |AV *
   Ap      |SSize_t*|macro_AvMAX  |AV *
   Ap	|char**	|macro_SvPVX	|SV *
  +Ap	|STRLEN*	|macro_SvCUR	|SV *
  +Ap	|STRLEN*	|macro_SvLEN	|SV *
   Ap	|IV*	|macro_SvIVX	|SV *
   Ap	|NV*	|macro_SvNVX	|SV *
   Ap	|UV*	|macro_SvUVX	|SV *
  @@ -993,7 +995,8 @@
   Ap	|HV**	|macro_SvSTASH	|SV *
   Ap	|char**	|macro_LvTYPE	|SV *
   Ap	|SV**	|macro_LvTARG	|SV *
  -
  +Ap	|STRLEN*	|macro_LvTARGLEN	|SV *
  +Ap	|STRLEN*	|macro_LvTARGOFF	|SV *
   
   END_EXTERN_C
   
  
  
  
  1.10      +8 -0      ponie/perl/embed.h
  
  Index: embed.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/embed.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -w -r1.9 -r1.10
  --- embed.h	27 Feb 2004 14:23:39 -0000	1.9
  +++ embed.h	29 Feb 2004 18:02:19 -0000	1.10
  @@ -1272,6 +1272,8 @@
   #define macro_AvFILLp		Perl_macro_AvFILLp
   #define macro_AvMAX		Perl_macro_AvMAX
   #define macro_SvPVX		Perl_macro_SvPVX
  +#define macro_SvCUR		Perl_macro_SvCUR
  +#define macro_SvLEN		Perl_macro_SvLEN
   #define macro_SvIVX		Perl_macro_SvIVX
   #define macro_SvNVX		Perl_macro_SvNVX
   #define macro_SvUVX		Perl_macro_SvUVX
  @@ -1279,6 +1281,8 @@
   #define macro_SvSTASH		Perl_macro_SvSTASH
   #define macro_LvTYPE		Perl_macro_LvTYPE
   #define macro_LvTARG		Perl_macro_LvTARG
  +#define macro_LvTARGLEN		Perl_macro_LvTARGLEN
  +#define macro_LvTARGOFF		Perl_macro_LvTARGOFF
   #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
   #ifdef PERL_CORE
   #define do_trans_simple		S_do_trans_simple
  @@ -3778,6 +3782,8 @@
   #define macro_AvFILLp(a)	Perl_macro_AvFILLp(aTHX_ a)
   #define macro_AvMAX(a)		Perl_macro_AvMAX(aTHX_ a)
   #define macro_SvPVX(a)		Perl_macro_SvPVX(aTHX_ a)
  +#define macro_SvCUR(a)		Perl_macro_SvCUR(aTHX_ a)
  +#define macro_SvLEN(a)		Perl_macro_SvLEN(aTHX_ a)
   #define macro_SvIVX(a)		Perl_macro_SvIVX(aTHX_ a)
   #define macro_SvNVX(a)		Perl_macro_SvNVX(aTHX_ a)
   #define macro_SvUVX(a)		Perl_macro_SvUVX(aTHX_ a)
  @@ -3785,6 +3791,8 @@
   #define macro_SvSTASH(a)	Perl_macro_SvSTASH(aTHX_ a)
   #define macro_LvTYPE(a)		Perl_macro_LvTYPE(aTHX_ a)
   #define macro_LvTARG(a)		Perl_macro_LvTARG(aTHX_ a)
  +#define macro_LvTARGLEN(a)	Perl_macro_LvTARGLEN(aTHX_ a)
  +#define macro_LvTARGOFF(a)	Perl_macro_LvTARGOFF(aTHX_ a)
   #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
   #ifdef PERL_CORE
   #define do_trans_simple(a)	S_do_trans_simple(aTHX_ a)
  
  
  
  1.10      +4 -0      ponie/perl/global.sym
  
  Index: global.sym
  ===================================================================
  RCS file: /cvs/public/ponie/perl/global.sym,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -w -r1.9 -r1.10
  --- global.sym	27 Feb 2004 14:23:39 -0000	1.9
  +++ global.sym	29 Feb 2004 18:02:19 -0000	1.10
  @@ -645,6 +645,8 @@
   Perl_macro_AvFILLp
   Perl_macro_AvMAX
   Perl_macro_SvPVX
  +Perl_macro_SvCUR
  +Perl_macro_SvLEN
   Perl_macro_SvIVX
   Perl_macro_SvNVX
   Perl_macro_SvUVX
  @@ -652,6 +654,8 @@
   Perl_macro_SvSTASH
   Perl_macro_LvTYPE
   Perl_macro_LvTARG
  +Perl_macro_LvTARGLEN
  +Perl_macro_LvTARGOFF
   Perl_Slab_Alloc
   Perl_Slab_Free
   Perl_sv_setsv_flags
  
  
  
  1.3       +3 -8      ponie/perl/mg.c
  
  Index: mg.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/mg.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -w -r1.2 -r1.3
  --- mg.c	7 Jan 2004 14:13:58 -0000	1.2
  +++ mg.c	29 Feb 2004 18:02:19 -0000	1.3
  @@ -122,11 +122,7 @@
       MAGIC *newmg, *head, *cur, *mg;
       I32 mgs_ix = SSNEW(sizeof(MGS));
   
  -    if(SvPMC(sv)) {
  -      
  -
  -    } else {
  -
  +    {
         save_magic(mgs_ix, sv);
         
         /* We must call svt_get(sv, mg) for each valid entry in the linked
  @@ -376,9 +372,8 @@
   {
       MAGIC* mg;
       MAGIC* moremagic;
  -    if(SvPMC(sv)) {
  -      return 0;
  -    }
  +
  +
       for (mg = SvMAGIC(sv); mg; mg = moremagic) {
   	MGVTBL* vtbl = mg->mg_virtual;
   	moremagic = mg->mg_moremagic;
  
  
  
  1.10      +4 -1      ponie/perl/proto.h
  
  Index: proto.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/proto.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -w -r1.9 -r1.10
  --- proto.h	27 Feb 2004 14:23:39 -0000	1.9
  +++ proto.h	29 Feb 2004 18:02:19 -0000	1.10
  @@ -944,6 +944,8 @@
   PERL_CALLCONV SSize_t*	Perl_macro_AvFILLp(pTHX_ AV *);
   PERL_CALLCONV SSize_t*	Perl_macro_AvMAX(pTHX_ AV *);
   PERL_CALLCONV char**	Perl_macro_SvPVX(pTHX_ SV *);
  +PERL_CALLCONV STRLEN*	Perl_macro_SvCUR(pTHX_ SV *);
  +PERL_CALLCONV STRLEN*	Perl_macro_SvLEN(pTHX_ SV *);
   PERL_CALLCONV IV*	Perl_macro_SvIVX(pTHX_ SV *);
   PERL_CALLCONV NV*	Perl_macro_SvNVX(pTHX_ SV *);
   PERL_CALLCONV UV*	Perl_macro_SvUVX(pTHX_ SV *);
  @@ -951,7 +953,8 @@
   PERL_CALLCONV HV**	Perl_macro_SvSTASH(pTHX_ SV *);
   PERL_CALLCONV char**	Perl_macro_LvTYPE(pTHX_ SV *);
   PERL_CALLCONV SV**	Perl_macro_LvTARG(pTHX_ SV *);
  -
  +PERL_CALLCONV STRLEN*	Perl_macro_LvTARGLEN(pTHX_ SV *);
  +PERL_CALLCONV STRLEN*	Perl_macro_LvTARGOFF(pTHX_ SV *);
   
   END_EXTERN_C
   
  
  
  
  1.10      +37 -4     ponie/perl/sv.c
  
  Index: sv.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -w -r1.9 -r1.10
  --- sv.c	27 Feb 2004 14:23:39 -0000	1.9
  +++ sv.c	29 Feb 2004 18:02:19 -0000	1.10
  @@ -1329,22 +1329,55 @@
     
   }
   
  +STRLEN* Perl_macro_SvLEN (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPV* data = (XPV*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xpv_len);
  +  }
  +  return &((XPV*)SvANY(sv))->xpv_len;
  +  
  +}
  +
  +STRLEN* Perl_macro_SvCUR (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPV* data = (XPV*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xpv_cur);
  +  }
  +  return &((XPV*)SvANY(sv))->xpv_cur;
  +  
  +}
  +
   char** Perl_macro_LvTYPE (pTHX_ SV* sv) {
  -  perl5lv_pmc_data* data;
  +  XPVLV* data;
     if(!SvPMC(sv))
       abort();
  -  data = (perl5lv_pmc_data*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));  
  +  data = (XPVLV*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));  
     return (char**) &(data->xlv_type);
   }
   
   SV** Perl_macro_LvTARG (pTHX_ SV* sv) {
  -  perl5lv_pmc_data* data;
  +  XPVLV* data;
     if(!SvPMC(sv))
       abort();
  -  data = (perl5lv_pmc_data*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));  
  +  data = (XPVLV*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));  
     return &(data->xlv_targ);
   }
   
  +STRLEN* Perl_macro_LvTARGOFF (pTHX_ SV* sv) {
  +  XPVLV* data;
  +  if(!SvPMC(sv))
  +    abort();  
  +  data = (XPVLV*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));  
  +  return &(data->xlv_targoff);
  +}
  +
  +STRLEN* Perl_macro_LvTARGLEN (pTHX_ SV* sv) {
  +  XPVLV* data;
  +  if(!SvPMC(sv))
  +    abort();
  +  data = (XPVLV*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));  
  +  return &(data->xlv_targlen);  
  +}
   
   /*
   =for apidoc sv_upgrade
  
  
  
  1.8       +4 -10     ponie/perl/sv.h
  
  Index: sv.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.h,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -w -r1.7 -r1.8
  --- sv.h	26 Feb 2004 11:42:49 -0000	1.7
  +++ sv.h	29 Feb 2004 18:02:19 -0000	1.8
  @@ -746,13 +746,9 @@
   #define SvNVXx(sv) SvNVX(sv)
   
   #define SvPVX(sv)   (* Perl_macro_SvPVX(aTHX_ (SV*) sv))
  -//#define SvPVX(sv) (*(SvPMC((sv)) ?  &((XPV*)  SvANY(sv))->xpv_pv : &((XPV*)  SvANY(sv))->xpv_pv ))
  -//#define SvPVX(sv) (*(SvPMC((sv)) ?  Perl_macro_SvPVX(aTHX_ (SV*)sv) : &((XPV*)  SvANY(sv))->xpv_pv ))
  -//#define SvPVX(sv) ((SvPMC((sv)) ?  Perl_macro_SvPVX(aTHX_ (SV*)sv) : ((XPV*)  SvANY(sv))->xpv_pv ))
  -//Perl_macro_SvPVX(aTHX_ ((SV*)sv)))
   #define SvPVXx(sv) SvPVX(sv)
  -#define SvCUR(sv) ((XPV*)  SvANY(sv))->xpv_cur
  -#define SvLEN(sv) ((XPV*)  SvANY(sv))->xpv_len
  +#define SvCUR(sv) ( * Perl_macro_SvCUR(aTHX_ (SV*) sv))
  +#define SvLEN(sv) ( * Perl_macro_SvLEN(aTHX_ (SV*) sv))
   #define SvLENx(sv) SvLEN(sv)
   #define SvEND(sv)(((XPV*)  SvANY(sv))->xpv_pv + ((XPV*)SvANY(sv))->xpv_cur)
   #define SvENDx(sv) ((PL_Sv = (sv)), SvEND(PL_Sv))
  @@ -791,11 +787,9 @@
   #define FmLINES(sv)	((XPVFM*)  SvANY(sv))->xfm_lines
   
   #define LvTYPE(sv)      ((char*)*Perl_macro_LvTYPE(aTHX_ (SV*)sv))
  -//#define LvTYPE(sv)	((XPVLV*)  SvANY(sv))->xlv_type
   #define LvTARG(sv)      ((SV*)*Perl_macro_LvTARG(aTHX_ (SV*)sv))
  -//#define LvTARG(sv)	((XPVLV*)  SvANY(sv))->xlv_targ
  -#define LvTARGOFF(sv)	((XPVLV*)  SvANY(sv))->xlv_targoff
  -#define LvTARGLEN(sv)	((XPVLV*)  SvANY(sv))->xlv_targlen
  +#define LvTARGOFF(sv)   ( * Perl_macro_LvTARGOFF(aTHX_ (SV*)sv))
  +#define LvTARGLEN(sv)   ( * Perl_macro_LvTARGLEN(aTHX_ (SV*)sv))
   
   #define IoIFP(sv)	((XPVIO*)  SvANY(sv))->xio_ifp
   #define IoOFP(sv)	((XPVIO*)  SvANY(sv))->xio_ofp
  
  
  
  1.7       +2 -2      ponie/src/pmc/perl5lv.pmc
  
  Index: perl5lv.pmc
  ===================================================================
  RCS file: /cvs/public/ponie/src/pmc/perl5lv.pmc,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- perl5lv.pmc	19 Dec 2003 14:38:14 -0000	1.6
  +++ perl5lv.pmc	29 Feb 2004 18:02:19 -0000	1.7
  @@ -1,7 +1,7 @@
   /* Perl5LV.pmc
    *  Copyright: 2001-2003 The Perl Foundation.  All Rights Reserved.
    *  CVS Info
  - *     $Id: perl5lv.pmc,v 1.6 2003/12/19 14:38:14 sky Exp $
  + *     $Id: perl5lv.pmc,v 1.7 2004/02/29 18:02:19 sky Exp $
    *  Overview:
    *     These are the vtable functions for the Perl5LV base class
    *  Data Structure and Algorithms:
  @@ -21,7 +21,7 @@
   pmclass Perl5LV need_ext {
   
       void init () {	
  -	PMC_data(SELF) = malloc(sizeof(perl5lv_pmc_data));
  +	PMC_data(SELF) = malloc(sizeof(struct xpvlv));
       }
   
       void init_pmc (PMC* initializer) {