After discussion with Dmitry, I update my RFC. The RFC url is here

https://wiki.php.net/rfc/zend-vm-pause-api

And I propose to introduce a new interrupt type to make vm pause-and-return, 
not pause-and-continue.

As mentioned by Dmitry, features like Fiber could be implemented by current 
vm_interrupt implementation, theoretically. By using it, even init a function 
call will need to make our own op array.

So I propose this patch.

Thank you.


> On 1 Nov 2017, at 17:13, Haitao Lv <i...@lvht.net> wrote:
> 
> Would it proper to introduce the following path?
> 
> diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
> index 9bed9f86bb..cf0935df74 100644
> --- a/Zend/zend_vm_def.h
> +++ b/Zend/zend_vm_def.h
> @@ -8920,13 +8920,19 @@ ZEND_VM_DEFINE_OP(137, ZEND_OP_DATA);
> 
> ZEND_VM_HELPER(zend_interrupt_helper, ANY, ANY)
> {
> +       int8_t interrupt_type = EG(vm_interrupt);
> +
>        EG(vm_interrupt) = 0;
>        if (EG(timed_out)) {
>                zend_timeout(0);
>        } else if (zend_interrupt_function) {
>                SAVE_OPLINE();
>                zend_interrupt_function(execute_data);
> -               ZEND_VM_ENTER();
> +               if (interrupt_type == 2) {
> +                       ZEND_VM_RETURN();
> +               } else {
> +                       ZEND_VM_ENTER();
> +               }
>        }
>        ZEND_VM_CONTINUE();
> }
> 
>> On 1 Nov 2017, at 16:54, Haitao Lv <i...@lvht.net> wrote:
>> 
>> It seems that set EG(vm_interrupt) to 1 could not stop the vm execution but 
>> only execute the interrupt_function and continue the current execution.
>> 
>> However, my RFC propose to stop the current execution.
>> 
>>> On 1 Nov 2017, at 16:07, Dmitry Stogov <dmi...@zend.com> wrote:
>>> 
>>> Hi,
>>> 
>>> It should be possible do similar things using EG(vm_interrupt) and 
>>> zend_interrupt_function() callback (introduced in php-7.1)
>>> ext/pcntl implements asynchronous signal handling using this.
>>> 
>>> Thanks. Dmitry.
>>> From: Haitao Lv <i...@lvht.net>
>>> Sent: Wednesday, November 1, 2017 4:19:07 AM
>>> To: PHP Internals
>>> Subject: [PHP-DEV] RFC - Zend VM Pause API 
>>> 
>>> Hi, internals,
>>> 
>>> I propose to introduce a new zend vm pause api, and here is the RPF
>>> 
>>> https://wiki.php.net/rfc/zend-vm-pause-api 
>>> <https://wiki.php.net/rfc/zend-vm-pause-api>
>>> 
>>> Please gave your comment.
>>> 
>>> Thank you.
>>> 
>>> 
>>> 
>>> -- 
>>> PHP Internals - PHP Runtime Development Mailing List
>>> To unsubscribe, visit: http://www.php.net/unsub.php 
>>> <http://www.php.net/unsub.php>
> 
> 
> 
> 
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php




--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to