1

Pharo で、現在評価中のスタックを見つけるにはどうすればよいですか?

4

2 に答える 2

1

あなたが評価する

thisContext contextStack

は、thisContext現在アクティブなスタック フレームを指す特別な変数です。次に、contextStackスタック全体の配列を返します。

于 2009-11-20T13:26:55.527 に答える
1

実際、問題はそれほど単純thisContextではありません。メッセージの送信などに比べて、非常にコストのかかる操作になる可能性があります。

Visualworks Smalltalk では、スタック アクセスはネイティブ C スタックを使用するため、非常にコストがかかります。したがってthisContext、C スタック全体を因果的に接続されたSmalltalk オブジェクトに具体化する必要があります。つまり、各 C スタック フレームに対して Smalltalk オブジェクトが作成され (可能な JIT 最適化解除を含む)、さらにこれらのオブジェクトへのすべての変更が C スタックに反映される必要があります。

Pharo (さらに言えば Squeak) では、スタックに Smalltalk オブジェクトを使用するため、それほど厄介ではありません。ただし、スタック フレームをキャッシュするオブジェクト プールは、呼び出しごとにフラッシュされます。(はい、例えば Java 以外では、オブジェクトをプーリングすると Squeak のパフォーマンスが向上します... 90 年代へようこそ :)

于 2009-11-20T18:17:18.697 に答える