> About the patch, the zval_*_p() functions don't really need to exist..
> they can be macros as well.

As I said, if those were macros, it would be very difficult to squeeze
more than one statement into them.

Consider the usage in Zend/zend_execute.c:

        if (!Z_DELREF_P(z)) {
                Z_SET_REFCOUNT_P(z, 1);

Suppose I wanted to do the following in Z_DELREF_P(z):
"some_function(z); z->refcount--;" Defining the macro as that would
break that section of the code. Also, suppose I have code like this:

       if(some_condition) {
            Z_DELREF_P(z);

Having multiple statements in Z_DELREF_P will also break that code. It
seems to me inline functions are the best solution (the second best
solution would be to put braces around the statements in the define,
but then no return value would be possible).

> (and the online keyword is also handled by
> the Zend engine)

Do you mean ZEND_VM_ALWAYS_INLINE? There is a ZEND_VM_ALWAYS_INLINE
#define that does something similar to my "always_inline". However, it
doesn't work for Microsoft compilers, and since it doesn't include the
"inline" keyword within its definition, I'd have to change the meaning
of it in order to fix that. As far as I can tell, it's not referenced
by any code at all, but that still might be a bad idea.

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

Reply via email to