クラス関係のABC

クラス関係のABCを淡々と貼るよ。

空定義

class Hoge{}
class private::Hoge extends Object
{

  function private::Hoge():*	/* disp_id -1*/
  {
    // local_count=1 max_scope=1 max_stack=1 code_len=6
    0       getlocal0     	
    1       pushscope     	
    2       getlocal0     	
    3       constructsuper	(0)
    5       returnvoid    	
  }


  static function private::Hoge$cinit():*	/* disp_id 0*/
  {
    // local_count=1 max_scope=1 max_stack=1 code_len=3
    0       getlocal0     	
    1       pushscope     	
    2       returnvoid    	
  }

}


function script0$init():*	/* disp_id 0*/
{
  // local_count=1 max_scope=2 max_stack=2 code_len=19
  0         getlocal0     	
  1         pushscope     	
  2         getscopeobject	0
  4         findpropstrict	Object
  6         getproperty   	Object
  8         pushscope     	
  9         findpropstrict	Object
  11        getproperty   	Object
  13        newclass      	private::Hoge
  15        popscope      	
  16        initproperty  	private::Hoge
  18        returnvoid    	
}

インスタンス変数

特にコードは必要ない?

class Hoge{
  var foo
}
class private::Hoge extends Object
{

  function private::Hoge():*    /* disp_id -1*/
  {
    // local_count=1 max_scope=1 max_stack=1 code_len=6
    0       getlocal0
    1       pushscope
    2       getlocal0
    3       constructsuper      (0)
    5       returnvoid
  }

  var private::foo:*    /* slot_id 0 */

  static function private::Hoge$cinit():*       /* disp_id 0*/
  {
    // local_count=1 max_scope=1 max_stack=1 code_len=3
    0       getlocal0
    1       pushscope
    2       returnvoid
  }
}

new

new Hoge();
  18        findpropstrict	Hoge
  20        constructprop 	Hoge (0)

メソッド呼び出し

Hoge.f();
var h = new Hoge();
h.f(); 
  18        getglobalscope
  19        getslot             1
  21        callproperty        f (0)
  24        pop

  25        findpropstrict      Hoge
  27        constructprop       Hoge (0)
  30        getglobalscope
  31        swap
  32        setslot             2
  34        getglobalscope
  35        getslot             2
  37        callproperty        f (0)