On Tue, Feb 17, 2015 at 5:11 PM, Nikita Popov <nikita....@gmail.com> wrote:

> On Mon, Feb 16, 2015 at 4:47 PM, Dmitry Stogov <dmi...@zend.com> wrote:
>
>> Hi Nikita,
>>
>> it looks like a part of old implementation is not trivial with new AST
>> compiler.
>>
>> previously we translated assert(condition) into assert(condition,
>> "assert(condition)").
>> actually we just captured a part of input buffer and added missing string
>> argument.
>>
>> Is there a simple way to do the same now?
>>
>
> Not very simple, but we could store pointers/offsets to the start and end
> of the fcall in the ast node, similar to what is done with lex_pos for
> declarations: http://lxr.php.net/xref/PHP_TRUNK/Zend/zend_ast.h#177
>
> It would be nice if we could have precise offset information for all nodes
> (this is particularly valuable if the ast is exposed to userland), but that
> would increase memory usage during compilation, not sure if it's worthwhile.
>
>
>> It's possible to convert AST into string using recursive pretty-printer.
>> It's not a simple task itself, but it may be reused for other things.
>>
>
I went by this way... :)
It must be ready soo.


>
>> Joe, the rest (including zero-cost assert) is implemented at
>> https://github.com/php/php-src/pull/1088/files
>> 9 related tests are failed for now.
>>
>
> As this is implemented right now, it would require writing \assert() in
> order to be zero-cost. Maybe we should disallow redefinition of assert as a
> namespaced function, so we can always optimize this?
>

good catch.

Thanks.


>
> Nikita
>

Reply via email to