=================================================================== RCS file: /home/cvs/OpenXM/src/asir-doc/int-parts/gc.texi,v retrieving revision 1.1 retrieving revision 1.4 diff -u -p -r1.1 -r1.4 --- OpenXM/src/asir-doc/int-parts/gc.texi 2001/04/23 05:45:35 1.1 +++ OpenXM/src/asir-doc/int-parts/gc.texi 2013/01/11 01:09:31 1.4 @@ -1,8 +1,11 @@ -@comment $OpenXM$ -@chapter $B%a%b%j4IM}(B +@comment $OpenXM: OpenXM/src/asir-doc/int-parts/gc.texi,v 1.3 2012/12/27 05:50:01 noro Exp $ +\JP @chapter $B%a%b%j4IM}(B +\EG @chapter Memory management -@section $B%a%b%j4IM}5!9=(B +\JP @section $B%a%b%j4IM}5!9=(B +\EG @section Machinery for memory management +\BJP @code{risa} $B$K$*$1$k%a%b%j4IM}$O(B, [Boehm,Weiser] $B$K$h$k$b$N$rMQ$$$F$$$k(B. $B$3$N%a%b%j4IM}5!9=$NFCD'$O(B, $B%?%0IU$1$rI,MW$H$;$:(B, $B<+F0E*$K%,!<%Y%C%8%3%l(B $B%/%7%g%s(B(GC) $B$r9T$J$&$3$H$G$"$k(B. $B=>$C$F%f!<%6$OI,MW$JNN0h$rH$5$l$F$$$k2DG=@-$,$"$k$?$a(B, $B%f!<%6$,3+J|$9$k(B $B$3$H$O4m81$G$"$k(B. $B$?$@$7(B, $B:n6HMQ$N%P%C%U%!$J$I(B, $BL@$i$+$KB>$+$i$N;2>H$,$J(B $B$$$b$N$K4X$7$F$O3+J|$7$F9=$o$J$$(B. $B%a%b%j4IM}4X78$Nl9g(B, $B$3$l$i$N4X?t$rD>@\8F$S=P$7$F(B +$B$O$$$1$J$$(B. $BI,$:A08e=hM}$D$-$N4X?t(B (@code{Risa_}$B$r$D$1$?$b$N(B)$B$r8F$S=P$9$3$H(B. +\E +\BEG +@example +void GC_init() -@section Risa $B$K$*$1$k%a%b%j$N;HMQ(B +void *GC_malloc(int n) +void *GC_malloc_atomic(int n) + +GC_free(void *p) +@end example +@noindent +\E + +\JP @section Risa $B$K$*$1$k%a%b%j$N;HMQ(B +\EG @section Usage of memory in Risa + +\BJP Risa $B$K$*$1$k3F1i;;4X?t$K$D$$$F6&DL$N?6Iq$$$H$7$F(B, $B7k2L$H$7$F@8@.$5$l$k(B object $B$NFbIt$G(B, $BF~NO$G$"$k(B object $B$N3FIt$X$N;2>H$,9T$o$l$F$$$k2DG=@-(B $B$,$"$k(B, $B$H$$$&$3$H$,$"$k(B. @@ -53,6 +77,9 @@ object $B$NFbIt$G(B, $BF~NO$G$"$k(B object $B$N3F $B>l9g$K$O(B, $B78?t(B($B$X$N%]%$%s%?(B)$B$,$=$N$^$^7k2L$K%3%T!<$5$l$F$$$k(B. $B$^$?(B, $B0z?t$N0lJ}$Nl9g$K$O(B, $B$=$N;D$j$,$=$N$^$^7k2L$Nl9g$J$I$K$O(B, $BG[Ns$=$N$b$N$r?7$7$/@8@.$7$F(B, $B@.(B $BJ,$r%3%T!<$7$F$+$iMQ$$$kI,MW$,$"$k(B. +\E +\BEG +\E + +\JP @section GC version 7 $B$K4X$9$kCm0U(B +\EG @section Notices on GC version 7 + +\BJP +version 6 $B$^$G$N(B Boehm GC $B$K$*$$$F$O(B, GC $B$KF~$kA0$K$9$Y$F$N(B signal $B$r%^%9%/$7(B, +$B=P$?$"$H%^%9%/$r%/%j%"$9$k(B, $B$H$$$&A`:n$r<+F0E*$K9T$C$F$$$?(B. $B7k2L$H$7$F(B, +GC $BCf$KuBV$K$J$k2DG=@-(B +$B$,$"$k(B. $BH$G$-$J$/$J$C$?$j(B, $B=q$-49$o$C$?$j$H$$$&(B +$B$3$H$,5/$-$?(B. + +$B$3$l$KBP$9$kBP=hK!$H$7$F(B, @code{GC_malloc()} $B$J$I$N3d$jEv$F4X?t$rD>@\8F$S=P$5$:(B, $B$3$l$i$KBP$9$k(B +$BA08e=hM}$r9T$&4X?t$r8F$S=P$9$h$&$K$7$?(B. $BNc$($P(B @code{GC_malloc()} $B$KBP$9$k4X?t$Ol9g(B, SIGINT handler $B$G$"$k(B @code{int_handler()} +$B$G$O(B, $BC1$K(B @code{caught_intr} $B$r(B 1 $B$K$7$F2?$b$;$:$K(B return $B$9$k(B. +@example +extern int ox_int_received, critical_when_signal; +extern int in_gc, caught_intr; + +void int_handler(int sig) +@{ + extern NODE PVSS; + NODE t; + + + if ( do_file ) @{ + ExitAsir(); + @} + if ( critical_when_signal ) @{ + ox_int_received = 1; + return; + @} + if ( in_gc ) @{ + caught_intr = 1; + return; + @} + ... +@end example +GC $BCf$K(B SIGINT $B$,$"$C$?>l9g(B, @code{in_gc}$B$,(B 0 $B$H$J$C$?$"$H$K(B, +@code{caught_intr} $B$r(B0 $B$K$7$F(B SIGINT $B=hM}4X?t(B @code{int_handler()} $B$r8F(B +$B$S=P$9(B. $B$3$N$h$&$K$9$k$3$H$G(B, version 6 $B$HF1MM$K(B, GC $BFb$G$K(B +SIGUSR1 $B$rl9g(B, +$BCfCG$G$-$J$$(B OX $BDL?.4X?t$NA08e$G(B@code{begin_critical()}, +@code{end_critical()}$B$,l9g(B, OX server $BFb$G$N(B GC $BCf$K$l(B, @code{Risa_} $B$,$J$$4X?t$KBP1~$7$F$$$k(B. +$B$^$?(B, @samp{include/ca.h}$BFb$N%a%b%j3d$jEv$F4XO"%^%/%m$b(B, $B$9$Y$F(B +$B$3$l$i$NA08e=hM}$D$-4X?t$r8F$V$h$&$KJQ99$7$?(B. + +ChangeLog: +$B0J>e$NJQ99$K$D$$$F$O(B +OpenXM_contrib2/asir2000 $B$N0J2<$N%U%!%$%k$H$=$N0l$DA0$NHG$rHf3S$;$h(B. +parse/gc_risa.c 1.11 ($B=hM}$NK\BN(B), +parse/asir_sm.c 1.8, +parse/glob.c 1.83, +parse/load.c 1.22, +parse/ytab.c 1.11, +builtin/array.c 1.61, +builtin/gc.c 1.68, +engine/nd.c 1.200, +io/sio.c 1.25, +io/tcpf.c 1.62. + +\E +\BEG +\E