From: Nicholas Clark Date: Mon, 25 Jan 2010 13:30:16 +0000 (+0000) Subject: Reinstate space optimisations to SV body structures. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=889d28b2ea2c17517fae97cf4a92bd3563aaa74f;p=p5sagit%2Fp5-mst-13.2.git Reinstate space optimisations to SV body structures. --- diff --git a/sv.c b/sv.c index 016a142..3b332f2 100644 --- a/sv.c +++ b/sv.c @@ -921,21 +921,39 @@ static const struct body_details bodies_by_type[] = { /* 8 bytes on most ILP32 with IEEE doubles */ { sizeof(XPV), - copy_length(XPV, xpv_len), - 0, + copy_length(XPV, xpv_len) - STRUCT_OFFSET(XPV, xpv_cur), + + STRUCT_OFFSET(XPV, xpv_cur), SVt_PV, FALSE, NONV, HASARENA, - FIT_ARENA(0, sizeof(XPV)) }, + FIT_ARENA(0, sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur)) }, +#if 2 *PTRSIZE <= IVSIZE /* 12 */ { sizeof(XPVIV), + copy_length(XPVIV, xiv_u) - STRUCT_OFFSET(XPV, xpv_cur), + + STRUCT_OFFSET(XPV, xpv_cur), + SVt_PVIV, FALSE, NONV, HASARENA, + FIT_ARENA(0, sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur)) }, + /* 12 */ +#else + { sizeof(XPVIV), copy_length(XPVIV, xiv_u), 0, SVt_PVIV, FALSE, NONV, HASARENA, - FIT_ARENA(0, sizeof(XPV)) }, + FIT_ARENA(0, sizeof(XPVIV)) }, +#endif +#if (2 *PTRSIZE <= IVSIZE) && (2 *PTRSIZE <= NVSIZE) + /* 20 */ + { sizeof(XPVNV), + copy_length(XPVNV, xnv_u) - STRUCT_OFFSET(XPV, xpv_cur), + + STRUCT_OFFSET(XPV, xpv_cur), + SVt_PVNV, FALSE, HADNV, HASARENA, + FIT_ARENA(0, sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur)) }, +#else /* 20 */ { sizeof(XPVNV), copy_length(XPVNV, xnv_u), 0, SVt_PVNV, FALSE, HADNV, HASARENA, FIT_ARENA(0, sizeof(XPVNV)) }, +#endif /* 28 */ { sizeof(XPVMG), copy_length(XPVMG, xnv_u), 0, SVt_PVMG, FALSE, HADNV,