"", "", "");
}
-STATIC void
+STATIC void *
S_more_bodies (pTHX_ void **arena_root, void **root, size_t size)
{
char *start;
start = next;
}
*(void **)start = 0;
+
+ return *root;
}
#define more_thingy(TYPE,lctype) \
{
NV* xnv;
LOCK_SV_MUTEX;
- if (!PL_xnv_root)
- more_xnv();
- xnv = PL_xnv_root;
+ xnv = PL_xnv_root ? PL_xnv_root : more_xnv();
PL_xnv_root = *(NV**)xnv;
UNLOCK_SV_MUTEX;
return (XPVNV*)((char*)xnv - STRUCT_OFFSET(XPVNV, xnv_nv));
{
xpv_allocated* xpv;
LOCK_SV_MUTEX;
- if (!PL_xpv_root)
- more_xpv();
- xpv = PL_xpv_root;
+ xpv = PL_xpv_root ? PL_xpv_root : more_xpv();
PL_xpv_root = *(xpv_allocated**)xpv;
UNLOCK_SV_MUTEX;
/* If xpv_allocated is the same structure as XPV then the two OFFSETs
{
xpviv_allocated* xpviv;
LOCK_SV_MUTEX;
- if (!PL_xpviv_root)
- more_xpviv();
- xpviv = PL_xpviv_root;
+ xpviv = PL_xpviv_root ? PL_xpviv_root : more_xpviv();
PL_xpviv_root = *(xpviv_allocated**)xpviv;
UNLOCK_SV_MUTEX;
/* If xpviv_allocated is the same structure as XPVIV then the two OFFSETs
{
XPVNV* xpvnv;
LOCK_SV_MUTEX;
- if (!PL_xpvnv_root)
- more_xpvnv();
- xpvnv = PL_xpvnv_root;
+ xpvnv = PL_xpvnv_root ? PL_xpvnv_root : more_xpvnv();
PL_xpvnv_root = *(XPVNV**)xpvnv;
UNLOCK_SV_MUTEX;
return xpvnv;
{
XPVCV* xpvcv;
LOCK_SV_MUTEX;
- if (!PL_xpvcv_root)
- more_xpvcv();
- xpvcv = PL_xpvcv_root;
+ xpvcv = PL_xpvcv_root ? PL_xpvcv_root : more_xpvcv();
PL_xpvcv_root = *(XPVCV**)xpvcv;
UNLOCK_SV_MUTEX;
return xpvcv;
{
xpvav_allocated* xpvav;
LOCK_SV_MUTEX;
- if (!PL_xpvav_root)
- more_xpvav();
- xpvav = PL_xpvav_root;
+ xpvav = PL_xpvav_root ? PL_xpvav_root : more_xpvav();
PL_xpvav_root = *(xpvav_allocated**)xpvav;
UNLOCK_SV_MUTEX;
return (XPVAV*)((char*)xpvav - STRUCT_OFFSET(XPVAV, xav_fill)
{
xpvhv_allocated* xpvhv;
LOCK_SV_MUTEX;
- if (!PL_xpvhv_root)
- more_xpvhv();
- xpvhv = PL_xpvhv_root;
+ xpvhv = PL_xpvhv_root ? PL_xpvhv_root : more_xpvhv();
PL_xpvhv_root = *(xpvhv_allocated**)xpvhv;
UNLOCK_SV_MUTEX;
return (XPVHV*)((char*)xpvhv - STRUCT_OFFSET(XPVHV, xhv_fill)
{
XPVMG* xpvmg;
LOCK_SV_MUTEX;
- if (!PL_xpvmg_root)
- more_xpvmg();
- xpvmg = PL_xpvmg_root;
+ xpvmg = PL_xpvmg_root ? PL_xpvmg_root : more_xpvmg();
PL_xpvmg_root = *(XPVMG**)xpvmg;
UNLOCK_SV_MUTEX;
return xpvmg;
{
XPVGV* xpvgv;
LOCK_SV_MUTEX;
- if (!PL_xpvgv_root)
- more_xpvgv();
- xpvgv = PL_xpvgv_root;
+ xpvgv = PL_xpvgv_root ? PL_xpvgv_root : more_xpvgv();
PL_xpvgv_root = *(XPVGV**)xpvgv;
UNLOCK_SV_MUTEX;
return xpvgv;
{
XPVLV* xpvlv;
LOCK_SV_MUTEX;
- if (!PL_xpvlv_root)
- more_xpvlv();
- xpvlv = PL_xpvlv_root;
+ xpvlv = PL_xpvlv_root ? PL_xpvlv_root : more_xpvlv();
PL_xpvlv_root = *(XPVLV**)xpvlv;
UNLOCK_SV_MUTEX;
return xpvlv;
{
XPVBM* xpvbm;
LOCK_SV_MUTEX;
- if (!PL_xpvbm_root)
- more_xpvbm();
- xpvbm = PL_xpvbm_root;
+ xpvbm = PL_xpvbm_root ? PL_xpvbm_root : more_xpvbm();
PL_xpvbm_root = *(XPVBM**)xpvbm;
UNLOCK_SV_MUTEX;
return xpvbm;