[Squeak home] [English] [Japanese]

Squeak: An additional note for "Hacking Squeak With Apple MPW"

Squeak!
Updated: Jun 8, 1999.
  1. 前もって読んでおくページ
  2. 用意するもの
  3. 準備
  4. では行ってみよう!
    1. ソースコードの生成
    2. MPW でリコンパイル
    3. 範囲検査にパッチ当て
  5. できた!
  6. ベンチマーク

Sat, 5 Jun 1999 22:10:52 -0400, Andrew C. Greenberg さんによる "Hacking Squeak With Apple MPW," が Squeak-ML にポストされました。 ワタクシの家にはリンドウならぬビンボウの花が咲いているぐらいで、 CodeWarrior を持っていません。 これ幸いと試してみたら、すんなりとうまく行きました。 その顛末を以下に掲げます。 MPW 3.4.3, Squeak 2.4b VM and 2.4c image を使用しました。

前もって読んでおくページ

FAQ: Building PowerPC Squeak VMs with MPW by Andrew C. Greenberg.

用意するもの

  1. MPW (Macintosh Programmer's Workshop)
    使用したのは MPW-GM (Golden Master means "final") version with MPW Shell version 3.4.3 (Oct 14, 1998) という版です。 MPW-PR (Pre-Release) セットは持っていません。
  2. Squeak 2.4 base
    VM; 2.4b, image; 2.4c
  3. MPWInterpreterBuilder.cs
    FAQ: Building PowerPC Squeak VMs with MPW by Andrew C. Greenberg.

準備

MPW shell のメモリ割当のデフォルトは 8MB です。 これを最低 24MB 以上割り当てます。 デフォルトののままだと、"interp.c" のコンパイル中にメモリを使い果たして、コンパイルが中断されてしまいます。

では行ってみよう!

ソースコードの生成

  1. Squeak を立ち上げ、 "MPWInterpreterBuilder.cs" を filein します。
  2. 新しいソースコードを生成するために、以下を評価します。30 個以上のファイルができます。
    1. InterpreterSupportCode writeMacMPWSourceFiles.
    2. Interpreter translate: 'interp.c' doInlining: true.
    3. B3DEnginePlugin translateB3D.
  3. Squeak を終了します。

MPW でリコンパイル

  1. MPW 用の作業ディレクトリを作ります。ここでは MPWsq という名称を与えました。
  2. MPWsq にサブ・ディレクトリを掘ります。 src, obj, squeak, doc の 4 つです。
  3. Squeak が生成したファイルのうち、 *.c, *.h, *.r を src ディレクトリに移動します。
  4. "readme" は doc ディレクトリに移動します。
  5. makefile を少しばかり修正します。
    MPWsqueak.make
    SqueakSources = :src:
    SqueakFolder = :squeak:
    ObjDirPPC = :obj:
    MPWsqueak3D.make
    SqueakSources = :src:
    SqueakFolder = :squeak:
    ObjDirPPC = :obj:
  6. MPW を立ち上げて、リコンパイルします。
    MPWsqueak を作るには...
    "Build" メニューから "Build..." を選び、ダイアログ上で "MPWsqueak" と入力します。
    MPWSqueak3D shlb を作るには...
    同様に "MPWSqueak3D" と入力します。

範囲検査にパッチ当て

  1. 下記を評価します;
    1. Interpreter patchInterp: 'MPWsqueak'.
Interpreter (c) >> patchInterp: の 2 番目のコメント
This will patch out the unneccesary range check (a compare and branch) in the inner interpreter dispatch loop.

できた!

新しい VM と 3D Engine ライブラリです.

mpw directory

新 VM は BNDL リソースを持っています.

mpwsq has new BNDL resource

ベンチマーク

benchmark result


Created: Jun 8, 1999
[Squeak home] [English] [Japanese]