Bug #55673 [NEW]: Compiler creates (unused) compiled variables for self::$foo

From: Date: Mon, 12 Sep 2011 13:47:48 +0000
Subject: Bug #55673 [NEW]: Compiler creates (unused) compiled variables for self::$foo
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-163466@lists.php.net to get a copy of this message
From:             derick
Operating system: *
PHP version:      5.3SVN-2011-09-12 (SVN)
Package:          Scripting Engine problem
Bug Type:         Bug
Bug description:Compiler creates (unused) compiled variables for self::$foo

Description:
------------
When having the following code:

<?php
class foo {
    function bar() {
        self::$bar = 42;
    }
}
?>

The compiler generates compiled variable !0 for $bar, even though it's a
class variable:

derick@whisky:/tmp$ php -dvld.active=1 -r 'class foo { function bar() {
self::$bar = 42; } }'
Finding entry points
Branch analysis from position: 0
Return found
filename:       Command line code
function name:  (null)
number of ops:  2
compiled vars:  none
line     # *  op                           fetch          ext  return 
operands
---------------------------------------------------------------------------------
   1     0  >   NOP                                                      
         1    > RETURN                                                  
null

branch: #  0; line:     1-    1; sop:     0; eop:     1
path #1: 0, 
Class foo:
Function bar:
Finding entry points
Branch analysis from position: 0
Return found
filename:       Command line code
function name:  bar
number of ops:  4
compiled vars:  !0 = $bar
line     # *  op                           fetch          ext  return 
operands
---------------------------------------------------------------------------------
         0  >   ZEND_FETCH_CLASS                              1          
         1      FETCH_W                      static member       $1     
'bar'
         2      ASSIGN                                                  
$1, 42
         3    > RETURN                                                  
null

branch: #  0; line:     1-    1; sop:     0; eop:     3
path #1: 0, 
End of function bar.

End of class foo.
14:41 <@Derick> dmitry: I am wondering why self::$foo creates a compiled
variable. Any idea?
14:42 <@Derick> dmitry: it creates it, but it's never used
14:44 <@dmitry> I see. It's probably because od simple one-pass compiler
that first interpret $foo as local variable and only then as a class
variable :)
14:44 <@Derick> dmitry: any way we can fix that perhaps?
14:44 <@dmitry> Derick: could you please create a bug and assign it to me
14:44 <@Derick> yes, sure




-- 
Edit bug report at https://bugs.php.net/bug.php?id=55673&edit=1
-- 
Try a snapshot (PHP 5.4):            https://bugs.php.net/fix.php?id=55673&r=trysnapshot54
Try a snapshot (PHP 5.3):            https://bugs.php.net/fix.php?id=55673&r=trysnapshot53
Try a snapshot (trunk):              https://bugs.php.net/fix.php?id=55673&r=trysnapshottrunk
Fixed in SVN:                        https://bugs.php.net/fix.php?id=55673&r=fixed
Fixed in SVN and need be documented: https://bugs.php.net/fix.php?id=55673&r=needdocs
Fixed in release:                    https://bugs.php.net/fix.php?id=55673&r=alreadyfixed
Need backtrace:                      https://bugs.php.net/fix.php?id=55673&r=needtrace
Need Reproduce Script:               https://bugs.php.net/fix.php?id=55673&r=needscript
Try newer version:                   https://bugs.php.net/fix.php?id=55673&r=oldversion
Not developer issue:                 https://bugs.php.net/fix.php?id=55673&r=support
Expected behavior:                   https://bugs.php.net/fix.php?id=55673&r=notwrong
Not enough info:                     https://bugs.php.net/fix.php?id=55673&r=notenoughinfo
Submitted twice:                     https://bugs.php.net/fix.php?id=55673&r=submittedtwice
register_globals:                    https://bugs.php.net/fix.php?id=55673&r=globals
PHP 4 support discontinued:          https://bugs.php.net/fix.php?id=55673&r=php4
Daylight Savings:                    https://bugs.php.net/fix.php?id=55673&r=dst
IIS Stability:                       https://bugs.php.net/fix.php?id=55673&r=isapi
Install GNU Sed:                     https://bugs.php.net/fix.php?id=55673&r=gnused
Floating point limitations:          https://bugs.php.net/fix.php?id=55673&r=float
No Zend Extensions:                  https://bugs.php.net/fix.php?id=55673&r=nozend
MySQL Configuration Error:           https://bugs.php.net/fix.php?id=55673&r=mysqlcfg



Thread (9 messages)

« previous php.bugs (#163466) next »