This reduces the allocated size on Windows, where an
extra header is added to what gets allocated. See
<https://rt.perl.org/Ticket/Display.html?id=15667#txn-1309657>.
#define GP_av_ix (SVp << 16) | STRUCT_OFFSET(struct gp, gp_av)
#define GP_form_ix (SVp << 16) | STRUCT_OFFSET(struct gp, gp_form)
#define GP_egv_ix (SVp << 16) | STRUCT_OFFSET(struct gp, gp_egv)
-#define GP_line_ix (line_tp << 16) | STRUCT_OFFSET(struct gp, gp_line)
void
SV(gv)
AV = GP_av_ix
FORM = GP_form_ix
EGV = GP_egv_ix
- LINE = GP_line_ix
PREINIT:
GP *gp;
char *ptr;
case U32p:
ret = sv_2mortal(newSVuv(*((U32*)ptr)));
break;
- case line_tp:
- ret = sv_2mortal(newSVuv(*((line_t *)ptr)));
- break;
default:
croak("Illegal alias 0x%08x for B::*SV", (unsigned)ix);
}
ST(0) = ret;
XSRETURN(1);
+U32
+GvLINE(gv)
+ B::GV gv
+
void
FILEGV(gv)
B::GV gv
AV * gp_av; /* array value */
CV * gp_form; /* format value */
GV * gp_egv; /* effective gv, if *glob */
- line_t gp_line; /* line first declared at (for -w) */
- U32 gp_flags;
+ U32 gp_line:31; /* line first declared at (for -w) */
+ U32 gp_flags:1;
HEK * gp_file_hek; /* file first declared in (for -w) */
};