2011年12月17日土曜日

HomebrewでSpidermonkeyのデバッグビルドをインストール

デバッグモードでビルドしないとディスアセンブルする関数が使えないので、デバッグビルドしてインストールします。

デフォルトのFormulaはデバッグビルドがOFFになっているので、

➜  ~  brew edit spidermonkey

で、js/src/configureのところに(二箇所configureがあるけど下のやつ)

--enable-debug --disable-optimize

のオプションを追加します。 via SpiderMonkey Build Documentation - MDN

NewImage

これで、dis関数が使えるSpidermonkeyがビルドできるようになるので、

➜  ~  brew install spidermonkey

でインストール

JavaScriptの無名関数の実行 (function(){})() と (function(){}()) の違い | 圧縮電子精神音楽浮遊構造体を見て、やってみたかっただけです。

js> dis(function(){ new function(){} });
flags: LAMBDA NULL_CLOSURE
main:
00000:  trace
00001:  lambda (function () {})
00004:  null
00005:  new 0
00008:  pop
00009:  stop

Source notes:
  0:     5 [   5] pcbase   offset 4
js> dis(function(){ (function(){})() });
flags: LAMBDA NULL_CLOSURE
main:
00000:  trace
00001:  lambda (function () {})
00004:  null
00005:  call 0
00008:  trace
00009:  pop
00010:  stop

Source notes:
  0:     5 [   5] pcbase   offset 4
js> dis(function() { (function(){}()) });
flags: LAMBDA NULL_CLOSURE
main:
00000:  trace
00001:  lambda (function () {})
00004:  null
00005:  call 0
00008:  trace
00009:  pop
00010:  stop

Source notes:
  0:     5 [   5] pcbase   offset 4

0 コメント:

コメントを投稿