[php-src] Issue #8140: First Class Callable Syntax issue with OpCache

From: Date: Tue, 22 Feb 2022 23:34:47 +0000
Subject: [php-src] Issue #8140: First Class Callable Syntax issue with OpCache
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-239981@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/8140 Comment Author: Girgias Using `opcache.opt_debug_level=0x20000 it seems in the namespace case a DO_UCALL is generated instead of a CALLABLE_CONVERT` which seems to break down the optimizer. In global namespace: ``` $_main: ; (lines=7, args=0, vars=1, tmps=1) ; (after optimizer) ; /home/girgias/Dev/php-src/ext/opcache/tests/gh8140.php:1-14 0000 INIT_FCALL 0 144 string("greeter") 0001 T1 = CALLABLE_CONVERT 0002 ASSIGN CV0($mycallable) T1 0003 INIT_DYNAMIC_CALL 1 CV0($mycallable) 0004 SEND_VAL_EX string("I should work") 1 0005 DO_FCALL 0006 RETURN int(1) greeter: ; (lines=6, args=1, vars=1, tmps=3) ; (after optimizer) ; /home/girgias/Dev/php-src/ext/opcache/tests/gh8140.php:5-7 0000 CV0($name) = RECV 1 0001 T2 = ROPE_INIT 3 string("Hello, ") 0002 T2 = ROPE_ADD 1 T2 CV0($name) 0003 T1 = ROPE_END 2 T2 string("!") 0004 ECHO T1 0005 RETURN null LIVE RANGES: 2: 0001 - 0003 (rope) ``` In namespace: ``` $_main: ; (lines=7, args=0, vars=1, tmps=1) ; (after optimizer) ; /home/girgias/Dev/php-src/ext/opcache/tests/gh8140.php:1-14 0000 INIT_FCALL 0 144 string("test\greeter") 0001 T1 = DO_UCALL 0002 ASSIGN CV0($mycallable) T1 0003 INIT_DYNAMIC_CALL 1 CV0($mycallable) 0004 SEND_VAL_EX string("I should work") 1 0005 DO_FCALL 0006 RETURN int(1) Test\greeter: ; (lines=6, args=1, vars=1, tmps=3) ; (after optimizer) ; /home/girgias/Dev/php-src/ext/opcache/tests/gh8140.php:5-7 0000 CV0($name) = RECV 1 0001 T2 = ROPE_INIT 3 string("Hello, ") 0002 T2 = ROPE_ADD 1 T2 CV0($name) 0003 T1 = ROPE_END 2 T2 string("!") 0004 ECHO T1 0005 RETURN null LIVE RANGES: 2: 0001 - 0003 (rope) ```

« previous php.bugs (#239981) next »