On Sun, Aug 19, 2012 at 6:03 PM, Derick Rethans <der...@php.net> 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 don't see how it can cause problems (exception handling works after all), but I agree that it's better to avoid. Thinking about it again, there shouldn't be necessity for it. But right now I'm waiting for laruence to refactor the finally handling code. After that's done I'll see how to best implement it ;) Nikita -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php