From a4256772dd403c7ce44dc3a7f7a15da1982f8905 Mon Sep 17 00:00:00 2001 From: Reini Urban Date: Sun, 12 Dec 2010 16:20:33 +0100 Subject: [PATCH] Make entertry a LOGOP, not BASEOP/UNOP 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 | 2 +- regen/opcode.pl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/opcode.h b/opcode.h index 122c67f..e5454ff 100644 --- 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 */ diff --git a/regen/opcode.pl b/regen/opcode.pl index bd3d55a..fe923ed 100755 --- a/regen/opcode.pl +++ b/regen/opcode.pl @@ -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. -- 2.7.4