This is a live mirror of the Perl 5 development currently hosted at
https://github.com/perl/perl5
https://perl5.git.perl.org
/
perl5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
deparse-skips.txt: remove cpan/File-Path/t/taint.t
[perl5.git]
/
pp_hot.c
diff --git
a/pp_hot.c
b/pp_hot.c
index
c614d29
..
7c98c90
100644
(file)
--- a/
pp_hot.c
+++ b/
pp_hot.c
@@
-360,7
+360,6
@@
PP(pp_padrange)
dSP;
PADOFFSET base = PL_op->op_targ;
int count = (int)(PL_op->op_private) & OPpPADRANGE_COUNTMASK;
dSP;
PADOFFSET base = PL_op->op_targ;
int count = (int)(PL_op->op_private) & OPpPADRANGE_COUNTMASK;
- int i;
if (PL_op->op_flags & OPf_SPECIAL) {
/* fake the RHS of my ($x,$y,..) = @_ */
PUSHMARK(SP);
if (PL_op->op_flags & OPf_SPECIAL) {
/* fake the RHS of my ($x,$y,..) = @_ */
PUSHMARK(SP);
@@
-370,6
+369,8
@@
PP(pp_padrange)
/* note, this is only skipped for compile-time-known void cxt */
if ((PL_op->op_flags & OPf_WANT) != OPf_WANT_VOID) {
/* note, this is only skipped for compile-time-known void cxt */
if ((PL_op->op_flags & OPf_WANT) != OPf_WANT_VOID) {
+ int i;
+
EXTEND(SP, count);
PUSHMARK(SP);
for (i = 0; i <count; i++)
EXTEND(SP, count);
PUSHMARK(SP);
for (i = 0; i <count; i++)
@@
-381,6
+382,8
@@
PP(pp_padrange)
(base << (OPpPADRANGE_COUNTSHIFT + SAVE_TIGHT_SHIFT))
| (count << SAVE_TIGHT_SHIFT)
| SAVEt_CLEARPADRANGE);
(base << (OPpPADRANGE_COUNTSHIFT + SAVE_TIGHT_SHIFT))
| (count << SAVE_TIGHT_SHIFT)
| SAVEt_CLEARPADRANGE);
+ int i;
+
STATIC_ASSERT_STMT(OPpPADRANGE_COUNTMASK + 1 == (1 << OPpPADRANGE_COUNTSHIFT));
assert((payload >> (OPpPADRANGE_COUNTSHIFT+SAVE_TIGHT_SHIFT))
== (Size_t)base);
STATIC_ASSERT_STMT(OPpPADRANGE_COUNTMASK + 1 == (1 << OPpPADRANGE_COUNTSHIFT));
assert((payload >> (OPpPADRANGE_COUNTSHIFT+SAVE_TIGHT_SHIFT))
== (Size_t)base);
@@
-1039,7
+1042,7
@@
PP(pp_rv2av)
|| ( PL_op->op_private & OPpMAYBE_TRUEBOOL
&& block_gimme() == G_VOID ))
&& (!SvRMAGICAL(sv) || !mg_find(sv, PERL_MAGIC_tied)))
|| ( PL_op->op_private & OPpMAYBE_TRUEBOOL
&& block_gimme() == G_VOID ))
&& (!SvRMAGICAL(sv) || !mg_find(sv, PERL_MAGIC_tied)))
- SETs(HvUSEDKEYS(
sv) ? &PL_sv_yes : sv_2mortal(newSViv(0))
);
+ SETs(HvUSEDKEYS(
MUTABLE_HV(sv)) ? &PL_sv_yes : &PL_sv_no
);
else if (gimme == G_SCALAR) {
dTARG;
TARG = Perl_hv_scalar(aTHX_ MUTABLE_HV(sv));
else if (gimme == G_SCALAR) {
dTARG;
TARG = Perl_hv_scalar(aTHX_ MUTABLE_HV(sv));
@@
-1182,6
+1185,7
@@
S_aassign_copy_common(pTHX_ SV **firstlelem, SV **lastlelem,
assert(svr);
if (UNLIKELY(SvFLAGS(svr) & (SVf_BREAK|SVs_GMG) || copy_all)) {
assert(svr);
if (UNLIKELY(SvFLAGS(svr) & (SVf_BREAK|SVs_GMG) || copy_all)) {
+ U32 brk = (SvFLAGS(svr) & SVf_BREAK);
#ifdef DEBUGGING
if (fake) {
#ifdef DEBUGGING
if (fake) {
@@
-1217,7
+1221,7
@@
S_aassign_copy_common(pTHX_ SV **firstlelem, SV **lastlelem,
/* ... but restore afterwards in case it's needed again,
* e.g. ($a,$b,$c) = (1,$a,$a)
*/
/* ... but restore afterwards in case it's needed again,
* e.g. ($a,$b,$c) = (1,$a,$a)
*/
- SvFLAGS(svr) |=
SVf_BREAK
;
+ SvFLAGS(svr) |=
brk
;
}
if (!lcount)
}
if (!lcount)
@@
-1776,7
+1780,7
@@
PP(pp_aassign)
default:
if (!SvIMMORTAL(lsv)) {
default:
if (!SvIMMORTAL(lsv)) {
- sv_set
sv(lsv, &PL_sv_undef
);
+ sv_set
_undef(lsv
);
SvSETMAGIC(lsv);
*relem++ = lsv;
}
SvSETMAGIC(lsv);
*relem++ = lsv;
}
@@
-2883,6
+2887,8
@@
PP(pp_iter)
It has SvPVX of "" and SvCUR of 0, which is what we want. */
STRLEN maxlen = 0;
const char *max = SvPV_const(end, maxlen);
It has SvPVX of "" and SvCUR of 0, which is what we want. */
STRLEN maxlen = 0;
const char *max = SvPV_const(end, maxlen);
+ if (DO_UTF8(end) && IN_UNI_8_BIT)
+ maxlen = sv_len_utf8_nomg(end);
if (UNLIKELY(SvNIOK(cur) || SvCUR(cur) > maxlen))
goto retno;
if (UNLIKELY(SvNIOK(cur) || SvCUR(cur) > maxlen))
goto retno;
@@
-4128,8
+4134,8
@@
PP(pp_entersub)
items = SP - MARK;
if (UNLIKELY(items - 1 > AvMAX(av))) {
SV **ary = AvALLOC(av);
items = SP - MARK;
if (UNLIKELY(items - 1 > AvMAX(av))) {
SV **ary = AvALLOC(av);
- AvMAX(av) = items - 1;
Renew(ary, items, SV*);
Renew(ary, items, SV*);
+ AvMAX(av) = items - 1;
AvALLOC(av) = ary;
AvARRAY(av) = ary;
}
AvALLOC(av) = ary;
AvARRAY(av) = ary;
}
@@
-4385,8
+4391,6
@@
Perl_vivify_ref(pTHX_ SV *sv, U32 to_what)
return sv;
}
return sv;
}
-extern char PL_isa_DOES[];
-
PERL_STATIC_INLINE HV *
S_opmethod_stash(pTHX_ SV* meth)
{
PERL_STATIC_INLINE HV *
S_opmethod_stash(pTHX_ SV* meth)
{
@@
-4465,7
+4469,7
@@
S_opmethod_stash(pTHX_ SV* meth)
&& SvOBJECT(ob))))
{
Perl_croak(aTHX_ "Can't call method \"%" SVf "\" on unblessed reference",
&& SvOBJECT(ob))))
{
Perl_croak(aTHX_ "Can't call method \"%" SVf "\" on unblessed reference",
- SVfARG((SvPVX(meth) == PL_isa_DOES)
+ SVfARG((SvP
OK(meth) && SvP
VX(meth) == PL_isa_DOES)
? newSVpvs_flags("DOES", SVs_TEMP)
: meth));
}
? newSVpvs_flags("DOES", SVs_TEMP)
: meth));
}