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) {