On 19/08/12 17:03, Derick Rethans wrote:
On Sun, 19 Aug 2012, Nikita Popov wrote:

On Sun, Aug 19, 2012 at 6:28 AM, Stas Malyshev <smalys...@sugarcrm.com> wrote:
For PHP we would need to have some similar behavior. PHP's current
exception model is incompatible with GeneratorExitException
(because PHP does not have BaseExceptions). So what I'd probably do
instead is monkeypatch a ZEND_RETURN opcode at the current
execution position and
Patching opcodes is not a good idea, since opcodes could be cached,
and the cache can be shared between different processes.
Patching a single opcode should be okay, because it does not require
modification of the op_array. Only execute_data->opline has to be
changed (and the execute data is not shared). The exception handling
mechanism currently uses the same technique. It patches an
ZEND_HANDLE_EXCEPTION opcode into the current position.
Please do not modify opcodes for running code. That is a ginormous hack
and it *will* cause problems with some code.
I can't say much about this in particular, but using hacks and kludges to implement language features is probably not the best of ideas.
Derick



--
Andrew Faulds
http://ajf.me/


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

Reply via email to