Req #42958 [Fbk->Csd]: [PATCH] Heredoc string constant folding
| From: | nikic@php.net | Date: | Tue, 10 Apr 2012 23:11:36 +0000 |
| Subject: | Req #42958 [Fbk->Csd]: [PATCH] Heredoc string constant folding | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-169417@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=42958&edit=1
ID: 42958
Updated by: nikic@php.net
Reported by: gopalv@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] gopalv@php.net
New location for the same patch
http://notmysock.org/code/zend_add_string_ver2.patch
------------------------------------------------------------------------
[2011-04-08 21:14:49] jani@php.net
Has this patch been applied yet..?
------------------------------------------------------------------------
[2007-10-13 22:04:35] gopalv@php.net
Find the patch/diff at
http://t3.dotgnu.info/code/zend_add_string.patch
------------------------------------------------------------------------
[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 https://bugs.php.net/bug.php?id=42958&edit=1