$B!&(BKLIC $B$+$i$NJQ99E@!J%a%b!K(B

heaplimit $B$O3d$j9~$_$,H/@8$7$?$+$I$&$+$N%U%i%0$H$7$F$N$_;H$C$F$$$k!#(B

KLIC $B$G$O%]%$%s%?$r?tCM$H$7$F07$($?$,!"(BJava $B$G$O$3$l$,$G$-$J$$$N$G!"Cj>](B
$B%/%i%9(B KL1Object $B$r:n$j!"%"%H%`!"%3%s%9!"%U%!%s%/%?!"JQ?t$O!"A4$F$3$N%/(B
$B%i%9$r7Q>5$7$F:n$k!#(B

$B@0?t%"%H%`$OKh2s%$%s%9%?%s%9$r:n@.$9$k!#5-9f%"%H%`$O=P8=$,J,$+$C$F$$$k$b(B
$B$N$O%b%8%e!<%kKh$K#1$D$@$1%$%s%9%?%s%9$r:n@.$9$k!#(B

$B5-9f%"%H%`$H%U%!%s%/%?$N4X?t5-9f$O?tCM$G$O$J$/!"J8;zNs(B(String)$B$H$9$k!#(B
JVM $B$N5-9fI=$r;H$&$3$H$K$h$j!"F10l(B JVM $BFb$G$O(B String $B$N%j%U%!%l%s%9F1;N$NHf(B
$B3S$K$h$C$FF10l@-$N8!::$r9T$J$&$3$H$,$G$-$k!#5-9fI=$X$NEPO?$O%b%8%e!<%k$N(B
$B%m!<%I;~$K9T$J$&!#(B

KL1Object $BF1;N$NHf3S$K$O(B KLIC $B$HJQ99E@$,B?$$$N$GCm0U$,I,MW!#(B
  $B@0?t%"%H%`F1;N(B --> value $B$rHf3S!J%$%s%9%?%s%9$,0[$J$k!K(B
  $B%U%!%s%/%?F1;N(B --> $B!J4X?t5-9f$H%"%j%F%#$rF1;~$KHf3S$G$-$k!K(B
  $B%8%'%M%j%C%/%*%V%8%'%/%H$O%U%!%s%/%?%?%0$r;}$D(B
  $B0[$J$k7?F1;N$NHf3S$,2DG=!J56$K$J$k$@$1!K(B

KLIC $B$G$O!"!V#1$D$N%b%8%e!<%k!a#1$D$N4X?t!W$@$C$?$,!"(BKLIJava $B$G$b!V#1$D(B
$B$N%/%i%9!W$H$9$k!#%(%s%H%j!<%]%$%s%H$O%a%=%C%I(B exec()$B!#(B

$B$=$N%b%8%e!<%kFb$G;H$C$F$$$k%b%8%e!<%k$N%m!<%I$O%a%=%C%I(B init() $BFb$G9T$J(B
$B$&!#(B

$B=R8l>pJs$O%b%8%e!<%kFb$KDj5A$9$k!#(B

$BBg0hJQ?t$O%/%i%9(B KL1Machine $B$N%$%s%9%?%s%9$K4^$`!#(B

$B%b%8%e!<%kFb$N(B goto $B$O!"(Bwhile $B%k!<%WFb$N(B switch(label) $B$GCV$-49$($k!#(B

$B!J%m!<%+%k$J!K(BGC $B$O(B Java $B$KG$$;$i$l$k$N$G!"<+A0$N%R!<%W4IM}$O9T$J$o$J$$!#(B
	allocp[0] = makeref(&allocp[0]);
		$B"-(B
	KL1Object t0 = new Var();

$B%4!<%k%l%3!<%I!J(BGoalrec$B!K$K$O%5%9%Z%s%I$7$?;~$N%W%i%$%*%j%F%#$N%a%s%P$r(B
$BDI2C!#!J(BKLIC $B$G$O(B next $B$K3JG<!K(B

Java $B$K$OI8=`$K$O%^%/%m$,$J$$!#$^$?%a%=%C%I$K$9$k$3$H$,Fq$7$$$b$N$,$"$k(B
$B!J%k!<%W!"J,4t!K$N$G!"%3!<%I%8%'%M%l!<%?B&$GE83+$7$F=PNO$9$k!#(B

  $B@)8f(B(execute, proceed)$B!"%,!<%I%S%k%H%$%s=R8l!JHf3S!K!"%\%G%#%S%k%H%$%s(B
  $B=R8l!J@0?t1i;;!K(B

$B%i%Y%k$r(B case $B%i%Y%k$KJQ99$7$?$N$G!"%i%Y%k$r$^$?$,$k(B switch $BJ8$r=q$1$J$$!#(B
$B!J(Bswitch $BJ8Cf$K%8%c%s%W$G$-$J$$!K(B
$B$7$?$,$C$F!"(B
sw_tag: switch(ptagof(x)) --> if $B$GH=Dj!"%8%c%s%W!J%3!<%I$O0\F0$7$F$$$k!K(B
$B!t(Bcode $B$K%i%Y%k$r4^$^$J$$$3$H$OH=Dj$G$-$k$+!)(B

sw_tag:
  switch(label) {
  case scan_6_4: {
    if(a0 instanceof Var)
      { label = scan_6_7; continue; }
    else if(a0 instanceof Functor || a0 instanceof GDObj)
      { label = scan_6_6; continue; }
    else if(!(a0 instanceof Cons))
      { label = scan_6_5; continue; }
    Code_Cons;
  case scan_6_5:
    Code_Atom;
  case scan_6_6:
    Code_Functor;
  case scan_6_7:
    Code_Var;
  }
  }

sw_int:
  switch(label) {
  case scan_6_3: {
    switch(((IntAtom)a0).value) {
    case 0:
      Code 0;
    case 1:
      Code 1;
    }
  }
  }

     $B"-(B

  switch(label) {
  case scan_6_3: {
    switch(((IntAtom)a0).value) {
    case 0:
      label = case_0; continue;
    case 1:
      label = case_1; continue;
    }
  }
  case case_0:
    Code 0;
  case case_1:
    Code 1;
  }

sw_sym:
  switch(label) {
  case scan__escape_8_2: {
    if(((SymAtom)a0).name == name_escaped__newline) {
      label = case_0; continue;
    } else if(((SymAtom)a0).name == name_hexadecimal) {
      label = case_1; continue;
    }
  }
  case case_0:
    Code 0;
  case case_1:
    Code 1;
  }


Unification $B$N<BAu!'(B
  x.unify(y)
  x: bound,   y: bound   -> $B=hM}(B (in x)
  x: bound,   y: unbound -> $B=hM}(B (in x)
  x: unbound, y: bound   -> $B=hM}(B (in Var)
  x: unbound, y: unbound -> $B=hM}(B (in Var)
  --> $BCY$$$+$b!)(B

  Var: 1-loop -> variable
       2-loop -> suspension, consumer, generator

reasonp:
  reasons   ->  0
  reasons+x ->  x
  0         -> -1
  $BCfCG860x%9%?%C%/(B

GDObj
  $B%8%'%M%j%C%/%*%V%8%'%/%H$N(B new $B$O!"0z?t$,6qBN2=$7$F$$$J$$$3$H$,$"$k$N(B
  $B$G!"C1=c$K%3%s%9%H%i%/%?$KCV$-49$($k$3$H$O$G$-$J$$!#(B

Java $B$K$O(B asinh, acosh, atanh $B$,$J$$!)(B

Susprec $B$O(B GGObj $B$X$N%]%$%s%?$r4^$`!#!J(BSusprec $B$O#1JQ?t$K$D$-#1$D$7$+$J(B
$B$$$?$a!K(B

$B%U%C%/%l%3!<%I$O%4!<%k%l%3!<%I$H%3%s%7%e!<%^%*%V%8%'%/%H$X$N%]%$%s%?$r4^(B
$B$`!#(BGoalrec $B$O(B KL1Object $B$N%5%V%/%i%9$H$9$k!#(B

$B%3%s%7%e!<%^%*%V%8%'%/%H$NC10l2=$O!"CfCG860x$rJV$9$3$H$,$"$k$N$G!"(B
unify() $B%a%=%C%I$G$O<BAu$7$J$$!#(B--> active_unify()

SUCCESS, FAILURE $B$O(B GDObj $BFb$KDj5A!#(B

$B%b%8%e!<%kFb$NDj?t(B SymAtom $B$r(B static $B$KDj5A(B

string
  $B%^%k%A%P!<%8%g%sG[Ns(B
             shallow            deep
  next       null               $B<!$N:9J,(B
  index      $BJ8;zNs$ND9$5(B       $BJQ992U=j$N%$%s%G%C%/%9(B
  body       $BJ8;zNsK\BN(B         $BJQ99$9$kJ8;z(B

$B%Q%C%1!<%8L>$N;XDj(B
  kl1cmp package=kl1.lang file...

load_module() $B$G:n$k%$%s%9%?%s%9$r%b%8%e!<%k#1$D$K$D$-#1$D$K$9$k!#%O%C%7%e(B
$B$r;H$&!#(B

ClassFormatError
JavaVM $B$G$O#1$D$N%a%=%C%I$N%3!<%I$NBg$-$5$O(B 64KB $B$K@)8B$5$l$F$$$k!#(B
$B$H$j$"$($:$N2sHr:v!'(B

  public Module exec() {
    switch(label) {
    case xxx_top:
      exec_xxx();
      continue;
    case yyy_top:
      exec_yyy();
      continue;
    default:
      if(label < xxx_top && xxx_123 <= label)
	exec_xxx();
      else if(label < yyy_top && yyy_123 <= label)
	exec_yyy();
    }
  }

  private void exec_xxx() {
    switch(label) {
    case xxx_0:
      ...;
    case xxx_1:
      ...;
    default:
      return;
    }
  }

Java $B$N(B GC $B$O=E$$!)(B

$B4pK\%G!<%?7?$N%a%s%P$O(B public $B$K$J$C$F$$$k(B --> $B9bB.2=$N$?$a(B

$B%?%0$r;H$o$J$$$N$G!"@0?t$O(B 32 $B%S%C%H$NHO0O$G;H$&$3$H$,$G$-$k!#$?$@$7!"(B
KLIC $B$G%3%s%Q%$%k$7$?%3%s%Q%$%i$G$O!"@dBPCM$,(B 2^27 $B$h$jBg$-$$Dj?t$NJQ49(B
$B$,$G$-$J$$!#(B

$B%b%8%e!<%k!'(B $B@EE*%j%s%/!J(Bjavac *.java$B!K!"F0E*%j%s%/!JJ,;6!K(B
    KL1Machine.load_module(), Module.get_pred()

call_generic
  deref() $B$r;H$&$h$&$K$7$?$i@5>o$KF0:n$7$?!#(B

case_sym, case_int
  $B%?%0$,$"$k$N$G!"%7%s%\%j%C%/%"%H%`$H@0?t%"%H%`$rF1;~$KHf3S$G$-$k!#(B
--> case_sym0 $B$G(B if(~r instanceof SymAtom) $B$r3z$^$;$?!#(B
    sw_int $B$K$b(B if(~r instanceof IntAtom) $B$r3z$^$;$k!#(B

char[] $BF1;N$N(B equals() $B$O$J$$!)(B

$B%U%!%s%/%?$N4X?t5-9f$K$O%"%j%F%#>pJs$,IU2C$5$l$F$$$k!#$7$?$,$C$F!"%"%j%F%#(B
$B$NHf3S$O>JN,$G$-$k!#$7$+$7!"<B:]$N4X?t5-9f$rF@$?$$;~$K$OM>J,$J=hM}$,I,MW(B
$B$H$J$k!#(B

$B%"%H%`L>$OK\Mh$N;zLL$N$^$^!#(B

$B%b%8%e!<%kL>$N(B '_' $B$r(B '__' $B$KCV$-49$($J$$$h$&$K$7$?!#(B
$B%"%H%`L>!"%U%!%s%/%?L>!"=R8lL>$NI=<($r@5$7$/$7$?!J5-9f$r4^$`!K!#(B

--

GG_SUSPEND  GC_wakeup_g_new ???

--
