Edit report at https://bugs.php.net/bug.php?id=42958&edit=1
ID: 42958 Updated by: ni...@php.net Reported by: gop...@php.net Summary: [PATCH] Heredoc string constant folding -Status: Feedback +Status: Closed Type: Feature/Change Request Package: Scripting Engine problem PHP Version: 5CVS-2007-10-13 (CVS) -Assigned To: +Assigned To: nikic Block user comment: N Private report: N New Comment: Closing as this has already long been fixed. Previous Comments: ------------------------------------------------------------------------ [2011-04-11 08:58:08] gop...@php.net New location for the same patch http://notmysock.org/code/zend_add_string_ver2.patch ------------------------------------------------------------------------ [2011-04-08 21:14:49] j...@php.net Has this patch been applied yet..? ------------------------------------------------------------------------ [2007-10-13 22:04:35] gop...@php.net Find the patch/diff at http://t3.dotgnu.info/code/zend_add_string.patch ------------------------------------------------------------------------ [2007-10-13 22:00:51] gop...@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 https://bugs.php.net/bug.php?id=42958&edit=1