cvs commit: ponie/perl embed.fnc proto.h sv.c

[email protected] (Nicholas Clark) 5 May 2004 21:57:52 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     04/05/05 14:57:52

  Modified:    perl     embed.fnc proto.h sv.c
  Log:
  And PVBM, leaving only PVGV (which is trouble)
  
  Revision  Changes    Path
  1.22      +2 -2      ponie/perl/embed.fnc
  
  Index: embed.fnc
  ===================================================================
  RCS file: /cvs/public/ponie/perl/embed.fnc,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -w -r1.21 -r1.22
  --- embed.fnc	5 May 2004 21:02:02 -0000	1.21
  +++ embed.fnc	5 May 2004 21:57:52 -0000	1.22
  @@ -1276,7 +1276,7 @@
   s	|Parrot_PMC	|new_xpvfm
   s	|XPVMG*	|new_xpvmg
   s	|Parrot_PMC	|new_xpvlv
  -s	|XPVBM*	|new_xpvbm
  +s	|Parrot_PMC	|new_xpvbm
   s	|Parrot_PMC	|new_xrv
   s	|void	|del_xiv	|Parrot_PMC p
   s	|void	|del_xnv	|Parrot_PMC p
  @@ -1290,7 +1290,7 @@
   s	|void	|del_xpvfm	|Parrot_PMC p
   s	|void	|del_xpvmg	|XPVMG* p
   s	|void	|del_xpvlv	|Parrot_PMC p
  -s	|void	|del_xpvbm	|XPVBM* p
  +s	|void	|del_xpvbm	|Parrot_PMC p
   s	|void	|del_xrv	|XRV* p
   s	|void	|zero_xpvfm	|SV *fm
   s	|void	|zero_xpvcv	|SV *cv
  
  
  
  1.22      +2 -2      ponie/perl/proto.h
  
  Index: proto.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/proto.h,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -w -r1.21 -r1.22
  --- proto.h	5 May 2004 21:02:02 -0000	1.21
  +++ proto.h	5 May 2004 21:57:52 -0000	1.22
  @@ -1228,7 +1228,7 @@
   STATIC Parrot_PMC	S_new_xpvfm(pTHX);
   STATIC XPVMG*	S_new_xpvmg(pTHX);
   STATIC Parrot_PMC	S_new_xpvlv(pTHX);
  -STATIC XPVBM*	S_new_xpvbm(pTHX);
  +STATIC Parrot_PMC	S_new_xpvbm(pTHX);
   STATIC Parrot_PMC	S_new_xrv(pTHX);
   STATIC void	S_del_xiv(pTHX_ Parrot_PMC p);
   STATIC void	S_del_xnv(pTHX_ Parrot_PMC p);
  @@ -1242,7 +1242,7 @@
   STATIC void	S_del_xpvfm(pTHX_ Parrot_PMC p);
   STATIC void	S_del_xpvmg(pTHX_ XPVMG* p);
   STATIC void	S_del_xpvlv(pTHX_ Parrot_PMC p);
  -STATIC void	S_del_xpvbm(pTHX_ XPVBM* p);
  +STATIC void	S_del_xpvbm(pTHX_ Parrot_PMC p);
   STATIC void	S_del_xrv(pTHX_ XRV* p);
   STATIC void	S_zero_xpvfm(pTHX_ SV *fm);
   STATIC void	S_zero_xpvcv(pTHX_ SV *cv);
  
  
  
  1.29      +8 -15     ponie/perl/sv.c
  
  Index: sv.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.c,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -w -r1.28 -r1.29
  --- sv.c	5 May 2004 21:02:02 -0000	1.28
  +++ sv.c	5 May 2004 21:57:52 -0000	1.29
  @@ -1076,7 +1076,6 @@
       
       
       lval = Parrot_PMC_new(PL_Parrot, type);
  -
       /*    PerlIO_printf(Perl_debug_log,
   		  "Create a new PMC %p\n",lval);
       */
  @@ -1115,28 +1114,21 @@
   
   /* grab a new struct xpvbm from the free list, allocating more if necessary */
   
  -STATIC XPVBM*
  +STATIC Parrot_PMC
   S_new_xpvbm(pTHX)
   {
  -    XPVBM* xpvbm;
  -    LOCK_SV_MUTEX;
  -    if (!PL_xpvbm_root)
  -	more_xpvbm();
  -    xpvbm = PL_xpvbm_root;
  -    PL_xpvbm_root = (XPVBM*)xpvbm->xpv_pv;
  -    UNLOCK_SV_MUTEX;
  -    return xpvbm;
  +  Parrot_Int  type = Parrot_PMC_typenum(PL_Parrot, "Perl5PVBM");
  +  Parrot_PMC  pvbm = Parrot_PMC_new(PL_Parrot, type);
  +  Parrot_register_pmc(PL_Parrot, pvbm);
  +  return MUMBLE(pvbm);
   }
   
   /* return a struct xpvbm to the free list */
   
   STATIC void
  -S_del_xpvbm(pTHX_ XPVBM *p)
  +S_del_xpvbm(pTHX_ Parrot_PMC p)
   {
  -    LOCK_SV_MUTEX;
  -    p->xpv_pv = (char*)PL_xpvbm_root;
  -    PL_xpvbm_root = p;
  -    UNLOCK_SV_MUTEX;
  +  Parrot_unregister_pmc(PL_Parrot, p);
   }
   
   /* allocate another arena's worth of struct xpvbm */
  @@ -1939,6 +1931,7 @@
   	break;
       case SVt_PVBM:
   	SvANY(sv) = new_XPVBM();
  +	SvPMC_on(sv);
   	SvPVX(sv)	= pv;
   	SvCUR(sv)	= cur;
   	SvLEN(sv)	= len;