Req #42958 [Fbk->Csd]: [PATCH] Heredoc string constant folding

From: 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

« previous php.bugs (#169417) next »