Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Squeak VM

12 views
Skip to first unread message

Shinji KONO

unread,
Jun 4, 2005, 8:51:47 AM6/4/05
to
河野真治 @ 琉球大学情報工学です。

なんとなく、学生と一緒に、Squeak VM (interp.c) を読んでたり
します... 懐かしい感一杯。でも、前にSmalltalk 読んだときより
わかりやすいのは、経験の差か。

Morph から primitive まで、たどっていくんだけど、tracer とか
ないのね。VM に gdb かけると、singal 14 がうるさくて、うまく
debug出来ないし。VM は、Squeak から生成するわけね。debugger
付きVMとか生成できないのかな。 interrupt の扱いは結構疑問。
Emacs でも、かなり変なことしてたけど。

生成されたコードがマクロ展開されている状態なので読みにくい。
でも、Blue Book の Smalltalk なVMより、こっちの方が良いよ。
C の方が慣れてるからね。

いろいろ笑えるコードもあります。findNewMethodInClass の三段
メソッドキャッシュは僕的には爆笑でした。徐々にハッシュを計算
しながら探すわけね。inline cache/compile しないのは特許のせい?

整数がオブジェクトだから、1+1 みたいな場合でも find method
しないといけないんだよね。ここら辺は言語設計の問題だから
しょうがないよな。型がないのは記述には便利だが、実行には
不便。

method call 毎に context を local stack とは別に作って、
foo->theHomeContext で linked list にするってのは、やっぱり、
まどろっこしい。まぁ、でも、そのあたりを変えると、動かなく
なるもの多いんだろうな。普段は、local stack only で走って、
Context が必要になったときだけ慌てて生成するって方が、
現代的な気がする。

もっとも、SICStus Prologもnative compilerやめちゃったしな。
多少、遅くても、byte code interpreter でがんがん機能拡張
した方が元が取れるってことか?

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科

0 new messages