This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Make entertry a LOGOP, not BASEOP/UNOP
authorReini Urban <rurban@x-ray.at>
Sun, 12 Dec 2010 15:20:33 +0000 (16:20 +0100)
committerFather Chrysostomos <sprout@cpan.org>
Sun, 12 Dec 2010 20:32:51 +0000 (12:32 -0800)
The initial parse-time UNOP is upgraded at ck_eval to an LOGOP
- op_other holding the ptr to leavetry -
which causes problems at run-time B optype inspection.
The opclass info was always wrong, the Bytecode compiler broke with 5.12.

opcode.h
regen/opcode.pl

index 122c67f..e5454ff 100644 (file)
--- a/opcode.h
+++ b/opcode.h
@@ -1895,7 +1895,7 @@ EXTCONST U32 PL_opargs[] = {
        0x00000604,     /* hintseval */
        0x00001b40,     /* entereval */
        0x00001100,     /* leaveeval */
-       0x00000b40,     /* entertry */
+       0x00000340,     /* entertry */
        0x00000400,     /* leavetry */
        0x00001b00,     /* ghbyname */
        0x00011400,     /* ghbyaddr */
index bd3d55a..fe923ed 100755 (executable)
@@ -1049,7 +1049,7 @@ hintseval eval hints              ck_svconst      s$
 entereval      eval "string"           ck_eval         d%      S
 leaveeval      eval "string" exit      ck_null         1       S
 #evalonce      eval constant string    ck_null         d1      S
-entertry       eval {block}            ck_eval         d%      
+entertry       eval {block}            ck_eval         d|      
 leavetry       eval {block} exit       ck_null         @       
 
 # Get system info.