|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2007-10-13 22:04 UTC] gopalv@php.net
[2011-04-08 21:14 UTC] jani@php.net
-Status: Open
+Status: Feedback
-Package: Feature/Change Request
+Package: Scripting Engine problem
[2011-04-08 21:14 UTC] jani@php.net
[2011-04-11 08:58 UTC] gopalv@php.net
[2012-04-10 23:11 UTC] nikic@php.net
-Status: Feedback
+Status: Closed
-Assigned To:
+Assigned To: nikic
[2012-04-10 23:11 UTC] nikic@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 18:00:01 2025 UTC |
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