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. Derick -- http://derickrethans.nl | http://xdebug.org Like Xdebug? Consider a donation: http://xdebug.org/donate.php twitter: @derickr and @xdebug -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php