Hi Matt,
On Tue, Aug 11, 2015 at 9:00 PM, Matt Wilmas <php_li...@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 >