#42958 [Opn]: [PATCH] Heredoc string constant folding
ID: 42958
User updated by: gopalv@php.net
Reported By: gopalv@php.net
Status: Open
Bug Type: Feature/Change Request
PHP Version: 5CVS-2007-10-13 (CVS)
New Comment:
Find the patch/diff at
http://t3.dotgnu.info/code/zend_add_string.patch
Previous Comments:
------------------------------------------------------------------------
[2007-10-13 22:00:51] gopalv@php.net
Description:
------------
Heredocs in php generates too many opcodes.
The tokenizer seems to be hooked directly into the zend_do_add_string()
call which creates a new opcode irrespective of previous opcode, where
it could do better to just check whether data can be piggy-backed onto
the previous opcode.
Reproduce code:
---------------
<?php
echo <<<EOF
foo bar is right
EOF;
?>
php52 -dvld.active heredoc.php
Expected result:
----------------
filename: /tmp/heredoc.php
function name: (null)
number of ops: 5
line # op fetch ext operands
-------------------------------------------------------------------------------
4 0 INIT_STRING ~0
1 ADD_STRING ~0, ~0,
'heredocs+are+fubar'
5 2 ECHO ~0
7 3 RETURN 1
4 ZEND_HANDLE_EXCEPTION
Actual result:
--------------
filename: /tmp/heredoc.php
function name: (null)
number of ops: 10
line # op fetch ext operands
-------------------------------------------------------------------------------
4 0 INIT_STRING ~0
1 ADD_STRING ~0, ~0,
'heredocs'
2 ADD_STRING ~0, ~0,
'+'
3 ADD_STRING ~0, ~0,
'are'
4 ADD_STRING ~0, ~0,
'+'
5 ADD_STRING ~0, ~0,
'fubar'
5 6 ADD_STRING ~0, ~0,
''
7 ECHO ~0
7 8 RETURN 1
9 ZEND_HANDLE_EXCEPTION
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=42958&edit=1
Thread (5 messages)