ID: 42958 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] 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] [EMAIL PROTECTED] 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