$Id$

[19990806]

tableswitch $BL?Na$N%8%c%s%W@hI=$r:n@.$7$?8e!"(B
$B%3!<%I@8@.%P%C%U%!$X$N%]%$%s%?$r8m$C$F@_Dj$7$F$$$?!#=$@0!#(B
(compile.c)

0.3.3 $B%j%j!<%9!#(B

[19990804]

compiled method $B$+$i$N%a%=%C%I8F$S=P$7(B (invocationHelper()) $B$G!"(B
mb->invoker $B$,(B compileAndInvokerMethod() $B$@$C$?:]$K$b(B
restack (native -> interpreter) $B$9$k$h$&$K$7$?!#(B
compileAndInvokerMethod() $B$G(B JIT $B%3%s%Q%$%k$,5/$-$?>l9g$K(B
restack $B$,(B 2$BEY5/$-$FHa$7$$$,!"%3%s%Q%$%k$7$J$$>l9g$N$?$a$K!#(B
(runtime.c)

[19990803]

$B%*%W%7%g%s(B ($B4D6-JQ?t(B JAVA_COMPILER_OPT) $B$N(B parse $BJ}K!$rJQ99!#(B
(compiler.c, compiler.h)

$B%*%W%7%g%s(B cmplthreshold $B$rMQ0U!#(B
cmplthreshold=<$B@0?t(B> $B$H@_Dj$9$k$H!"%a%=%C%I$O$=$N2s?t8F$P$l$?;~E@$G(B
$B%3%s%Q%$%k$5$l$k!#(B
(compiler.c, compiler.h, invoker.c)

[19990731]

$BIbF0>/?tE@?t$r@0?t$KJQ49$9$k(B [fd]2[il] $BL?Na$N(B pre-assembled code $B$rJQ99$7$?!#(B
$B$3$l$^$G$O%9%?%C%/%]%$%s%?$,;X$9%"%I%l%9$h$j2<0L$NNN0h!"(B
$B$D$^$jL$;HMQ$N%9%?%C%/NN0h$K(B FPU control word $B$rJ]B8$7$F$$$?$,!"(B
$B;HMQCf$NNN0h$KJ]B8$9$k$h$&$K$7$?!#(B
$BL$;HMQ%9%?%C%/NN0h$KJ]B8$7$F$*$$$?(B FPU control word $B$NCM$,GK2u$5$l$F(B
$BNc30$N%^%9%/$,$O$:$l$?$?$a$K(B SIGFPE $B$,H/@8$7$F$$$?62$l$,$"$k!#(B
(code.c)

$B%3%s%Q%$%k40N;;~$K!"(Bmb->access $B$N(B ACC_MACHINE_COMPILED $B%S%C%H$rN)$F$k$N$r(B
$B;_$a$?!#$3$l$K$h$j!"%/%i%9%U%!%$%k$,(B LineNumberTable $B$r;}$C$F$$$k>l9g(B
--- javac -g $B$G%3%s%Q%$%k$5$l$?>l9g(B --- $B$K!"%=!<%9%3!<%ICf$N9T$,I=<($5$l$k!#(B
$B$^$?!"$3$NF0:n$O(B compiler.h $BCf$N(B #undef CONTROL_COMPILED_FLAG $B9T$G@)8f$G$-$k!#(B
(compile.c, compiler.h)

0.3.2 $B%j%j!<%9!#(B

[19990730]

SIGFPU $B$N860x$rC5$k$?$a!"(Bcompiler.c $B$K(B
fillFPUEnv() $B$H(B ShowFPUEnv() $B$rMQ0U$7$?!#(B
(compiler.c)

[19990725]

JDK 1.2 $B$N>l9g!"%7%0%J%k%O%s%I%i$+$iNc30%O%s%I%i%X@)8f$r0\$9J}K!$rJQ$($?!#(B
$B$3$l$^$G$O!"%l%8%9%?$NI|5"$J$I(B sigreturn(2) $BAjEv$N=hM}$r<+A0$G9T$C$?8e$G(B
$B%8%c%s%W$7$F$$$?$,!"(Bsigcontext $B9=B$BNCf$N%W%m%0%i%`%+%&%s%?$r@_Dj$7$F(B
$BC1$K(B return $B$9$k$h$&$K$7$?!#(B
sigprocmask(2) $B$G%^%9%/$r30$9$J$I$N:Y$+$J%W%i%C%H%U%)!<%`$K1~$8$?=hM}$K$D$$$F(B
$B9MN8$9$kI,MW$,$J$$!#(B
(compiler.c)

signalHandler() (compiler.c) $BCf$G!"(BsignalHandler() $B<+?H$r(B
$B%7%0%J%k%O%s%I%i$H$7$F:F@_Dj$7$F$$$?$,!"(B
$B%7%0%J%k%O%s%I%i$,%j%;%C%H$5$l$J$$(B Linux $B$G$O:F@_Dj$r;_$a$?!#(B
(compiler.c)

JDK 1.2 $B$@$1$G$J$/(B 1.1 $B$G$b!"%/%i%9=i4|2=$N%?%$%_%s%0$,(B JLS $B$N5-=RDL$j$K(B
$B$J$k$h$&$K$7$?!#(Bsee [19990514], [19990521]$B!#(B
JDK 1.2 $B$N(B InitClass() $B$NBe$o$j$r(B JDK 1.1 $BMQ$KMQ0U$7$?!#(B
$B$3$l$O!"%^%/%m$G$O$J$/4X?t$G$J$1$l$P$J$i$J$$!#(B
$B%^%/%m$K$7$?>l9g!"<+8J=q$-49$($N%*%U%;%C%H$rJQ99$9$kI,MW$,@8$8$k!#(B
JDK 1.2 $B$N>l9g!"$9$G$K(B InitClass() $B$,8F$P$l$?$+$r(B CCIs(cb, Initialized) $B$G(B
$BH=Dj$9$k$,!"(B1.1 $B$G$O(B ResolveClass() $B$,8F$P$l$?$+$r(B CCIs(cb, Resolved) $B$G(B
$BH=Dj$9$k!#(B
(code.c, compile.c, runtime.c)

[19990724]

CompilerContext $B$N%a%s%P(B ee $B$N=i4|2==hM}$r!"(B
newCompilerContext() $B$+$i(B resetCompilerContext() $B$K0\$7$?!#(B
$B%3%s%Q%$%kCf(B (processAnOpcode()) $B$K8m$C$?(B ee $B$r(B ResolveClassConstant...() $B$K(B
$BEO$7$F!"8m$C$?<gBN$K$h$k%m%C%/$,$J$5$l$F!"(B
AWT $B$r;H$&%W%m%0%i%`$,%G%C%I%m%C%/$7$F$$$?!#(B
(computil.c)

invokeJITCompiledMethod() (invoker.c) $BCf$G!"8F$S=P$785$,(B
compiled code $B$+%$%s%?%W%j%?$+$NH=DjJ}K!$rJQ99!#(B
$B$3$l$^$G$O(B mb->invoker $B$r(B invokeJITCompiledMethod() $B$HHf3S$7$F$$$?$,!"(B
$B$3$NJ}K!$@$H!"%$%s%?%W%j%?$G<B9TCf$K%3%s%Q%$%k$,40N;$7$?>l9g$K8mH=Dj$,5/$3$k!#(B
$BA0%a%=%C%I(B->returnpc $B$,A0%a%=%C%I$N%P%$%H%3!<%I$r;X$7$F$$$k$+$I$&$+!"(B
$B$GH=Dj$9$k$h$&$K$7$?!#(B
(invoker.c)

resolveDynamicConstants() (compile.c) $B$K$F(B multianewarray $BL?Na$N>l9g$N=hM}$r(B
ResolveClassConstant() $B$+$i(B ResolveClassConstantFromClass() $B$KJQ99!#(B
ResolveClassConstant() $B$N$H$-$O!"(B
jdk1.2/demo/applets/SpreadSheet/ $B$K$F!"(BNoClassDefFoundError $B$,=P$F$$$?(B
(compile.c)

invokeJITCompiledMethod() (invoker.c) $B$K$F!"?7$?$J(B JavaFrame $B$N%a%s%P(B
constant_pool $B$r(B NULL $B$G=i4|2=$9$k$h$&$K$7$?!#(B
$B$3$l$^$G$O=i4|2=$;$:$K$$$?!#(B
JDK 1.2 $B$GMQ0U$5$l$?%^%/%m(B IS_JIT_FRAME(...) $B$,!"(B
$B%a%s%P(B constant_pool $B$r(B NULL $B$+$I$&$+%A%'%C%/$9$k$N$G!#(B
(invoker.c)

[19990719]

32bit $B@0?t$N=|;;(B (idiv, irem $BL?Na(B) $B$G!"(B0x80000000 / (or %) -1 $B$r(B
$B8!=P$9$k$?$a$N=|?t%A%'%C%/$NBP>]$,8m$C$F$$$?!#(B
  (%edx $B$,=|?t(B), %ecx = %edx, cdq, %edx $B$r%A%'%C%/(B
$B$H$7$F$7$^$C$F$$$?!#%A%'%C%/;~!"(B%edx $B$K$O=|?t$G$O$J$/(B
$BHo=|?t$N>e0L(B 32bit $B$,F~$C$F$$$?!#(B
(code.c)

[19990711]

sigcontext $B9=B$BN$NL>A0$r(B `struct sigcontext' $B$GE}0l!#(B
`struct sigcontext_struct' $B$O;H$o$J$$!#(B
(compiler.h, configure.in)

0.3.1b $B%j%j!<%9!#(B

[19990709]

#include <asm/sigcontext.h> $B$NA0$K!"(B
#define sigcontext_struct sigcontext $B$H=q$$$?!#(B
(compiler.h)
glibc 2.X $B$G$O(B <asm/sigcontext.h> $B$rD>@\$G$O$J$/(B 
<sigcontext.h> $B$r(B include $B$9$k$3$H$G>e5-$NCV$-49$((B
(sigcontext_struct -> sigcontext) $B$,$J$5$l$k!#(B
$B$7$+$7(B libc5 $B$O(B <sigcontext.h> $B$r;}$?$J$$$?$a!"(B
shuJIT $B$N%=!<%9$G$O(B #include <asm/sigcontext.h> $B$H=q$-$?$$!#(B

0.3.1a $B%j%j!<%9!#(B

[19990705]

ELF $B$N(B FreeBSD (>= 3.0) $B$KBP1~$7$?!#(B
  - gentable.rb $B$K$F!"%7%s%\%kL>@hF,$N(B `_' $B$r<h$j5n$k$N$O(B
    FreeBSD 2.X $B$N>l9g$N$_$K!#(B

0.3.1 $B%j%j!<%9!#(B

[19990701]

configure $B$,(B ruby $B%3%^%s%I$r8+IU$1$i$l$J$$>l9g!"(B
$B7Y9p$rH/$7$F=*N;$9$k$h$&$K$7$?!#(B
(configure.in)

Makefile $B$NL>A0$r0JA0$N$h$&$K(B GNUmakefile $B$KLa$7$?!#(B
(configure.in)

make distclean $B$@$1$G$J$/!"(B
make clean $B$G(B config.cache $B$r:o=|$9$k$h$&$K$7$?!#(B
(GNUmakefile.in)

[19990630]

signal handler $B$G!"(BSIGSEGV, SIGBUS $B$@$1$G$J$/!"(B
$B=|;;(B (idiv, irem, ldiv, lrem) $B$GH/@8$9$k(B SIGFPE $B$b07$&$h$&$K$7$?!#(B
0 $B=|;;$G(B ArithmeticException $B$rH/@8$5$;!"(B
MIN_VALUE / -1 $B$G7k2L$r(B MIN_VALUE $B$K!"(BMIN_VALUE % -1 $B$G7k2L$r(B 0 $B$K$9$k!#(B
$B$?$@$7!"(Blong $B7?$N(B MIN_VALUE [/%] -1 $B$K$D$$$F$O(B
$B%i%$%V%i%j4X?t$,E,@Z$K07$&$3$H$r4|BT$7$F2?$b$7$J$$!#(B
(compiler.c, compiler.h, compile.c, code.c, computil.c)

$B=>Mh$N%^%/%m(B EXC_BY_SIGNAL $B$r(B NULLEXC_BY_SIGNAL $B$KJQ99$7!"(B
ARITHEXC_BY_SIGNAL $B$r?7@_!#(B
EXC_BY_SIGNAL $B$O$3$N(B 2$B$D$N(B or $B$H$7$?!#(B
(compiler.h, code.h, compiler.c)

$B9=B$BN(B throwentry $B$K%a%s%P(B opcode $B$rDI2C!"(B
throwtableAdd() $B$K$F(B opcode $B$bEPO?$9$k$h$&$K$7$?!#(B
(compiler.h, computil.c)

ldiv, lrem $BL?Na$N(B pre-assembled code $B$K$F!"(B
%ebp $B%l%8%9%?$r%9%?%C%/$K@Q$s$GJ]B8$9$k$h$&$K$7$?!#(B
0 $B=|;;$N:]$K(B signal handler $B$,MxMQ$9$k!#(B
(code.c, compiler.c)

[19990524]

code.c $B$N%3%s%Q%$%k%U%i%0$K(B -fno-omit-frame-pointer $B$rDI2C!#(B
(Makefile.in)

codedb.c $B$NF,$K(B #include "config.h" $B$rDI2C!#(B
$B@hF,$G%^%/%m(B CODE_DB $B$,I,MW$J$?$a!#(B
0.3.0 $B$O$-$A$s$HF0$$$F$$$J$+$C$?!D(B

0.3.0a $B%j%j!<%9!#(B

[19990523]

0.3.0 $B%j%j!<%9!#(B
maintenance release $B$G$"$k(B 0.2.11 $B$b%j%j!<%9!#(B

[19990522]

autoconf $B$KBP1~!#(B
./configure; make $B$G%3%s%Q%$%k$G$-$k$h$&$K$7$?!#(B
def.mk $B$OITMW$K$J$C$?$N$G:o=|!#(B
(configure.in, acconfig.h, Makefile.in, $BB>B??t(B)
autoheader $B%3%^%s%I$G(B config.h.in $B$r@8@.!"(B
autoconf $B%3%^%s%I$G(B configure $B$r@8@.$9$k!#(B

FreeBSD 2.2.7, gcc 2.7.2.1 $B$G(B code.c $B$r%3%s%Q%$%k$G$-$J$/$J$C$F$$$k!#(B
$B%l%8%9%?3d$jIU$1$NLdBj$i$7$$!#(B

new $BL?Na$N<+8J=q$-49$($NJ}K!$rJQ99$7$?!#(B
$B%*%U%;%C%H$N!"%3%s%Q%$%i$N@-<A$X$N0MB8$,<e$^$C$?!#(B
(code.c)

[19990521]

getstatic, putstatic, getstatic2, putstatic2 $BL?Na$N<B9T;~!"(B
$B%/%i%9$,=i4|2=$5$l$F$$$J$$>l9g$K(B (!CCIs(cb, Initialized))
InitClass() $B$r8F$V$h$&$K$7$?!#(B
19990514 $B$NJQ99(B (new, invoke* $BL?Na$G(B InitClass()) $B$N1dD9!#(B
$B$3$l$K$h$C$F(B JDK 1.2 $B$G(B javac $B$,F0:n$7$?!#(B
(code.c, compile.c)

[19990517]

$B%^%/%m(B FAST_INVOKER $B$rGQ$7$?!#(B
(runtime.c, compiler.h)

[19990516]

19990514 $B$KGQ$7$?(B sym_ $B$r:F$SMQ0U!#(B
$B4X?t$N%"%I%l%9$,!"MxMQ$9$k;~E@$G2r7h$5$l$F$$$J$$>l9g$,$"$k$N$G!#(B
(compiler.h, compiler.c, invoker.c, runtime.c)

$B%^%/%m(B OBJ_ARRAY_METHODTABLE() (code.h) $BCf$N(B
$BBg0hJQ?t(B classJavaLangObject $B$NCM$r<hF@$9$k:]$K!"(B
edx $B$J$IM>7W$J%l%8%9%?$,;H$o$l$F$$$?!#(Bedi $B0J30$N;HMQ$rM^@)$7$?!#(B
(code.h)

invocationHelper() (runtime.c) $B$K$F!"(B
JIT $B$,(B disable $B$5$l$?>u67(B (java.lang.Compiler#disable()) $B$G!"(B
invoker $B$H$7$F(B compileAndInvokeMethod() $B$r;H$C$F$$$?%P%0$r=$@0!#(B
(runtime.c)

[19990515]

$B%7%s%\%k$N2r7h$K(B JDK 1.2 $B$N(B classLoaderLink() $B$r;H$&$H(B
Java $B$N%a%=%C%I$r8F$S=P$7$F4r$7$/$J$$$N$G!"(B
$BF1Ey(B (+$B&A(B) $B$N(B C $B$N4X?t(B simbolInSystemClassLoader() $B$r=q$$$?!#(B
(linker.c, compiler.h, GNUmakefile)

[19990514]

invoke*(), compileAndInvokeMethod() $B$N%"%I%l%9$rJ];}$9$kJQ?t(B
sym_* $B$rGQ$7$?!#(B
(compiler.h, compiler.c, invoker.c, runtime.c)

FreeBSD 3.0 $B0J>e$G$O(B /usr/lib/aout $B$K$"$k(B a.out $BHG(B libc, libm $B$r(B
$B%m!<%I$9$k$h$&$K$7$F$$$?$H$3$m!"(BELF $BHG$r%m!<%I$9$k$h$&$K$7$?!#(B
(compiler.h)

java_lang_Compiler_start() $B$GGSB>@)8f$r9T$&$h$&$K$7$?!#(B
(compiler.c)

JDK 1.2 $B$N>l9g!"%/%i%9$r=i4|2=(B (InitClass()) $B$N%?%$%_%s%0$r(B
JLS $B$N5-=RDL$j(B (first active use) $B$K$7$?!#(B
new $BL?Na$H(B invoke* $BL?Na$N<B9T;~!"(B
$B$^$@=i4|2=$,9T$o$l$F$$$J$$$J$i(B (!CCIs(cb, Initialized)) $B8F$V!#(B
$B<+8J=q$-49$($r9T$o$J$$(B ($B%^%/%m(B NO_REWRITE $B$,Dj5A$5$l$F$$$k(B) $B>l9g$O!"(B
$B<B9TCf$K(B InitClass() $B$r8F$V$h$&$K$9$k$H<B9T$N$?$S$K8F$s$G$7$^$&$N$G!"(B
$B%3%s%Q%$%k;~$K8F$s$G$*$$$F$7$^$&!#(B
(code.c, compile.c)

[19990513]

type_table[index] & CONSTANT_POOL_ENTRY_RESOLVED $B$r(B
CONSTANT_POOL_TYPE_TABLE_IS_RESOLVED(type_table, index) $B$K=q$-49$($?!#(B
(compile.c, runtime.c)

[19990511]

invocationHelper() (runtime.c) $B$G!"(Bmb->invoker $B$r!"(B
$B%m!<%+%kJQ?t(B invoker $B$KCV$-49$($?!#(B
invocationHelper() $B<B9TCf$KB>$N%9%l%C%I$,(B
mb->invoker $B$r=q$-49$($k>l9g$KHw$($F!#(B
(runtime.c)

invoker $B$NL>A0$rJV$9(B nameOfInvoker() $B$rMQ0U!#(B
(runtime.c)

JDK 1.2 $B$G!"(BExpandJavaStack() $B$r;H$C$F<!$N(B JavaStack $B$rF@$?:]$K!"(B
ee->current_frame->optop $B$K(B tmp_frame $B$r=q$-La$7$F$7$^$C$F$$$?!#=$@0!#(B
(invoker.c)

[19990510]

$B%^%/%m(B ACC_BEING_COMPILED (19990419 $B$KDj5A(B) $B$rGQ$7$?!#(B
$BBe$o$j$K!"%3%s%Q%$%kCf$N%a%=%C%I$O(B invoker $B$r%$%s%?%W%j%?8F$S=P$7$K(B
$B@_Dj$9$k$h$&$K$7$?!#(B
(compiler.h, invoker.c)

$B%3%s%Q%$%k$NGSB>@)8f$r!"(BcompileAndInvokeMethod() (invoker.c) $B$+$i(B
compileMethod() (compile.c) $B$K0\$7$?!#(B
(compile.c, invoker.c)

[19990430]

monitorEnter(), monitorExit() $B$r!"(BJDK 1.2 $B$G$O$=$l$>$l(B
monitorEnter2(), monitorExit2() $B$r;H$&$h$&$KA4BN$r=q$-49$($?!#(B
(invoker.c, computil.c, code.c)

[19990424]

19990419 $B$NJQ99$K$h$C$F%3%s%Q%$%kCf$N%a%=%C%I$,(B
ineterpret $B<B9T$5$lF@$k$h$&$K$J$C$?$?$a!"(B
interpret $B;~$K(B inlining $B$,9T$o$l$F(B CompilerContext $B$N(B pctable $B$,(B
$B%P%$%H%3!<%I$H?)$$0c$$F@$k$h$&$K$J$C$?!#(B(VoyagerClassLoader#<init> $B$GH/@8(B)
$B%a%=%C%I$,8F$S=P$5$l$?2s?t$r(B CodeInfo $BCf$K5-O?$9$k$h$&$K$7!"(B
makePCTable() (compile.c) $BCf$G(B processAnOpcode() $B$r8F$VEY$K(B
$B$=$N2s?t$r%A%'%C%/$7!"8F$S=P$7$,5/$-$F$$$?>l9g$K$O(B makePCTable() $B$N=hM}$r(B
$B$d$j$J$*$9$h$&$K$7$?!#(B
$B%a%=%C%I8F$S=P$7$,>/$7CY$/$J$C$?!#MW2~A1!#(B
(compiler.h, invoker.c, compile.c)

[19990419]

java.lang.Compiler#disable() $B$,8F$P$l$?>u67$G$b!"(B
compileMethod() $B$G$O%3%s%Q%$%k$r9T$&$h$&$K$7$?!#(B
(compile.c)

$B%3%s%Q%$%kCf$N%a%=%C%I$KBP$7$F(B compileAndInvokeMethod() $B$,8F$P$l$?>l9g$O(B
interpret $B$9$k$h$&$K$7$?!#(B
$B%a%=%C%I$,%3%s%Q%$%k$5$l$F$$$k$3$H$rI=$9$?$a$K!"(B
$B%^%/%m(B ACC_BEING_COMPILED $B$rDj5A!#(B
(invoker.c, compiler.h)

$B%3%s%Q%$%kA0$N%a%=%C%I$b(B ACC_MACHINE_COMPILED $B$r%;%C%H$7$F$$$?$H$3$m!"(B
$B%3%s%Q%$%k8e$K$O$8$a$F%;%C%H$9$k$h$&$K$7$?!#(B
(compile.c, invoker.c, runtime.c)

[19990418]

JDK 1.2 for Linux $B$X$NBP1~$r3+;O!#(B
java full version "Linux_JDK_1.2_pre-release-v1"

[19990402]

FreeBSD $B$G$b!"%^%/%m(B __ELF__ $B$,Dj5A$5$l$F$$$?$i!"(B
$B%7%s%\%kF,$X$N(B `_' $B$NDI2C$O$7$J$$$h$&$K$7$?!#(B
(code.h)

[19990331]

(MetaMV) MetaVM $B%5!<%P$K(B -p <port no.> $B%*%W%7%g%s$r<BAu$7$?!#(B
$BBP1~$9$k%W%m%Q%F%#$H$7$F(B metavm.port $B$r8+$k$h$&$K$7$?!#(B
(MetaVMServer.java, VMAddress.java)

[19990321]

(MetaVM) MetaVM $BM-8z;~$O!"(Blibshujit.so $B$G$O$J$/(B libmetavm.so $B$,(B
$B:n$i$l$k$h$&$K$7$?!#(B
(GNUMakefile)

(MetaVM) Skeleton $B$G%j%/%(%9%H=hM}Cf$K%G%P%C%0%a%C%;!<%8$r=PNO$9$k:]!"(B
$B=PNOA0$K(B MetaVM.remoteTransparency(false) $B$r8F$V$h$&$K$7$?!#(B
(Skeleton.java)

(MetaVM) $B%3%s%9%H%i%/%?(B (<init>) $B$O(B methodblock->fb.offset $B$,I,$:(B 0 $B$G!"(B
$B1s3V8F$S=P$7$G<B9T$5$l$F$$$J$+$C$?!#(B
$B%W%m%H%3%k$rJQ99$7!"<B9T$5$l$k$h$&$K$7$?!#(B
(proxy.java, Proxy.java, Skeleton.java, VMOperation.java, vmop.c)

(MetaVM) DistObjectInputStream $B$K!"%/%i%9%m!<%@$r@_Dj$G$-$k$h$&$K$7$?!#(B
($B%a%=%C%I(B DistObjectInputStream#classLoader(ClassLoader cl))
$B$=$N%9%H%j!<%`$+$i%*%V%8%'%/%H$,FI$^$l$k:]!"(B
$B%/%i%9$O$=$N%m!<%@$+$i%m!<%I$5$l$k!#(B
(DistObjectInputStream.java)

(MetaVM) Proxy $B$+$i%/%i%9@8@.MW5a(B (NEW, NEWARRAY, ANEWARRAY, MULTIANEWARRAY) $B$r(B
$BAw$k:]!"%/%i%9%m!<%I85(B (VMAddress $B7?(B) $B$bAw$k$h$&$K$7$?!#(B
Skeleton $B$O%/%i%9$r$=$3$+$i%m!<%I$7!"$^$?%M%C%H%o!<%/%/%i%9%m!<%@$r(B
ObjectInputStream $B$K@_Dj$9$k!#(B
(code.c, proxy.java, Proxy.java, Skeleton.java)

(MetaVM) Skeleton $B$,!"(BREFERENCE $BMW5a$N:](B Proxy $B$K(B
$B%/%i%9%m!<%I85(B (VMAddress $B7?(B)$B$rJV$7!"(BProxy $BB&$O$=$3$+$i%m!<%I$9$k$h$&$K$7$?!#(B
$B=>Mh$O(B Class#forName() $B$r8F$s$G%m!<%+%k$+$i%m!<%I$7$F$7$^$C$F$$$?!#(B
(Skeleton.java,Proxy.java)

[19990317]

(MetaVM) reset $B%3%^%s%I$N=hM}$G!"(BSystem#gc() $B$r8F$V$h$&$K$7$?!#(B
(MetaVMServer.java)

[19990316]

(MetaVM) MetaVM $B$r1s3V@)8f$9$k%D!<%k(B metavmctl $B$rMQ0U$7!"(B
reset $B%3%^%s%I$r<BAu$7$?!#(Breset $B%3%^%s%I$K$h$C$F!"(B
export$BI=!"1s3V%/%i%9%m!<%@!"%/%i%9G[Aw%G!<%b%s$,=i4|2=$5$l$k!#(B
(MetaVMController.java, metavmctl, Skeleton.java, MetaVMServer.java,
 ExportTable.java, RemoteClassLoader.java, ClassDistributionDaemon.java)

(MetaVM) $B%^%/%m(B METAVM_ARRAY $B$r(B METAVM_NO_ARRAY $B$H$$$&(B
$B5U$NLr3d$N%^%/%m$GCV$-49$($?!#(B
(compile.c, code.c, def.mk)

[19990315]

(MetaVM) $B%/%i%9(B VMAddress $B$K(B writeObject(), readObject() $B$r<BAu$7$?!#(B
(VMAddress.java)

(MetaVM) $B%W%m%Q%F%#(B metavm.hostanme $B$G!"(B
$B%m!<%+%k$N%[%9%HL>$r;XDj$G$-$k$h$&$K$7$?!#(B
(VMAddress.java)

(MetaVM) $B%M%C%H%o!<%/%/%i%9%m!<%@$r(B MOBA $B$+$i0\?"$7$?!#(B
$B%*%V%8%'%/%H$N1s3V@8@.;~$K$b!"%/%i%9$N%m!<%I85$r(B
$BC10l(B JVM $B$HF1$8$K$7$?!#(B
(ClassDistributionDaemon.java, ClassDistributor.java,
 LocalClassLoader.java, RemoteClassLoader.java)

(MetaVM) JNI $B$N(B NewGlobalRef() $B$r8F$s$@:]$K!"(B
$B$b$H$N(B jobject $B7?JQ?t$r(B NewGlobalRef() $B$NJV$jCM$GCV$-49$($k$h$&$K$7$?!#(B
(vmop.c, proxy.c, byvalue.c)

[19990306]

(MetaVM) $B1s3V8F$S=P$7$N%W%m%H%3%k$rJQ99!#(B
$B%a%=%C%IL>(B, signature $B$rAw$k$N$r;_$a!"(B
methodtable $BCf$N(B index (uint16_t) $B$rAw$k$h$&$K$7$?!#(B
$BNc30$,H/@8$7$J$+$C$?>l9g$K$O(B null $B$G$O$J$/(B (byte)0 $B$rJV$9$h$&$K$7$?!#(B
$BDL?.NL:o8:!"$*$h$S!"J8;zNs$+$i$N%a%=%C%IC5:w$N:o8:$K$h$j!"9bB.2=!#(B
(code.c, proxy.c, Proxy.java, Skeleton.java, VMOperation.java, vmop.c)

(MetaVM) metavm $B%3%^%s%I(B (MetaVMServer.java) $B$K(B
-n (TCP_NODELAY) $B%*%W%7%g%s$rMQ0U$7$?!#(B
(MetaVMServer.java)

[19990301]

(JITDO) $B%a%=%C%I8F$S=P$7$N0z?t(B (Object[])$B!"(Bmultianewarray $B$N0z?t(B (int[]) $B$r(B
Proxy $B$KJQ2=$5$;$:$KE>Aw$9$k$?$a$K(B wrap $B$9$k%/%i%9!"(B
ArrayOfObjectWrapper, ArrayOfIntWrapper $B$rMQ0U$7$?!#(B

(JITDO) $B$3$l$^$G;2>H7?$NG[Ns(B ([L..., [[...) $B$O(B Copyable $B$@$C$?$,!"(B
$B$"$i$f$kG[Ns$r(B Copyable $B$G$J$/$7$?!#(B

(JITDO) $B;2>H7?$NG[Ns$b1s3V@8@.$9$k$h$&$K$7$?!#(B

(JITDO) ExportTable#expire() $B$G(B
$B$-$A$s$H(B expire $B$,9T$o$l$F$$$J$+$C$?LdBj$KBP=h!#(B
(ExportTable.java)
  
(JITDO) JITDO $B$r(B MetaVM $B$H2~L>!#(B
$B$D$$$G$K%/%i%9(B Copyable $B$r(B ByValue $B$H2~L>!#(B

[19990227]

(JITDO) JITDO.instantiationVM() $B$r8F$P$:$H$b(B remote flag $B$,(B on$B!"(B
$B$D$^$j(B Proxy $B$,1s3V%*%V%8%'%/%H$K8+$($k$h$&$K$7$?!#(B
JIT $B%3%s%Q%$%i$N=i4|2=(B (java_lang_Compiler_start()) $B;~$K(B
on $B$K$9$k$h$&$K$7$?!#(B
(compiler.c)

(JITDO) $B%*%V%8%'%/%H$KBP$9$kA`:n;~$K(B remote flag $B$N%A%'%C(B
$B%/!"%*%V%8%'%/%H(B instanceof Proxy $B$H$$$&=g$G%A%'%C%/$7$F(B
$B$$$?$H$3$m!"%A%'%C%/=g$r5U$K$7$?!#(B
remote flag $B$N%G%U%)%k%HCM$r(B on $B$K$7$?$N$r<u$1$F!"(B
$B%m!<%+%k<B9T$N@-G=8~>e$N$?$a!#(B
(code.c)

(JITDO) DistObject*Stream $B$K(B Buffered*Stream $B$r$+$^$7$?!#(B
JITDOServer $B$N(B -b $B%*%W%7%g%s$+%W%m%Q%F%#(B metavm.bufsize $B$G(B
$B%P%C%U%!%5%$%:$r;XDj$G$-$k$h$&$K$7$?!#(B
(Proxy.java, Skeleton.java, JITDO.java, JITDOServer.java)

(JITDO) $B%W%m%Q%F%#(B metavm.tcp_nodelay $B$,(B true, yes, enable $B$J$I$N>l9g!"(B
$B:n$C$?%=%1%C%H$KBP$7$F(B setTcpNoDelay(true) $B$r8F$V$h$&$K$7$?!#(B
(Proxy.java, JITDOServer.java, JITDO.java)

[19990228]

(JITDO) $B%*%V%8%'%/%H$N0LCV(B (VMAddress) $B$rF@$k%a%=%C%I(B
Proxy#address() $B$rMQ0U$7$?!#(B
(Proxy.java)

$B%G%P%C%0;~!"(Bcheckcast, instanceof $BL?Na$G%/%i%9L>$r=PNO$9$k$h$&$K$7$?!#(B
(code.c)

(JITDO) forceToImplement() $B$G85$N(B imethodtable $B$r(B free() $B$G2rJ|$7$F$$$?$,!"(B
$B$3$l$r;_$a$?!#J#?t%/%i%9$G6&M-$5$lF@$k$N$GC1=c$K2rJ|$O$G$-$J$$!#(B
$B%a%b%j%j!<%/$r5/$3$7F@$k(B...
(type.c)

[19990226]

(JITDO) arraylength $BL?Na$KBP1~!#(B

[19990225]

(JITDO) $B%/%i%9L>$rJQ99!#(B
JitdoController -> JITDO
JitdoServer -> JITDOServer
RequestServer -> Skeleton

(JITDO) $B$3$l$^$GG[Ns7?$O(B Copyable $B$@$C$?$,!"(B
$B4pK\7?$NG[Ns$O(B Copyable $B$G$J$/$7$?!#(B

(JITDO) $BG[Ns$X$N1s3V;2>H$O8=<BE*$G$O$J$$$HH=CG!#(B
$B4JC1$KIQHK$K8F$S=P$5$l$k(B System#arraycopy() $B$G:$$C$?$3$H$K$J$k$N$G!#(B
$B%^%/%m(B JITDO_ARRAY $B$r?7@_$7$FA*Br$G$-$k$h$&$K$7$?!#(B

[19990224]

(JITDO) $B;2>H7?$N%U%#!<%k%I$KBP$7$F$b(B
32bit $B7?$NFI$_=q$-$,$J$5$l$F$$$?$N$r=$@0!#(B
(compile.c)

(JITDO) $BG[Ns$NFI$_=q$-$r(B JITDO $BBP1~$K$7$?!#(B
$BG[Ns$N@8@.$N(B JITDO $BBP1~$O40N;$7$F$$$J$$!#(B
(code.c, proxy.c, metavm.h)

[19990223]

$B%i%$%V%i%j$r(B sysAddDLSegment() $B$9$k;EAH$_$rJQ99$7$?!#(B
FreeBSD $B$N$_(B libc, libm $B$N(B sysAddDLSegment() $B$r%O!<%I%3!<%I$7$F$$$?$H$3$m!"(B
$B$h$j(B generic $B$J;EAH$_$K$7!"$5$i$K4D6-JQ?t$GJQ99$G$-$k$h$&$K$7$?!#(B
$B%G%U%)%k%H$G(B FreeBSD 4.0-current $B$KBP1~$7$?!#(B
(compiler.c, compiler.h)

(JITDO) $B1s3V%*%V%8%'%/%H$KBP$9$k(B monitorenter, monitorexit $B$KBP1~$5$;$?!#(B
(code.c, Protocol.java, Proxy.java, RequestServer.java, proxy.c, 

0.2.10 $B%j%j!<%9!#(B
IGNORE_DISABLE $B$O(B #undef $B$KLa$7$?!#(B

[19990222]

(JITDO) $B$-$A$s$HF0:n$5$;$k$3$H$,$G$-$?!#(B

[19990221]

checkcast, instanceof $BL?Na$N(B pre-assembled code $B$K(B
ClassClass * $B$r=q$-9~$`2s?t$r(B 1$B2s$K$7$?!#(B
(code.c, compile.c)

[19990220]

invoke* $BL?Na$N(B pre-assembled code $BCf$G!"(Becx $B$H(B edi $B$NLr3d$rF~$l49$($?!#(B
(code.c)

(JITDO) $BBgI}$KJQ99!#(B
(code.c)

[19990214]

$B%U%!%$%kF,$N(B copyright $BI=<($b$-$A$s$H(B GPL $B$N$b$N$K$7$?!#(B

__asm__ $B$r(B asm $B$K=q$-49$($?!#(B

native code $B$+$i(B invokeMethod() (runtime.c) $B$r8F$V:]$K!"(B
$B8F$S=P$7;~E@$N%9%?%C%/%]%$%s%?$r(B push $B$9$k$N$G$O$J$/!"(B
native code $B$G6I=jJQ?t$N%Y!<%9$r7W;;$7$F$*$$$F$=$l$r(B push $B$9$k$h$&$K$7$?!#(B
(code.c, runtime.c)

0.2.9a $B%j%j!<%9!#(B
0.2.9 $B$G(B #define IGNORE_DISABLE $B$H$7$?$@$1!#(Bjava Linpack $B$N7k2L$,NI$$$N$G!#(B
jre Linpack $B$G$N7k2L$O(B #undef $B$NJ}$,NI$$!#IT;W5D!#(B

[19990210]

FreeBSD $B$G$O!"(Bsignal handler $B$r:F@_Dj$9$k:]$K(B
$B$=$N(B signal (SIGSEGV or SIGBUS) $B$r(B unblock $B$9$k$h$&$K$7$?!#(B
signal handler $B<B9TCf$O$=$N(B signal $B$O(B block $B$5$l$F$$$k$N$G!"(B
unblock $B$7$F$*$+$J$$$H<!2s$N(B NullPointerException $BH/@8;~$K%O%s%0$9$k!#(B
(compiler.c)

CompilerContext $B$rI,MW$JEY$K(B malloc(), free() $B$7$F$$$?$N$r;_$a!"(B
CompilerContext $B$N%W!<%k$r@_$1$F:FMxMQ$9$k$h$&$K$7$?!#(B
computil.c $B$N30$+$i$O(B newCompilerContext() $B$G$O$J$/(B getCompilerContext()$B!"(B
freeCompilerContext() $B$G$O$J$/(B releaseCompilerContext() $B$r;H$&$Y$7!#(B
(computil.c, compiler.h, compile.c)

throwtable $B$N%G%U%)%k%H$N%5%$%:$r>.$5$/$7$?!#(B1024 -> 8$B!#(B
$B%a%b%j$rBg$-$/?)$&860x$@$C$?!#(B
javac $B$G(B 45MB $B$[$I?)$C$F$$$?$H$3$m!"(B25MB $B$/$i$$$K$J$C$?!#(B
(compiler.h)

0.2.9 $B%j%j!<%9!#(B

[19990209]

$B%*%W%7%g%s(B cmplatload $B$rMQ0U!#(B
$B%/%i%9$r%m!<%I$7$?;~E@$G%a%=%C%I$9$Y$F$r%3%s%Q%$%k$9$k!#(B
JIT $B$,5/F0$7$?;~E@$G$9$G$K%m!<%I$5$l$F$$$k%/%i%9$N%a%=%C%I$b%3%s%Q%$%k$9$k!#(B
$B$^$@$-$A$s$HF0:n$7$J$$!#(BSIGSEGV $B$GMn$A$k!#(B
(compiler.c, compiler.h)

FreeBSD $B$G(B EXC_BY_SIGNAL $B$rM-8z$K$9$k$H!"$^$l$K(B SIGALRM $B$GMn$A$kLdBj$KBP=h!#(B
FreeBSD $B$G$O!"(Bsignal handler $B$,8F$P$l$?:]$K(B signal $B$KBP1~$9$k(B
handler $B$,%/%j%"$5$l$F$7$^$&$N$G!"(BsignalHandler() (compiler.c) $B$G(B
intrInitMD() $B$r8F$V$3$H$G$9$Y$F$N(B signal handler $B$r:F@_Dj$7$F$$$?!#(B
$B$H$3$m$,(B JDK for FreeBSD $B$N(B intrInitMD() $B$G$O(B SIGALRM $B$KBP$9$kITMW$J@_Dj$r(B
$B$7$F$$$k$?$a!"(BGreen Threads $B$,@_Dj$7$?(B handler $B$r>e=q$-$7$F$7$^$C$F$$$?!#(B
intrInitMD() $B$r8F$V$N$r;_$a!"I,MW$J:F@_Dj$N$_9T$&$h$&$K$7$?!#(B
(compiler.c)

OS $B$K$+$+$o$i$:!"(BEXC_BY_SIGNAL $B$,M-8z$J>l9g$K(B
signal handler $BFb$G(B handler $B$r:F@_Dj$9$k$h$&$K$7$?!#(B
JDK $B$N(B signalHandlerPanic() $B$r7PM3$;$:$KL\E*$N(B handler $B$,8F$P$l$k$h$&$K!#(B
$BH<$$!"(Bsigcontext $B$r:G=i$N(B 2$B2s$OC5:w$9$k$h$&$K$7$?!#(B
(compiler.c)

[19990208]

0.2.8 $B%j%j!<%9!#(B

[19990207]

gdbm_*(), dbm_*() $B$N%"%I%l%92r7h$r%j%s%+$KMj$i$:$K!"(B
dlopen(), dlsym() $B$G9T$&$h$&$K$7$?!#(B
libgdbm.so, libndbm.so $B$,$J$/$H$bF0:n$9$k$h$&$K!#(B
(compiler.c, codedb.c, compiler.h)

code DB $BFb$r1\Mw$9$k%D!<%k(B codedbinfo $B$rMQ0U!#(B
(codedbinfo.c, GNUmakefile)

[19990206]

writeCode() (compile.c) $BCf$G$9$Y$F9T$C$F$$$?Dj?t$N2r7h$N$&$A!"(B
$B<B9T$N$?$S$KJQ$o$jF@$k$b$N$N2r7h$r(B resolveDynamicConstants() $B$KJ,N%$7$?!#(B
(compile.c)

$B%^%/%m(B GET_SIGCONTEXT $B$rDj5A$7$?>l9g!"(BEXC_BY_SIGNAL $B$K$+$+$o$i$:!"(B
signal handler $B$G(B struct sigcontext $B$NCf?H$rI=<($9$k$h$&$K$7$?!#(B
$B%G%P%C%0$N$?$a!#(B
(compiler.c, runtime.c, compiler.h)

getstatic, putstatic $B$,(B constant pool $B$+$i;2>H$9$k(B $B%U%#!<%k%I$r(B
$B2r7h(B (ResolveClassConstant*()) $B$7K:$l$F$$$?$N$r=$@0!#(B
(compile.c)

$B9=B$BN(B throwentry $B$N3F%a%s%P$N%5%$%:$rJQ99!#(B
throwentry $B$NI=$b(B code DB $B$K5-O?$9$kI,MW$,$"$k$?$a!"%5%$%:$r>.$5$/$7$?!#(B
(compiler.h)

$B@8@.$7$?(B native code $B$r%U%!%$%k$KJ]B8!":FMxMQ$9$k5!G=$r<BAu!#(B
def.mk $BCf$N(B CODE_DB $B$rM-8z$K$7$F%3%s%Q%$%k$7!"(B
$B%*%W%7%g%s(B codedb $B$GMxMQ$G$-$k!#(B
(def.mk, GNUmakefile, codedb.c, compile.c, compiler.c, compiler.h, computil.c)

gcc 2.7 $BMQ$N%"%;%s%V%j%3!<%I=$@0%9%/%j%W%H(B postcmpl.rb $B$r!"(B
$B%3%s%Q%$%i$,@8@.$7$?ItJ,$OJQ99$7$J$$$h$&$K$7$?!#(B
`leal \.?LC' $B$K%^%C%A$7$F!"$+$D<!$N9T$,(B `#APP' $B$@$C$?>l9g$N$_!"(B
leal $B$r(B pushl $B$KCV49$9$k!#(B
(postcmpl.rb)

[19990205]

native code $B$+$i(B invokeMethod() (runtime.c) $B$r8F$V:]$K!"(B
%edi, %esi $B$r%9%?%C%/$KB`Hr$9$k$N$r$d$a$?!#%a%=%C%I8F$S=P$79bB.2=!#(B
(code.c)

invokeMethod() (runtime.c) $B$N0z?t$N=g$rJQ$($?!#(B
mb->invoker() $B$r8F$S=P$9:]$K0z?t(B 4$B$D$N(B push $B$r>J$3$&$H$$$&7W2h$X$NI[@P!#(B
$B7W2h$OFU:B!D(B
(runtime.c, compiler.h, code.c)

$B%*%W%7%g%s(B igndisable $B$@$1$G$J$/!"%^%/%m(B IGNORE_DISABLE $B$G!"(B
java.lang.Compiler#disable(),enable() $B$rL58z2=$G$-$k$h$&$K$7$?!#(B
(compiler.c, runtime.c, invoker.c, compiler.h)

invokeMethod() $BCf$G!"@8@.$5$l$?(B native code $B$r8F$V:]$N(B
$B>r7oH=CG$r$R$H$D8:$i$7$?!#%a%=%C%I8F$S=P$79bB.2=!#(B
(runtime.c)

[19990201]

struct sigcontext $B$rC5$95/E@$NI=8=J}K!$rJQ$($?!#(B
$B$R$H$DL\$N6I=jJQ?t$N%"%I%l%9(B + 16 -> &uc
(compiler.c)

[19990130]

signal $B$rMxMQ$7$F(B null check $B$r:o8:$7$?!#(B
$B$"$k>l9g$K(B SIGSEGV or SIGBUS $B$r(B NullPointerException $B$H8+Jo$9!#(B
(code.c, code.h, compiler.c compiler.h)

pre-assembled code $B$NF,$K!"$=$N%3!<%I$,(B NullPointerException $B$r(B
throw $B$7F@$k$+$I$&$+$N%U%i%0$r2C$($?!#(B
(code.h, code.c, gentable.rb)

$B9=B$BN(B CodeInfo $B4X78$N4X?t$r(B runtime.c $B$+$i(B computil.c $B$K0\$7$?!#(B
(runtime.c, computil.c)

$B9=B$BN(B CompilerContext $B$N%a%s%P$G$"$C$?(B
exc_handler_nativeoff, finish_return_nativeoff
$B$r9=B$BN(B CodeInfo $B$K0\$7$?!#(B
signal handler $B$+$iNc30%O%s%I%i$N%"%I%l%9$r8+IU$1$k$?$a$K(B
$B<B9TCf$K$b(B exc_handler_nativeoff $B$,I,MW$H$J$C$?$?$a!#(B
(compiler.h, compile.c)

0.2.7 $B%j%j!<%9!#(B

[19990127]

long $B7?$N(B shift $BL?Na(B (lshl, lshr, lushr) $B$N(B pre-assembled code $B$N(B
$B%P%0$r=$@0!#$d$O$j(B egcs-1.0.3 $B$,@8@.$9$k%3!<%I$,%Y!<%9!#(B
(code.c)

writeCode() (compile.c) $BCf$N!"@8@.$7$?%3!<%I$r=q$-9~$`%"%I%l%9(B
cc->bufp $B$r%-%c%C%7%e$9$kJQ?t(B bufp $B$NCM$,!"%P%C%U%!3HD%$N:]$K(B
obsolete $B$K$J$k%P%0$r=$@0!#(B
$B?t%u7nA0$K$bF1MM$N%P%0$KG:$^$5$l$?5-21$,!D(B
(compile.c)

$B>e5-=$@0$KH<$$!"%^%/%m(B lastBufend()$B!"9=B$BN(B 
CompilerContext $B$N%a%s%P(B lastbufp_off $B$,ITMW$K$J$j!":o=|!#(B
(compiler.h, computil.c)

[19990121]

pre-assembled code $BCf$N%i%Y%kL>$N%9%Z%k%_%9$rD{@5!#(B
  exc_hanlder_shift_done -> exc_handler_shift_done
(code.c)

long $B7?$N(B shift $BL?Na(B (lshl, lshr, lushr) $B$G!"(B
`rorb $1,%cl' $B$r(B `rorb %cl' $B$H$7$?!#(B
(code.c)

iload_*, lload_* $BL?Na$G!"(B
`movl 0(%esi),...' $B$r(B `movl (%esi),...' $B$H$7$?!#(B
(code.c)

invokeJITCompiledMethod() (invoker.c) $BCf$G!"(B
invoke{,Synchronized}JavaMethod() $B$r8F$S=P$9Be$o$j$K=hM}$r=q$-2<$7$?!#(B
$B%a%=%C%I8F$S=P$7$N9bB.2=!#(B
(invoker.c)

invokeJITCompiledMethod() $BCf$K(B profiling (java -prof) $B$N$?$a$N(B
$B;~4V7WB,%3!<%I$rF~$l$?!#$?$@$7!"%G%U%)%k%H$G$OL58z2=$7$F$"$k!#(B
$B%^%/%m(B ENABLE_PROFILING $B$GM-8z$K!#(B
(invoker.c)

0.2.6 $B%j%j!<%9!#(B

long $B7?$N(B shift $BL?Na(B (lshl, lshr, lushr) $B$N(B pre-assembled code $B$r!"(B
gcc-2.7.2.3 $B$N@8@.$9$k$b$N$+$i(B egcs-1.0.3 $B$N$=$l$KJQ99$7$?!#(B
(code.c)

[19990120]

$B@8@.$9$k(B native code $B$NF,$G9T$C$F$$$?(B native code $B$N%"%I%l%9$r5a$a$k=hM}(B
  nativecode = mb->CompiledCode
$B$r!"%"%I%l%9$rI,MW$H$9$k3F2U=j(B
  exc_handler, ret, tableswitch, lookupswitch, new(rewrite)
$B$K0\$7$?!#6I=jJQ?t(B nativecode $B$r:o=|!#(B
$B%a%=%C%I8F$S=P$7$N9bB.2=!#(B
(code.c)

$BNc30H/@8;~$K%9%?%C%/$r%/%j%"$9$k$?$a$K!"%9%?%C%/$N%Y!<%9$r(B
native code $B$N6I=jJQ?t(B ostack $B$KJ]B8$7$F$$$?!#(B
$B$3$N(B ostack $B$r:o=|$7!"Nc30H/@8;~$K%"%I%l%9$r7W;;$9$k$h$&$K$7$?!#(B
(code.c)

native code $B$N6I=jJQ?t$N$?$a$K(B 48$B%P%$%H3NJ]$7$F$$$?$H$3$m!"(B
$B:GDc8BI,MW$J(B 4$B%P%$%H$K8:$i$7$?!#(B
(code.c)

[19990118]

class initializer $B$O%3%s%Q%$%k$7$J$$$h$&$K$7$?!#(B
(compiler.c)

$B%*%W%7%g%s(B cmplclinit $B$rMQ0U!#(B
class initializer $B$r%3%s%Q%$%k$9$k!#(B
(compiler.c, compiler.h)

[19990117]

0.2.5 $B%j%j!<%9!#(B

[19990110]

GNU bash, version 2.01.1(1)-release $B$G$O!"%7%'%k%9%/%j%W%H(B
  for subdir in ; do ...
$B$H(B in $B$N8e$,6u$@$H(B syntax error $B$K$J$kLdBj$KBP=h!#(B
bash 1.14.7 $B$G$O(B error $B$K$J$i$J$+$C$?!#(B
[Thanks bug report to $B9b66=(L@$5$s(B <htaka@nalgo.co.jp>]
(GNUmakefile)

[19990109]

$B3F%P%$%H%3!<%IL?Na$N(B pre-assembled code $B$r(B
x86 $B$GL$Dj5A$G$"$k(B 0xf1 $B$G6h@Z$k$h$&$K$7$?!#(B
$B$3$l$^$G$O(B 0x0f, 0x0f $B$G6h@Z$C$F$-$?$N$@$,!"(B
$B$3$l$,(B AMD 3D Now! $BL?Na$N(B prefix $B$H$7$F;H$o$l!"(B
3D Now! $BL?Na$KBP1~$7$?(B GNU binutils $B$,=P$F$-$?$?$a!#(B
[Thanks bug report to $B9b66=(L@$5$s(B <htaka@nalgo.co.jp>]
(code.h, gentable.rb)

[19990107]

$B4X?t(B invokeCompiledMethod() $B$r(B invokeJITCompiledMethod() $B$K2~L>!#(B
(invoker.c, compiler.c, compiler.h, runtime.c)

0.2.4 $B%j%j!<%9!#(B

[19990106]

java_lang_Compiler_start() (compiler.c) $B$,J#?t2s8F$P$l$?>l9g$K!"(B
2$B2sL\0J9_$O=i4|2=$r<B9T$7$J$$$h$&$K$7$?!#(B
$B%/%i%9(B java.lang.Compiler $B$,(B GC $B$G2s<}$5$l$F:F$S%m!<%I$5$l!"(B
Compiler#<clinit> -> Compiler#initialize() -> java_lang_Compiler_start() $B$H(B
$B:F$S8F$P$l$F$7$^$&$3$H$,$"$k$?$a!#(B
Swing $B$N(B javax.swing.UIManager#initialize() $B$G(B
java.lang.Compiler#disable(),enable() $B$r8F$V$?$a$K(B
java.lang.Compiler $B$,:F$S%m!<%I$5$l$k!#(B
(compiler.c)

$B%*%W%7%g%s(B igndisable $B$N5sF0$rJQ99!#(B
$B$=$b$=$b(B java.lang.Compiler#disable(), enable() $B$,F/$+$J$$$h$&$K$7$?!#(B
(compiler.c, invoker.c, compile.c)

bool_t UseLosslessQuickOpcodes $B$r8m$C$F(B FALSE $B$K$7$F$$$?$H$3$m!"(B
TRUE $B$KD>$7$?!#(B
(compiler.c)

java.lang.Compiler#disable(), enable() $B$,$-$A$s$HF/$/$h$&$K$7$?!#(B
$BM>7W$J%A%'%C%/$NJ,!"%a%=%C%I8F$S=P$7$N@-G=$O<c43Dc2<$9$k!)(B
disable $B$5$l$F$$$k>l9g!"(B
compileAndInvokeMethod() (invoker.c) $B$K$F!"%P%$%H%3!<%I$r8F$S=P$7!"(B
invokeMethod() (runtime.c) $B$K$F!"(BcompileAndInvokeMethod() $B$r8F$V$J$i(B
restack $B$9$k$h$&$K$7$?!#(B
(invoker.c, runtime.c)

[19990105]

$B%*%W%7%g%s(B igndisable $B$rMQ0U!#(B
java.lang.Compiler#disable() $B$rL58z2=$9$k!#(B
(compiler.c, compiler.h)

compileAndInvokeMethod() (invoker.c) $B$K$F!"(BJIT $B$,(B disalble $B$5$l$F$$$?$i(B
JDK $BFb$N(B invoke*Method() $B$r8F$V$h$&$K$7$?!#(B

$BJQ?t(B `sym_$B4X?tL>(B' $B$H$7$F!"(BinvokeAbstractMethod(), invokeLazyNativeMethod() $B$N(B
$B%"%I%l%9$rMQ0U$7$?!#(B
(compiler.c, compiler.h)

access2invoker() (computil.c) $B$G!"(BinvokeAbstractMethod $B$J$I(B
$BD>@\4X?t$N%"%I%l%9$rMxMQ$9$kBe$o$j$K(B sysDynamicLink() $B$G2r7h$7$F$*$$$?(B 
sym_invokeAbstractMethod $B$J$I$rMxMQ$9$k$h$&$K$7$?!#(B
(computil.c)

[19990104]

invokeMethod() (in runtime.c) $BCf$G!"(Bstatic $B%a%=%C%I8F$S=P$7$N:]$K(B
$B%/%i%9%*%V%8%'%/%H$rF@$k=hM}$r(B pre-assembled code (code.c) $B$K0\$7$?!#(B
CaffeineMark 3.0 $B$N(B Float, String $B$N7k2L$O8~>e!"(B
Linpack benchmark $B$N7k2L$ODc2<$7$?(B ???
(runtime.c, code.c)

[19990103]

$B%/%l%8%C%H!"Cx:n8"I=<($K(B `1999' $B$rDI2C!#(B

FreeBSD, gcc 2.7.2.1 $B$G(B make $B$,DL$k$h$&$K!"(B
GNUmakefile $B$N(B code.s $B<~JU$r=$@0!#(B
(GNUmakefile)

invokeMethod() (in runtime.c) $B$X$NJQ99$G(B Linpack for
Java $B$,$+$J$jCY$/$J$C$F$$$?$N$r!"(Bshujit-0.2.3 $B$N(B 
runtime.c $B$r;29M$K=$@0!#(B
(runtime.c)

[19981231]

$BJ8;zNs$N%"%I%l%9$r(B push $B$9$k%3!<%I(B (PUSH_CONSTSTR(...) in code.h) $B$G!"(B
gcc 2.7.2.[13] $B$G$OM>7W$J%l%8%9%?(B (esi) $B$r;H$C$FFbMF$r2u$7$F$$$?!#(B
egcs 1.0.3 $B$N@8@.$9$k%3!<%I$G$OLdBj$,$J$+$C$?!#(B
gcc 2.7.X $B$G(B code.o $B$r@8@.$9$k:]$O!"(Bcode.s $B$r(B
ruby $B%9%/%j%W%H(B (postcmpl.rb) $B$G=$@0$9$k$h$&$K$7$?!#(B
[Thanks bug report to $B9b66=(L@$5$s(B <htaka@nalgo.co.jp>,
 Justin Wells $B$5$s(B <justin@semiotek.com>]
(postcmpl.rb, GNUmakefile)

[19981228]

invokeMethod() $B$J$I$G$N(B prepareCompiledCodeInfo() $B$N8F$S=P$7$r(B
initializeClass(), compileClass() (compiler.c) $B$K0\F0$7$?!#(B
(runtime.c, compiler.c)

[19981227]

struct CatchFrame (oobj.h) $B$K%a%s%P(B state $B$r2C$($?(B
CatchFrame_w_state $B7?$rMQ0U!#(B
(compiler.h)

exception_handler $BCf$G!"H/8+$7$?Nc30%O%s%I%i$,2>Dj$9$k(B state $B$K(B
$BA+0\$9$k$h$&$K$7$?!#(B
(code.c)

[19981216]

$B%a%=%C%I$4$H$NNc30%O%s%I%i$X$N%8%c%s%W(B (SIGNAL_ERROR* in code.h) $B$G!"(B
state 0 $B$KA+0\$7$F$*$/$h$&$K$7$?!#(B
(code.h, code.c)

[19981129]

checkcast $BL?Na$G!"(B
$BBP>]%*%V%8%'%/%H$,(B null $B$N>l9g$K(B is_instance_of() $B$r8F$P$J$$$h$&$K$7$?!#(B

[19981030]

(JITDO) JITDO $B%5!<%PFb$N(B thread pool $B$r:n$jD>$7$?!#(B
(NET/shudo/metavm/{ThreadPool,JitdoServer,RequestServer}.java)

[19981022]

JVM $B$K(B SIGQUIT $B$rAw$k$HFbIt>uBV$r%@%s%W$9$k$O$:$,(B SIGSEGV $B$,H/@8$7$F$$$?!#(B
signalHandler() $BCf$G!"(BshowStackFrames(EE()) $B$r;_$a$?!#(B
(compiler.c)

(JITDO) JITDO $B%5!<%P$NOHAH$,$G$-$?!#(B
$B5/F0%9%/%j%W%H(B metavm/bin/metavm $B$rMQ0U!#(B

[19981017]

(JITDO) Runtime Compiler $B$K$h$k(B JVM $B$NJ,;6%*%V%8%'%/%HBP1~!"(B
JITDO (JIT Ditributed Object) $B<BAu3+;O!#(B
(metavm/, NET/shudo/metavm/)

[19981010]

32bit $B@0?t$N=|;;(B (idiv $BL?Na(B) $B$G!"(Bstate 4 $B$K8B$j!"(B
$BHd=|?t$r(B 64bit $B$KId9f3HD%(B (x86 $B$N(B CDQ $BL?Na(B) $B$9$k$N$rK:$l$F$$$?!#=$@0!#(B
Swing $B$N(B JTextArea, JTextField $B$GJ8;z$,IA2h$5$l$J$$%P%0$N1s0x$H$J$C$F$$$?!#(B
(code.c)

32bit $B@0?t$N=|;;(B (idiv $BL?Na(B) $B$G!"Hd=|?t$r(B 64bit $B$KId9f3HD%$9$kA0$K(B
EDX $B%l%8%9%?$rL5BL$K(B 0 $B%/%j%"$7$F$$$?$N$r>J$$$?!#(B
(code.c)

0.2.3 $B%j%j!<%9!#(B

[19981005]

Linux $B$G$O!"(Blibc $B$N<oN`$K$h$C$F(B
$B%^%/%m(B RESOLVE_SYMBOL_ON_CODE $B$rJQ$($k$h$&$K$7$?!#(B
(compiler.h)

[19981004]

compiledCode() -> assembledCode() $B$H4X?tL>$rJQ$($?!#(B
(code.c, compile.c, compiler.[hc], gentable.rb)

[19981003]

dlopen(..., RTLD_LAZY) $B$G%m!<%I$7$?%i%$%V%i%jCf$N4X?t$N%"%I%l%9$r!"(B
$B$=$N4X?t$r<B9T$9$kA0$KF@$i$l$k$+(B (Linux libc5)$B!"F@$i$l$J$$$+(B (FreeBSD) $B$K(B
$B0MB8$7$J$$%3!<%I$H$7$?!#JQ?t(B `sym_$B4X?tL>(B' $B$NF3F~!#(B
(compiler.c, compiler.h, compile.c)

libc5 $B$N4D6-$G$O(B dlopen(), dlsym() $B$G%"%I%l%9$rF@$?4X?t$N%3!<%I$r(B
$B=q$-49$($i$l$k$N$G!"$"$i$+$8$a4X?t$N%"%I%l%9$r2r7h!"=q$-9~$s$G$$$?$,!"(B
$B%3!<%I$,=q$-49$(2DG=$G$"$k$3$H$r2>Dj$9$k$N$r;_$a$?!#(B
$B%^%/%m(B RESOLVE_SYMBOL_ON_CODE $B$r(B #undef$B!#(B
glibc2 $BBP1~$N0l4D$G$b$"$k!#(B
(compiler.h)

0.2.2 $B%j%j!<%9!#(B

[19981001]

$B8F$S=P$5$l$?%a%=%C%I$,%3%s%Q%$%k$5$l$k:]!"%3%s%Q%$%kCf$K(B
$B5/$3$kJL$N%a%=%C%I8F$S=P$7$K$h$C$F0z?t$,GK2u$5$l$k$3$H$,$"$kLdBj$KBP=h!#(B
AWT $B$G:8C<$N(B MenuBar $B$NJ8;z$,I=<($5$l$J$$%P%0$N1s0x$H$J$C$F$$$?!#(B
(invoker.c)

[19980928]

FreeBSD $B$G4X?t(B fmod() $B$N%"%I%l%9$r2r7h$G$-$F$$$J$+$C$?$N$G!"(B
libc $B$HF1MM$K(B libm $B$b$"$i$+$8$a(B sysAddDLSegment() $B$7$F$*$/$h$&$K$7$?!#(B
(compiler.c)

0.2.1 $B%j%j!<%9!#(B

[19980927]

$B%*%W%7%g%s(B dontcmplvmcls $B$rMQ0U!#(B
JIT $B=i4|2=;~$K4{$K%m!<%I$5$l$F$$$k%/%i%9$O%3%s%Q%$%k$7$J$$!#(B
(compiler.c, compiler.h)

[19980926]

new $BL?Na$G!"(Bnative code $B$,<+?H$r=q$-49$($k:]$N%*%U%;%C%H!"(B
FreeBSD $B$N>l9g$NCM$r5-=R!#(B
(code.c)

FreeBSD $B$GF0:n!#(B
javac, CaffeineMark 3.0 $BB>$GF0:n$r3NG'!#(B

0.2 $B%j%j!<%9!#(B

[19980925]

lmul $BL?Na(B (64bit $B@0?t$N>h;;(B) $B$r!"4X?t8F$S=P$7$+$i<+A0$N<BAu$K@ZBX$($?!#(B
FreeBSD $BHG(B JDK $B$G$O4X?t(B (__muldi3()) $B$rMxMQ$G$-$J$$$N$G!#(B
(code.c)

[19980922]

FreeBSD $B$N(B dlsym() $B$G$O!"(Bshared library $B$r(B dlopen(..., RTLD_LAZY) $B$7$?>l9g$K!"(B
$B4X?t$N%"%I%l%9$O$=$N4X?t$,<B9T$5$l$k$^$G(B (?) $B2r7h$5$l$J$$$h$&$J$N$G!"(B
$B4X?t$N%"%I%l%9$rD>@\F@$h$&$H$7$F$$$k%3!<%I$r(B
sysDynamicLink() $B$r;H$&$h$&$K$7$?!#(B
(compile.c)

FreeBSD $B$N>l9g!"(Bgentable.rb $B$,(B constants.c $BCf$N4X?t%F!<%V%k$r@8@.$9$k:]$K(B
$B4X?tL>$NF,$N(B `_' $B$r:o=|$9$k$h$&$K$7$?!#(B
(gentable.rb)

Linux $B$G$O(B sysDynamicLink() $B$G(B libc $BCf$N%7%s%\%k$N%"%I%l%9$rF@$i$l$k$,!"(B
FreeBSD $B$G$OF@$i$l$J$$!#(B
$BF@$i$l$k$h$&$K(B libc $B$r(B sysAddDLSegment() $B$7$F$*$/$h$&$K$7$?!#(B
(compiler.c)

[19980921]

$B%*%W%7%g%s(B ($B4D6-JQ?t(B JAVA_COMPILER_OPT $B$GM?$($k(B)$B!"(Bcodesize $B$rMQ0U!#(B
$B%a%=%C%I$4$H$N!"(Bbyte code $B$NL?Na?t!"%5%$%:!"@8@.$5$l$?%3!<%I$N%5%$%:$NI=$r(B
$B%U%!%$%k(B `jit_codesize' $B$K=PNO$9$k!#(B
(compiler.c, compile.c, compiler.h)

$B%3!<%I%5%$%:$N9g7W!"@8@.$5$l$?%3!<%I(B / byte code $B$NHf$r7W;;$9$k(B
ruby $B%9%/%j%W%H$rMQ0U!#(B
(rate_codesize.rb)

[19980920]

0.1 $B%j%j!<%9!#(B

[19980919]

$B%"%;%s%V%j%3!<%I$+$i$N4X?t8F$S=P$7J}K!$r(B FreeBSD $B$KBP1~$5$;$?!#(B
stdout$B!"%7%s%\%k$KIU$/(B `_' $B$J$I!#(B
(code.h, code.c)

[19980912]

$B:#$^$G$O!"(BJIT $B%3%s%Q%$%i$N=i4|2=;~$K!"4X?t$N%7%s%\%k$,%m!<%I$5$l$?%"%I%l%9$r(B
native code $B$N%F%s%W%l!<%H$K=q$-9~$s$G$*$/$3$H$G!"(BJIT $B%3%s%Q%$%k;~$N(B
dlsym() ($B<B:]$O(B sysDynamicLink()) $B$N8F$S=P$7$r:o8:$7$F$$$?!#(B
Linux $B$G$O!"(Bdlopen(), dlsym() $B$G%"%I%l%9$rF@$?4X?t$N%3!<%I$r=q$-49$($i$l$k$,!"(B
FreeBSD $B$G$O(B Bus Error $B$H$J$k$N$G!">e5-$N:GE,2=$r9T$&$+9T$o$J$$$+(B
$B%^%/%m(B RESOLVE_SYMBOL_ON_CODE $B$G@)8f$G$-$k$h$&$K$7$?!#%G%U%)%k%H$O(B disable$B!#(B
(compile.c, compiler.c)

[19980826]

FreeBSD 2.2.5R $B$N(B /usr/bin/as (GNU assembler 1.92.3) $B$,(B
rdtsc $BL?Na$r<u$1IU$1$J$$$N$G!"(B.byte 0x0f,0x31 $B$K$7$?!#(B
(x86tsc.c)

[19980824]

code.o $B$N@8@.;~!"(Bcode.c -> code.s -> code.o $B$H%"%;%s%V%j%3!<%I$r(B
$B7PM3$5$;$k$N$r;_$a$?!#(B
(Makefile)

[19980823]

FreeBSD $B$G$N%3%s%Q%$%k$N$?$a$K<c43=$@0!#(B
(compile.c, gentable.rb)

[19980817]

$B4D6-JQ?t(B JAVA_COMPILER_OPT $B$G!"(BJIT compiler $B$K(B
$B%*%W%7%g%s$rM?$($k;EAH$_$rMQ0U$7$?!#(B
`,' $B$^$?$O(B ` ' $B$G6h@Z$C$F3F%*%W%7%g%s$rM?$($k!#(B
(compiler.c, compiler.h)
$B%*%W%7%g%s$H$7$F(B quiet, outcode $B$rMQ0U!#(B
(compile.c)

[19980816]

invokeignored_quick $BL?Na$G!"(Bnull check $B$,ITMW$J>l9g$KBP1~$7$?!#(B
$BFbIt(B opcode $B$K(B invokeignored_nocheck $B$r?7@_!#(B
$BL?Na$N0z?t$N0UL#$r4*0c$$$7$F$$$?(B (pc[2]: $B%A%'%C%/$,MW$k$+$I$&$+(B)$B!#(B
(code.c, compile.c)

iinc $BL?Na$KBP$9$k(B native $B%3!<%I$r!"(B
  MOV $BA}J,(B,register
  ADD register,$BJQ?t(B
$B$+$i(B
  ADD $BA}J,(B,$BJQ?t(B
$B$KJQ99!#(B
(code.c, compile.c)

[19980815]

binutils 2.9.1.0.7 $B$N(B as $B$G%"%;%s%V%k$,DL$k$h$&$K=$@0!#(B
(code.c)

code.s $B$N(B postprocess $B$r;_$a$?!#(B
C $B%3%s%Q%$%i$r(B gcc 2.7.2.X $B$+$i(B egcs 1.0.3 $B$KJQ99$7$?$H$3$m!"(B
$BDj?t$N(B push ($B%^%/%m(B PUSH_CONSTSTR()) $B$N%3!<%I$,JQ$o$C$?$?$a!#(B

$BDj?tG[Ns(B opcode_length $B$NMWAG$N7?$r(B unsigned short $B$+$i(B unsigned char $B$K$7$?!#(B
SPARC $B>e$N(B gcc 2.6.3 $B$G$O!"(Bgcc $B$N%P%0$+!"(B
unsigned short $B$K$7$F$*$/I,MW$,$"$C$?!#(B
(opcodes.pl)

$B%/%m%C%/?t$N7WB,$KHw$($F(B x86tsc.o $B$r%j%s%/$9$k$h$&$K$7$?!#(B
x86 $B$N(B RDTSC $BL?Na$r;H$&!#(B
(Makefile)

ldiv, lrem, instanceof $BL?Na$N%3!<%I$rB?>/9bB.2=!#(B
(code.c)

static $B$G$J$$%a%=%C%I8F$S=P$7$N>l9g!"%a%C%;!<%8Aw?.@h(B
$B%*%V%8%'%/%H$,(B null $B$+$I$&$+!"%"%;%s%V%i$H(B invokeMethod() $B$G(B
2$B=E$K%A%'%C%/$7$F$$$?$N$r>J$$$?!#(B
(runtime.c)

[19980813]

$BB?<!85G[Ns$N3NJ](B (multianewarray) $B8e$K!"<!85?t$r(B pop $B$7K:$l$F$$$?$N$r(B fix$B!#(B
(code.c, compile.c)

[19980810]

$B%a%C%;!<%8Aw?.@h%*%V%8%'%/%H$,(B null $B$@$C$?>l9g$K(B
$B@5$7$/(B NullPointerException $B$r(B throw $B$9$k$h$&$K$7$?!#(B(code.c)

[19980809]

invokevirtual $B$G(B private method $B$r8F$s$G$$$k>l9g!"(B
invokespecial $B$N%3!<%I$r@8@.$9$k$h$&$K$7$?!#(B
(processAnOpcode() in compile.c)
tya1.0/demo/TestOpcodeField $B$K$F!"%/%i%9(B TestOpcode $B$N%a%=%C%I$G(B
mb->fb.u.offset $B$,(B 0 $B$N$^$^=i4|2=$5$l$F$$$J$$(B
-> methodtable $B$N(B index $B$G%a%=%C%I$rC5$;$J$$$?$a!#(B

[19980807]

restack $B$r:o8:$7$?!#(B
$BL$%3%s%Q%$%k$N%a%=%C%I$+(B native methods $B$+$i(B compiled method $B$r!"(B
$B$^$?$O$=$N5U$N>l9g$K$N$_(B restack $B$9$k!#(B

[19980803]

new_quick -> new $B$N=q$-49$(AjEv$N$3$H$r!"(B
compiled code $B$G$b9T$&$h$&$K$7$?!#(B(code.c, compile.c)

[19980802]

$B$-$A$s$HF0:n$9$k$h$&$K$J$C$?!#(B

[19980711]

pre-assembled code $B$r(B C $B$G5-=R$7$?Bh(B 1$BHG$,(B
$B$"$^$j$KCY$$(B ($B%$%s%?%W%j%?$h$j(B ;_;) $B$N$G!"%"%;%s%V%i$r;H$C$F=q$-D>$73+;O!#(B

[19980710]

$BBh(B 1$BHG$,$-$A$s$HF0$$$?!#(B

[19980615]

$B3+H/$r;O$a$?!#(B
