It's already done for strlen() - ZEND_STRLEN opcode (and few other
functions).
But it make no sense to convert all useful functions into opcodes.
We need an ability of fast parameter parsing anyway.

Thanks. Dmitry.



On Fri, Sep 5, 2014 at 5:55 AM, Stas Malyshev <smalys...@sugarcrm.com>
wrote:

> Hi!
>
> > As I understand correctly the only reason we have this discussion is
> > the performance impact of zpp with some functions, mainly
> > ZEND_FUNCTIONs. What prevents us to make them operators? That may
> > break things like  call_user_func("strlen", $arg), array_map and the
>
> There's also an issue that strlen("foo") may mean a different thing if
> you're in a namespace. So there may be a challenge to do this on
> compiler level, at least in the obvious way. But maybe there's a way
> around it, so theoretically we could make compiler treat strlen() as
> operator, or, more precisely, as an inline function looking like C
> function with parameters passed in registers. I.e., what I mean is
> skipping the whole parameter-passing and receiving altogether and just
> give it the slot where the variable lives. Of course, it would work only
> with strlen() and such which do not modify the argument and hardly do
> anything with it at all, and strlen would essentially have to have two
> implementations - one for "inline" usage and one for "normal" usage
> ($foo(), call_user_func(), etc.). But since 99% of actual usage would be
> "inline" it may still be beneficial.
>
> --
> Stanislav Malyshev, Software Architect
> SugarCRM: http://www.sugarcrm.com/
>

Reply via email to