Squeak
http://www.squeak.org/
Pharo
http://www.pharo-project.org/home
商用
Cincom VisualWorks
http://smalltalk.cincom.jp/main/products/visualworks/
Smalltalk総合 Squeak Pharo
2013/02/16(土) 14:10:29.12
235デフォルトの名無しさん
2015/02/12(木) 09:00:56.49ID:FbfONYzU >>232 あ、ほんとだ。ブロックリテラルで書かないと、インライン展開されないんですね。…とのことです。>>229
true ifTrue: [3] ifFalse: [4]. thisContext method symbolic "=> '33 <71> pushConstant: true
34 <99> jumpFalse: 37
35 <21> pushConstant: 3
36 <90> jumpTo: 38
37 <20> pushConstant: 4
38 <87> pop
39 <89> pushThisContext:
40 <D3> send: method
41 <D2> send: symbolic
42 <7C> returnTop' "
true ifTrue: 3 ifFalse: 4. thisContext method symbolic "=> '33 <71> pushConstant: true
34 <21> pushConstant: 3
35 <22> pushConstant: 4
36 <F0> send: ifTrue:ifFalse:
37 <87> pop
38 <89> pushThisContext:
39 <D4> send: method
40 <D3> send: symbolic
41 <7C> returnTop' "
| block | block := [3]. true ifTrue: block. thisContext method symbolic
"=> '<略> 36 <71> pushConstant: true
37 <10> pushTemp: 0
38 <E1> send: ifTrue:
39 <87> pop
40 <89> pushThisContext:
41 <D3> send: method
42 <D2> send: symbolic
43 <7C> returnTop' "
true ifTrue: [3] ifFalse: [4]. thisContext method symbolic "=> '33 <71> pushConstant: true
34 <99> jumpFalse: 37
35 <21> pushConstant: 3
36 <90> jumpTo: 38
37 <20> pushConstant: 4
38 <87> pop
39 <89> pushThisContext:
40 <D3> send: method
41 <D2> send: symbolic
42 <7C> returnTop' "
true ifTrue: 3 ifFalse: 4. thisContext method symbolic "=> '33 <71> pushConstant: true
34 <21> pushConstant: 3
35 <22> pushConstant: 4
36 <F0> send: ifTrue:ifFalse:
37 <87> pop
38 <89> pushThisContext:
39 <D4> send: method
40 <D3> send: symbolic
41 <7C> returnTop' "
| block | block := [3]. true ifTrue: block. thisContext method symbolic
"=> '<略> 36 <71> pushConstant: true
37 <10> pushTemp: 0
38 <E1> send: ifTrue:
39 <87> pop
40 <89> pushThisContext:
41 <D3> send: method
42 <D2> send: symbolic
43 <7C> returnTop' "
236デフォルトの名無しさん
2015/02/12(木) 09:26:20.70ID:FbfONYzU >>232
調べてみました。なるほど。
引数がブロックかどうかをチェックしてインライン化を判断しているのですね。
(以下は Squeak の場合ですが、VisualWorks でも似たようなことをしていました。)
MessageNode >> transformIfTrue: encoder
(self transformBoolean: encoder)
ifTrue:
[arguments :=
Array
with: ((arguments at: 1) noteOptimizedIn: self)
with: ((BlockNode withJust: NodeNil) noteOptimizedIn: self).
^true]
ifFalse:
[^false]
MessageNode >> transformBoolean: encoder
^self
checkBlock: (arguments at: 1)
as: 'argument'
from: encoder
調べてみました。なるほど。
引数がブロックかどうかをチェックしてインライン化を判断しているのですね。
(以下は Squeak の場合ですが、VisualWorks でも似たようなことをしていました。)
MessageNode >> transformIfTrue: encoder
(self transformBoolean: encoder)
ifTrue:
[arguments :=
Array
with: ((arguments at: 1) noteOptimizedIn: self)
with: ((BlockNode withJust: NodeNil) noteOptimizedIn: self).
^true]
ifFalse:
[^false]
MessageNode >> transformBoolean: encoder
^self
checkBlock: (arguments at: 1)
as: 'argument'
from: encoder
レスを投稿する
ニュース
- 【コメ】卸売業者「簡単に安売りできない」 「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 [Hitzeschleier★]
- 中国から訓練の連絡あったが、区域など具体的な内容知らされず=小泉防衛相 [♪♪♪★]
- 高市早苗総理「金利上昇よりも日本の成長が大事」 [Hitzeschleier★]
- 空自機レーダー照射、音声データ公開 中国 ★4 [蚤の市★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★2 [少考さん★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★2 [Hitzeschleier★]
- 【高市速報】小泉進次郎「事前に中国軍から飛行訓練を開始すると連絡があったのは事実」★2 [931948549]
- 【高市速報】小泉進次郎「事前に中国軍から飛行訓練を開始すると連絡があったのは事実」 [931948549]
- 【正論】高市さん「『企業献金について与野党で協議する』という答弁は石破個人のものであり、もはや無効」特定野党を完全論破 [519511584]
- JR東海「リニア工事で水が枯れるのは一瞬だし回復させる手立てないわこれ」 [744361492]
- 【悲報】たけガイ、「中卒」という言葉を覚えてしまう🏡
- 自作pc時期が悪いおじさん、絶命 [329329848]
