diff -aruN shujit-0.3.0/ChangeLog shujit/ChangeLog --- shujit-0.3.0/ChangeLog Sun May 23 01:45:31 1999 +++ shujit/ChangeLog Mon May 24 19:53:36 1999 @@ -1,5 +1,21 @@ $Id$ +[19990524] + +code.c のコンパイルフラグに -fno-omit-frame-pointer を追加。 +(Makefile.in) + +codedb.c の頭に #include "config.h" を追加。 +先頭でマクロ CODE_DB が必要なため。 +0.3.0 はきちんと動いていなかった… + +0.3.0a リリース。 + +[19990523] + +0.3.0 リリース。 +maintenance release である 0.2.11 もリリース。 + [19990522] autoconf に対応。 diff -aruN shujit-0.3.0/Makefile.in shujit/Makefile.in --- shujit-0.3.0/Makefile.in Sat May 22 21:54:31 1999 +++ shujit/Makefile.in Mon May 24 19:32:57 1999 @@ -119,16 +119,16 @@ # generate code.o ifeq (${GCC27}, yes) tmp.s: code.c ${POSTPROC} - ${CC} -S ${NOOPTCFLAGS} -o tmp.s $< + ${CC} -S -fno-omit-frame-pointer ${NOOPTCFLAGS} -o tmp.s $< code.s: tmp.s ${RUBY} ${POSTPROC} < $< > $@ # ${RM} -f $< code.o: code.s else code.o: code.c - ${CC} ${NOOPTCFLAGS} -c $< + ${CC} -fno-omit-frame-pointer ${NOOPTCFLAGS} -c $< code.s: code.c code.h - ${CC} -S ${NOOPTCFLAGS} $< + ${CC} -S -fno-omit-frame-pointer ${NOOPTCFLAGS} $< endif diff -aruN shujit-0.3.0/README shujit/README --- shujit-0.3.0/README Sun May 23 22:35:21 1999 +++ shujit/README Mon May 24 19:51:24 1999 @@ -25,8 +25,13 @@ * Installation -Copy the library libshujit.so to the path in LD_LIBRARY_PATH variable -or the path on which libjava.so exists +With JDK 1.2, you must place the libshujit.so on +jdk1.2/jre/lib/i386/ or make a symbolic link to the +path. + +With JDK 1.1.X, copy the libshujit.so to the +path in LD_LIBRARY_PATH variable or the path on which +libjava.so exists (ex. /usr/local/jdk1.1.7/lib/i686/green_threads/). * Run Java applications with JIT compiler. @@ -44,7 +49,7 @@ You need some tools to compile this JIT. -- JDK 1.1.X +- JDK 1.1.X or 1.2 - EGCS (not experimental version such as 2.92.5-19981015) You can examine version of your `gcc' command with -v option. % gcc -v diff -aruN shujit-0.3.0/codedb.c shujit/codedb.c --- shujit-0.3.0/codedb.c Sun Apr 18 11:07:55 1999 +++ shujit/codedb.c Mon May 24 19:42:38 1999 @@ -21,6 +21,8 @@ $Id$ */ +#include "config.h" + #ifdef CODE_DB #include diff -aruN shujit-0.3.0/txt/memo shujit/txt/memo --- shujit-0.3.0/txt/memo Sun May 23 01:54:13 1999 +++ shujit/txt/memo Sun May 23 23:43:40 1999 @@ -1,9 +1,10 @@ Todo - - JDK 1.2 対応。 - CaffeineMark をテストするためにフォントの設定をする。 + - JDK 1.2 での動作テスト。 + CaffeineMark, Swing。 + AWT を動作させるため、フォントの設定をする。 - FreeBSD, egcs 1.1.X, gcc 2.7.2.X での動作確認。対応。 - - README を修整。 - 動作確認した環境, コンパイル法。 + - 関数名のシンボル頭に `_' が付くか付かないか、つまり ELF か a.out かを、 + configure で判定。 - コンパイル中のメソッドが呼ばれた場合の対策 インタプリタで実行され、_quick への変換が起こり、pctable と食い違う。 - SIGNAL_ERROR* に渡す STATE がおそらく適切ではない。直す。 @@ -87,8 +88,8 @@ tableswitch, lookupswitch はトランポリン方式で解決。 移植時の注意 - - JVM の new 命令の self modify 時の offset - 例: Linux では 0x35, FreeBSD では 0x3a + - self modify 時の offset + new, invokestatic, {get,put}static{,2} - 関数名シンボルが funcname か _funcname か。 gentable.rb の挙動を変える。 - dynamic link 関係 @@ -100,21 +101,15 @@ - Linux の JDK のように、libc 中の関数のアドレスを sysDynamicLink() で 得られるか、FreeBSD の JDK のように得られないか。 - signal 関係 - - signal handler 中で struct sigcontext を得られるか? + - signal handler の引数として struct sigcontext を得られるか? 例: JDK for Linux では得られない。 - signal handler が呼ばれた際、その signal に対応する handler が リセットされる (FreeBSD) か否か。リセットされるなら要再設定。 - signal handler 実行中、その signal が block されている (FreeBSD) か否か。 - されているなら要 unblock (sigprocmask(2))。 - -autoconf に向けて - - libc5, glibc2 の判別 - - 関数名のシンボルがの頭に `_' が付くか付かないか。 + されているなら handler からのジャンプ時に要 unblock (sigprocmask(2))。 注記 - - code.c の NEW_REWRITE_OFFSET_# は、code.h のマクロ CODE() の定義に - 影響を受ける。 - stack 上の要素が実行環境依存になる。 jsr, ret 命令 - JVM と X86 でスタックの成長方向が逆。 @@ -124,13 +119,14 @@ JVM, JIT compiler のテスト - JDK の regression test: javasrc/test/ - Kaffe のもの + - Mauve プロジェクト known bugs - 何かの理由でメソッドのコンパイルが失敗した際、 - final フィールドへの putfield, putstatic で IllegalAccessError が発生しない。 本来は bytecode verifier がはねるべき? - - クラス初期化のタイミングが JLS 12.4.1 と違う。 + - 1.1.X では、クラス初期化のタイミングが JLS 12.4.1 と違う。 クラス first active use 時ではなく、 first active use するメソッドのコンパイル時となってしまっている。 - 無限ループ実行中のスレッドが、 @@ -249,13 +245,6 @@ データ構造 struct CatchFrame *cf = mb->exception_table; cf->compiled_CatchFrame = (void *)オフセット in native code; - - -コンパイルに必要なもの - egcs or gcc2 - GNU binutils の objdump - ruby - constants.c, constants.h の生成 コンパイルの手順