diff options
author | Father Chrysostomos <sprout@cpan.org> | 2015-03-26 12:44:57 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2015-03-26 14:28:50 -0700 |
commit | 21639bf469a072bd10798e16db95edc313588cbb (patch) | |
tree | 1f032139a65d55b88bc52b2cd59d8b81a217cd21 /regen/opcodes | |
parent | 3a069a007de5155703648b15035bd71689dd5290 (diff) | |
download | perl-21639bf469a072bd10798e16db95edc313588cbb.tar.gz |
[perl #123790] Disable targlex for some ops
The targlex optimisation (which makes the op write directly to the
lexical in $lexical = some op, skipping the assignment) does not take
typeglob assignment into account. Since this optimisation has been
enabled for some ops in 5.21.x, we actually have a regression. So
this commit disables the optimisation once more for ops that did not
have it on in 5.20. This is a temporary fix, until we find a better
overall fix. Other ops that still have the optimisation are buggy,
but no more buggy than in 5.20.
Diffstat (limited to 'regen/opcodes')
-rw-r--r-- | regen/opcodes | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/regen/opcodes b/regen/opcodes index 8bbd557036..8d07eedc24 100644 --- a/regen/opcodes +++ b/regen/opcodes @@ -127,7 +127,7 @@ divide division (/) ck_null IfsT2 S S i_divide integer division (/) ck_null ifsT2 S S modulo modulus (%) ck_null IifsT2 S S i_modulo integer modulus (%) ck_null ifsT2 S S -repeat repeat (x) ck_repeat fmT2 L S +repeat repeat (x) ck_repeat fmt2 L S add addition (+) ck_null IfsT2 S S i_add integer addition (+) ck_null ifsT2 S S @@ -152,7 +152,7 @@ i_eq integer eq (==) ck_null ifs2 S S< ne numeric ne (!=) ck_null Iifs2 S S< i_ne integer ne (!=) ck_null ifs2 S S< ncmp numeric comparison (<=>) ck_null Iifst2 S S< -i_ncmp integer comparison (<=>) ck_null ifsT2 S S< +i_ncmp integer comparison (<=>) ck_null ifst2 S S< slt string lt ck_null ifs2 S S sgt string gt ck_null ifs2 S S @@ -160,7 +160,7 @@ sle string le ck_null ifs2 S S sge string ge ck_null ifs2 S S seq string eq ck_null ifs2 S S sne string ne ck_null ifs2 S S -scmp string comparison (cmp) ck_null ifsT2 S S +scmp string comparison (cmp) ck_null ifst2 S S bit_and bitwise and (&) ck_bitop fst2 S S| bit_xor bitwise xor (^) ck_bitop fst2 S S| @@ -175,7 +175,7 @@ sbit_or string bitwise or (|) ck_bitop fst2 S S| negate negation (-) ck_null Ifst1 S i_negate integer negation (-) ck_null ifst1 S not not ck_null ifs1 S -complement 1's complement (~) ck_bitop fsT1 S +complement 1's complement (~) ck_bitop fst1 S ncomplement numeric 1's complement (~) ck_bitop fsT1 S # scomplement uses ck_bitop only for the experimental warning. Once the # warning is gone, this can change to ck_null. @@ -205,7 +205,7 @@ abs abs ck_fun fsTu% S? length length ck_length ifsTu% S? substr substr ck_substr st@ S S S? S? -vec vec ck_fun isT@ S S S +vec vec ck_fun ist@ S S S index index ck_index isT@ S S S? rindex rindex ck_index isT@ S S S? @@ -254,7 +254,7 @@ multideref array or hash lookup ck_null ds+ unpack unpack ck_fun u@ S S? pack pack ck_fun fmst@ S L -split split ck_split T@ S S S +split split ck_split t@ S S S join join or string ck_join fmst@ S L # List operators. |