Re: Parameter parsing for zval type?
| From: | Dmitry Stogov | Date: | Tue, 11 Aug 2015 19:02:54 +0000 |
| Subject: | Re: Parameter parsing for zval type? | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-87713@lists.php.net to get a copy of this message | ||
Hi Matt,
On Tue, Aug 11, 2015 at 9:00 PM, Matt Wilmas <php_lists@realplain.com>
wrote:
> Hi again,
>
> ----- Original Message -----
> From: "Matt Wilmas"
> Sent: Tuesday, August 11, 2015
>
> Hi Dmitry, all,
>>
>> Help me understand this. :-) It's been more puzzling to me recently
>> since just coming to the part of optimizing traditional ZPP (sharing part
>> with FAST_ZPP...).
>>
>> With the FAST_ZPP inline macros, why is there a Z_PARAM_ZVAL and
>> Z_PARAM_ZVAL_DEREF? It seems the zpp 'z' specifier is always like
>> ZVAL_DEREF, right? So Z_PARAM_ZVAL has no equivalent in traditional zpp.
>> At the very least, this would seem to suggest a difference in
>> behavior/functionality. But I haven't found any (or bug reports, if tests
>> didn't cover something).
>>
>
> Oops! No, plain zpp 'z' does not have ZVAL_DEREF() applied, of course.
> But it's also using zend_parse_arg_zval_DEREF(), which is wrong... (in the
> case of "z!" with reference to IS_NULL?).
Sorry. I don't understand you without context. If you think something is
wrong in current implementation - please, demonstrate it with test cases,
examples or code references. If you talk about your code, then show it.
Thanks. Dmitry.
> At first I assumed Z_PARAM_ZVAL would keep IS_REFERENCE types, since it
>> doesn't do ZVAL_DEREF(), but this obviously isn't happening with
>> references. (It seems they're getting DEREF()'d in VM when sending params,
>> I guess...?)
>>
>
> Still stands though that IS_REFERENCE doesn't seem to get through anyway
> (and would break functions). Is any ZVAL_DEREF() *not* necessary?
>
>
> - Matt
>