Bug->Req #80350 [Asn]: zend_set_user_opcode_handler not work

From: Date: Tue, 17 Nov 2020 21:41:13 +0000
Subject: Bug->Req #80350 [Asn]: zend_set_user_opcode_handler not work
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-230418@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80350&edit=1 ID: 80350 Updated by: dmitry@php.net Reported by: dreamsxin at qq dot com Summary: zend_set_user_opcode_handler not work Status: Assigned -Type: Bug +Type: Feature/Change Request Package: JIT Operating System: Linux PHP Version: 8.0.0RC3 Assigned To: dmitry Block user comment: N Private report: N New Comment: I think we shouldn't support user opcode handlers in JIT. I don't see a way to handle all possible return values (e.g ZEND_USER_OPCODE_DISPATCH) and ability to jump (change EX(opline)). In general, for each user opcode handler, we may transfer control to interpreter. Previous Comments: ------------------------------------------------------------------------ [2020-11-17 09:43:48] nikic@php.net @dmitry: I'm wondering whether we should respect user opcode handlers in JIT. It seems like it should be possible, but maybe user opcode handlers break assumptions by type inference etc. ------------------------------------------------------------------------ [2020-11-12 03:48:23] dreamsxin at qq dot com Like this extension, https://github.com/nikic/scalar_objects When disable opcache work fine. But enable can't work. ------------------------------------------------------------------------ [2020-11-12 03:46:49] dreamsxin at qq dot com run php test.php Normally, should be output : hello Hook ZEND_INIT_METHOD_CALL, call zend_printf("hello\n"); But, it not work. ------------------------------------------------------------------------ [2020-11-12 03:40:23] danack@php.net Hi Dreamsxin, I find it hard to understand this bug report. I can see you are using an extension with the name Phalcon - but my understanding is that Phalcon itself is not compatible with PHP 8 yet: https://github.com/phalcon/cphalcon/issues/15186 It may be better to talk to the Phalcon people and explain what problem you're having with them, or just wait for Phalcon to support PHP 8. Otherwise, we would probably need more details of what you are attemting, why you think it should work, and why you think it's a problem to be fixed in PHP. ------------------------------------------------------------------------ [2020-11-12 03:25:58] dreamsxin at qq dot com ```c static int my_method_call_handler(zend_execute_data *execute_data) { zend_printf("hello\n"); // <-- No call return ZEND_USER_OPCODE_DISPATCH; } static PHP_MINIT_FUNCTION(phalcon) { zend_set_user_opcode_handler(ZEND_INIT_METHOD_CALL, my_method_call_handler); } ``` ```php $class = "string"; $class->test(); ``` php.ini: ```ini opcache.enable=1 ; 启用 Zend OPCache,在 CLI 模式下 opcache.enable_cli=1 ``` no output. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=80350 -- Edit this bug report at https://bugs.php.net/bug.php?id=80350&edit=1

« previous php.bugs (#230418) next »