diff --git a/byterun/.depend b/byterun/.depend index d321598c6..06800186c 100644 --- a/byterun/.depend +++ b/byterun/.depend @@ -1,129 +1,163 @@ -alloc.o : alloc.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - major_gc.h freelist.h memory.h gc.h minor_gc.h stacks.h -array.o : array.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h -compare.o : compare.c fail.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - memory.h gc.h major_gc.h freelist.h minor_gc.h str.h -extern.o : extern.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h minor_gc.h reverse.h \ - str.h -fail.o : fail.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h gc.h memory.h major_gc.h freelist.h minor_gc.h signals.h stacks.h -fix_code.o : fix_code.c config.h ../config/m.h ../config/s.h fix_code.h misc.h \ - mlvalues.h instruct.h reverse.h -floats.o : floats.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h stacks.h -freelist.o : freelist.c config.h ../config/m.h ../config/s.h freelist.h misc.h \ - mlvalues.h gc.h gc_ctrl.h major_gc.h -gc_ctrl.o : gc_ctrl.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - gc.h gc_ctrl.h major_gc.h freelist.h minor_gc.h -hash.o : hash.c mlvalues.h config.h ../config/m.h ../config/s.h misc.h memory.h \ - gc.h major_gc.h freelist.h minor_gc.h str.h -instrtrace.o : instrtrace.c -intern.o : intern.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h minor_gc.h reverse.h -interp.o : interp.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h fix_code.h instruct.h interp.h memory.h gc.h major_gc.h freelist.h minor_gc.h \ - prims.h signals.h stacks.h str.h instrtrace.h jumptbl.h -ints.o : ints.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h str.h -io.o : io.c config.h ../config/m.h ../config/s.h alloc.h misc.h mlvalues.h fail.h \ - io.h memory.h gc.h major_gc.h freelist.h minor_gc.h signals.h sys.h -lexing.o : lexing.c mlvalues.h config.h ../config/m.h ../config/s.h misc.h stacks.h \ - memory.h gc.h major_gc.h freelist.h minor_gc.h str.h -main.o : main.c config.h ../config/m.h ../config/s.h alloc.h misc.h mlvalues.h \ - exec.h fail.h fix_code.h gc_ctrl.h interp.h intext.h io.h minor_gc.h stacks.h \ - memory.h gc.h major_gc.h freelist.h sys.h -major_gc.o : major_gc.c config.h ../config/m.h ../config/s.h fail.h misc.h mlvalues.h \ - freelist.h gc.h gc_ctrl.h major_gc.h roots.h -md5.o : md5.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h io.h -memory.o : memory.c fail.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - freelist.h gc.h gc_ctrl.h major_gc.h memory.h minor_gc.h signals.h -meta.o : meta.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fix_code.h interp.h major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h stacks.h -minor_gc.o : minor_gc.c config.h ../config/m.h ../config/s.h fail.h misc.h mlvalues.h \ - gc.h gc_ctrl.h major_gc.h freelist.h memory.h minor_gc.h roots.h signals.h -misc.o : misc.c config.h ../config/m.h ../config/s.h misc.h -obj.o : obj.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h -parsing.o : parsing.c config.h ../config/m.h ../config/s.h mlvalues.h misc.h \ - memory.h gc.h major_gc.h freelist.h minor_gc.h alloc.h -prims.o : prims.c mlvalues.h config.h ../config/m.h ../config/s.h misc.h prims.h -roots.o : roots.c memory.h config.h ../config/m.h ../config/s.h gc.h mlvalues.h \ - misc.h major_gc.h freelist.h minor_gc.h roots.h stacks.h -signals.o : signals.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h roots.h signals.h -stacks.o : stacks.c config.h ../config/m.h ../config/s.h fail.h misc.h mlvalues.h \ - stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h -str.o : str.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h -sys.o : sys.c config.h ../config/m.h ../config/s.h alloc.h misc.h mlvalues.h \ - fail.h instruct.h signals.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h -terminfo.o : terminfo.c config.h ../config/m.h ../config/s.h alloc.h misc.h \ - mlvalues.h fail.h io.h -alloc.d.o : alloc.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - major_gc.h freelist.h memory.h gc.h minor_gc.h stacks.h -array.d.o : array.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h -compare.d.o : compare.c fail.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - memory.h gc.h major_gc.h freelist.h minor_gc.h str.h -extern.d.o : extern.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h minor_gc.h reverse.h \ - str.h -fail.d.o : fail.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h gc.h memory.h major_gc.h freelist.h minor_gc.h signals.h stacks.h -fix_code.d.o : fix_code.c config.h ../config/m.h ../config/s.h fix_code.h misc.h \ - mlvalues.h instruct.h reverse.h -floats.d.o : floats.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h stacks.h -freelist.d.o : freelist.c config.h ../config/m.h ../config/s.h freelist.h misc.h \ - mlvalues.h gc.h gc_ctrl.h major_gc.h -gc_ctrl.d.o : gc_ctrl.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - gc.h gc_ctrl.h major_gc.h freelist.h minor_gc.h -hash.d.o : hash.c mlvalues.h config.h ../config/m.h ../config/s.h misc.h memory.h \ - gc.h major_gc.h freelist.h minor_gc.h str.h -instrtrace.d.o : instrtrace.c instruct.h misc.h config.h ../config/m.h ../config/s.h \ - mlvalues.h opnames.h -intern.d.o : intern.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h minor_gc.h reverse.h -interp.d.o : interp.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h fix_code.h instruct.h interp.h memory.h gc.h major_gc.h freelist.h minor_gc.h \ - prims.h signals.h stacks.h str.h instrtrace.h -ints.d.o : ints.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h str.h -io.d.o : io.c config.h ../config/m.h ../config/s.h alloc.h misc.h mlvalues.h fail.h \ - io.h memory.h gc.h major_gc.h freelist.h minor_gc.h signals.h sys.h -lexing.d.o : lexing.c mlvalues.h config.h ../config/m.h ../config/s.h misc.h stacks.h \ - memory.h gc.h major_gc.h freelist.h minor_gc.h str.h -main.d.o : main.c config.h ../config/m.h ../config/s.h alloc.h misc.h mlvalues.h \ - exec.h fail.h fix_code.h gc_ctrl.h interp.h intext.h io.h minor_gc.h stacks.h \ - memory.h gc.h major_gc.h freelist.h sys.h -major_gc.d.o : major_gc.c config.h ../config/m.h ../config/s.h fail.h misc.h mlvalues.h \ - freelist.h gc.h gc_ctrl.h major_gc.h roots.h -md5.d.o : md5.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h io.h -memory.d.o : memory.c fail.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - freelist.h gc.h gc_ctrl.h major_gc.h memory.h minor_gc.h signals.h -meta.d.o : meta.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fix_code.h interp.h major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h stacks.h -minor_gc.d.o : minor_gc.c config.h ../config/m.h ../config/s.h fail.h misc.h mlvalues.h \ - gc.h gc_ctrl.h major_gc.h freelist.h memory.h minor_gc.h roots.h signals.h -misc.d.o : misc.c config.h ../config/m.h ../config/s.h misc.h -obj.d.o : obj.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h -parsing.d.o : parsing.c config.h ../config/m.h ../config/s.h mlvalues.h misc.h \ - memory.h gc.h major_gc.h freelist.h minor_gc.h alloc.h -prims.d.o : prims.c mlvalues.h config.h ../config/m.h ../config/s.h misc.h prims.h -roots.d.o : roots.c memory.h config.h ../config/m.h ../config/s.h gc.h mlvalues.h \ - misc.h major_gc.h freelist.h minor_gc.h roots.h stacks.h -signals.d.o : signals.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h roots.h signals.h -stacks.d.o : stacks.c config.h ../config/m.h ../config/s.h fail.h misc.h mlvalues.h \ - stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h -str.d.o : str.c alloc.h misc.h config.h ../config/m.h ../config/s.h mlvalues.h \ - fail.h -sys.d.o : sys.c config.h ../config/m.h ../config/s.h alloc.h misc.h mlvalues.h \ - fail.h instruct.h signals.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h -terminfo.d.o : terminfo.c config.h ../config/m.h ../config/s.h alloc.h misc.h \ - mlvalues.h fail.h io.h +alloc.o: alloc.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h major_gc.h freelist.h memory.h gc.h minor_gc.h stacks.h +array.o: array.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h +compare.o: compare.c fail.h misc.h config.h ../config/m.h \ + ../config/s.h mlvalues.h memory.h gc.h major_gc.h freelist.h \ + minor_gc.h str.h +extern.o: extern.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h \ + minor_gc.h reverse.h str.h +fail.o: fail.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h gc.h memory.h major_gc.h freelist.h minor_gc.h \ + signals.h stacks.h +fix_code.o: fix_code.c config.h ../config/m.h ../config/s.h fix_code.h \ + misc.h mlvalues.h instruct.h reverse.h +floats.o: floats.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h \ + stacks.h +freelist.o: freelist.c config.h ../config/m.h ../config/s.h freelist.h \ + misc.h mlvalues.h gc.h gc_ctrl.h major_gc.h +gc_ctrl.o: gc_ctrl.c alloc.h misc.h config.h ../config/m.h \ + ../config/s.h mlvalues.h gc.h gc_ctrl.h major_gc.h freelist.h \ + minor_gc.h +hash.o: hash.c mlvalues.h config.h ../config/m.h ../config/s.h misc.h \ + memory.h gc.h major_gc.h freelist.h minor_gc.h str.h +instrtrace.o: instrtrace.c +intern.o: intern.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h \ + minor_gc.h reverse.h +interp.o: interp.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h fix_code.h instruct.h interp.h memory.h gc.h \ + major_gc.h freelist.h minor_gc.h prims.h signals.h stacks.h str.h \ + instrtrace.h jumptbl.h +ints.o: ints.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h \ + str.h +io.o: io.c config.h ../config/m.h ../config/s.h alloc.h misc.h \ + mlvalues.h fail.h io.h memory.h gc.h major_gc.h freelist.h minor_gc.h \ + signals.h sys.h +lexing.o: lexing.c mlvalues.h config.h ../config/m.h ../config/s.h \ + misc.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h str.h +main.o: main.c config.h ../config/m.h ../config/s.h alloc.h misc.h \ + mlvalues.h exec.h fail.h fix_code.h gc_ctrl.h interp.h intext.h io.h \ + minor_gc.h stacks.h memory.h gc.h major_gc.h freelist.h sys.h +major_gc.o: major_gc.c config.h ../config/m.h ../config/s.h fail.h \ + misc.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h roots.h +md5.o: md5.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h io.h +memory.o: memory.c fail.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h minor_gc.h \ + signals.h +meta.o: meta.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fix_code.h interp.h major_gc.h freelist.h memory.h gc.h \ + minor_gc.h prims.h stacks.h +minor_gc.o: minor_gc.c config.h ../config/m.h ../config/s.h fail.h \ + misc.h mlvalues.h gc.h gc_ctrl.h major_gc.h freelist.h memory.h \ + minor_gc.h roots.h signals.h +misc.o: misc.c config.h ../config/m.h ../config/s.h misc.h +obj.o: obj.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h +oldintern.o: oldintern.c alloc.h misc.h config.h ../config/m.h \ + ../config/s.h mlvalues.h fail.h gc.h intext.h io.h memory.h \ + major_gc.h freelist.h minor_gc.h reverse.h +parsing.o: parsing.c config.h ../config/m.h ../config/s.h mlvalues.h \ + misc.h memory.h gc.h major_gc.h freelist.h minor_gc.h alloc.h +prims.o: prims.c mlvalues.h config.h ../config/m.h ../config/s.h \ + misc.h prims.h +roots.o: roots.c memory.h config.h ../config/m.h ../config/s.h gc.h \ + mlvalues.h misc.h major_gc.h freelist.h minor_gc.h roots.h stacks.h +signals.o: signals.c alloc.h misc.h config.h ../config/m.h \ + ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \ + minor_gc.h roots.h signals.h +stacks.o: stacks.c config.h ../config/m.h ../config/s.h fail.h misc.h \ + mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h +str.o: str.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h +sys.o: sys.c config.h ../config/m.h ../config/s.h alloc.h misc.h \ + mlvalues.h fail.h instruct.h signals.h stacks.h memory.h gc.h \ + major_gc.h freelist.h minor_gc.h +terminfo.o: terminfo.c config.h ../config/m.h ../config/s.h alloc.h \ + misc.h mlvalues.h fail.h io.h +alloc.d.o: alloc.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h major_gc.h freelist.h memory.h gc.h minor_gc.h stacks.h +array.d.o: array.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h +compare.d.o: compare.c fail.h misc.h config.h ../config/m.h \ + ../config/s.h mlvalues.h memory.h gc.h major_gc.h freelist.h \ + minor_gc.h str.h +extern.d.o: extern.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h \ + minor_gc.h reverse.h str.h +fail.d.o: fail.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h gc.h memory.h major_gc.h freelist.h minor_gc.h \ + signals.h stacks.h +fix_code.d.o: fix_code.c config.h ../config/m.h ../config/s.h fix_code.h \ + misc.h mlvalues.h instruct.h reverse.h +floats.d.o: floats.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h \ + stacks.h +freelist.d.o: freelist.c config.h ../config/m.h ../config/s.h freelist.h \ + misc.h mlvalues.h gc.h gc_ctrl.h major_gc.h +gc_ctrl.d.o: gc_ctrl.c alloc.h misc.h config.h ../config/m.h \ + ../config/s.h mlvalues.h gc.h gc_ctrl.h major_gc.h freelist.h \ + minor_gc.h +hash.d.o: hash.c mlvalues.h config.h ../config/m.h ../config/s.h misc.h \ + memory.h gc.h major_gc.h freelist.h minor_gc.h str.h +instrtrace.d.o: instrtrace.c instruct.h misc.h config.h ../config/m.h \ + ../config/s.h mlvalues.h opnames.h +intern.d.o: intern.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h \ + minor_gc.h reverse.h +interp.d.o: interp.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h fix_code.h instruct.h interp.h memory.h gc.h \ + major_gc.h freelist.h minor_gc.h prims.h signals.h stacks.h str.h \ + instrtrace.h +ints.d.o: ints.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h minor_gc.h \ + str.h +io.d.o: io.c config.h ../config/m.h ../config/s.h alloc.h misc.h \ + mlvalues.h fail.h io.h memory.h gc.h major_gc.h freelist.h minor_gc.h \ + signals.h sys.h +lexing.d.o: lexing.c mlvalues.h config.h ../config/m.h ../config/s.h \ + misc.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h str.h +main.d.o: main.c config.h ../config/m.h ../config/s.h alloc.h misc.h \ + mlvalues.h exec.h fail.h fix_code.h gc_ctrl.h interp.h intext.h io.h \ + minor_gc.h stacks.h memory.h gc.h major_gc.h freelist.h sys.h +major_gc.d.o: major_gc.c config.h ../config/m.h ../config/s.h fail.h \ + misc.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h roots.h +md5.d.o: md5.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h io.h +memory.d.o: memory.c fail.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h minor_gc.h \ + signals.h +meta.d.o: meta.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fix_code.h interp.h major_gc.h freelist.h memory.h gc.h \ + minor_gc.h prims.h stacks.h +minor_gc.d.o: minor_gc.c config.h ../config/m.h ../config/s.h fail.h \ + misc.h mlvalues.h gc.h gc_ctrl.h major_gc.h freelist.h memory.h \ + minor_gc.h roots.h signals.h +misc.d.o: misc.c config.h ../config/m.h ../config/s.h misc.h +obj.d.o: obj.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h +oldintern.d.o: oldintern.c alloc.h misc.h config.h ../config/m.h \ + ../config/s.h mlvalues.h fail.h gc.h intext.h io.h memory.h \ + major_gc.h freelist.h minor_gc.h reverse.h +parsing.d.o: parsing.c config.h ../config/m.h ../config/s.h mlvalues.h \ + misc.h memory.h gc.h major_gc.h freelist.h minor_gc.h alloc.h +prims.d.o: prims.c mlvalues.h config.h ../config/m.h ../config/s.h \ + misc.h prims.h +roots.d.o: roots.c memory.h config.h ../config/m.h ../config/s.h gc.h \ + mlvalues.h misc.h major_gc.h freelist.h minor_gc.h roots.h stacks.h +signals.d.o: signals.c alloc.h misc.h config.h ../config/m.h \ + ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \ + minor_gc.h roots.h signals.h +stacks.d.o: stacks.c config.h ../config/m.h ../config/s.h fail.h misc.h \ + mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h +str.d.o: str.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h +sys.d.o: sys.c config.h ../config/m.h ../config/s.h alloc.h misc.h \ + mlvalues.h fail.h instruct.h signals.h stacks.h memory.h gc.h \ + major_gc.h freelist.h minor_gc.h +terminfo.d.o: terminfo.c config.h ../config/m.h ../config/s.h alloc.h \ + misc.h mlvalues.h fail.h io.h diff --git a/byterun/extern.c b/byterun/extern.c index 82626581a..a195fe248 100644 --- a/byterun/extern.c +++ b/byterun/extern.c @@ -13,6 +13,7 @@ /* Structured output */ +#include #include "alloc.h" #include "fail.h" #include "gc.h" diff --git a/byterun/fix_code.c b/byterun/fix_code.c index 3269aa473..20ef44ee6 100644 --- a/byterun/fix_code.c +++ b/byterun/fix_code.c @@ -41,10 +41,11 @@ void fixup_endianness(code, len) #ifdef THREADED_CODE -void thread_code(code, len, instr_table) +void ** instr_table; + +void thread_code(code, len) code_t code; asize_t len; - void * instr_table[]; { code_t p; len /= sizeof(opcode_t); @@ -77,7 +78,7 @@ void thread_code(code, len, instr_table) break; } } } - Assert(p = code + len); + Assert(p == code + len); } #endif diff --git a/byterun/fix_code.h b/byterun/fix_code.h index 7a66dc62c..652d2d816 100644 --- a/byterun/fix_code.h +++ b/byterun/fix_code.h @@ -17,11 +17,16 @@ #define _fix_code_ +#include "config.h" #include "misc.h" #include "mlvalues.h" +#ifdef THREADED_CODE +void ** instr_table; +#endif + void fixup_endianness P((code_t code, asize_t len)); -void thread_code P((code_t code, asize_t len, void * instr_table[])); +void thread_code P((code_t code, asize_t len)); #endif diff --git a/byterun/intern.c b/byterun/intern.c index 5fbeca32a..5c063b3ae 100644 --- a/byterun/intern.c +++ b/byterun/intern.c @@ -13,6 +13,7 @@ /* Structured input, compact format */ +#include #include "alloc.h" #include "fail.h" #include "gc.h" diff --git a/byterun/interp.c b/byterun/interp.c index 6f11a3d17..5dd3ccae8 100644 --- a/byterun/interp.c +++ b/byterun/interp.c @@ -126,7 +126,10 @@ value interprete(prog, prog_size) #endif #ifdef THREADED_CODE - if (prog[0] <= STOP) thread_code(prog, prog_size, jumptable); + if (prog[0] <= STOP) { + instr_table = jumptable; + thread_code(prog, prog_size); + } #endif sp = extern_sp; diff --git a/byterun/ints.c b/byterun/ints.c index 740d1db7c..b44f87070 100644 --- a/byterun/ints.c +++ b/byterun/ints.c @@ -12,6 +12,7 @@ /* $Id$ */ #include +#include #include "alloc.h" #include "fail.h" #include "memory.h" diff --git a/byterun/lexing.c b/byterun/lexing.c index 8a3219f6c..86387a911 100644 --- a/byterun/lexing.c +++ b/byterun/lexing.c @@ -13,6 +13,7 @@ /* The table-driven automaton for lexers generated by camllex. */ +#include "fail.h" #include "mlvalues.h" #include "stacks.h" #include "str.h" @@ -25,6 +26,8 @@ struct lexer_buffer { value lex_start_pos; value lex_curr_pos; value lex_last_pos; + value lex_saved_state; + value lex_last_action; }; struct lexing_table { @@ -48,11 +51,16 @@ value lex_engine(tbl, start_state, lexbuf) /* ML */ value start_state; struct lexer_buffer * lexbuf; { - int state, last_action, base, backtrk, c; + int state, base, backtrk, c; - state = Int_val(start_state); - lexbuf->lex_last_pos = lexbuf->lex_start_pos = lexbuf->lex_curr_pos; - last_action = -1; + if (Int_val(lexbuf->lex_saved_state) >= 0) { + state = Int_val(lexbuf->lex_saved_state); + lexbuf->lex_saved_state = Val_int(-1); + } else { + state = Int_val(start_state); + lexbuf->lex_last_pos = lexbuf->lex_start_pos = lexbuf->lex_curr_pos; + lexbuf->lex_last_action = Val_int(-1); + } while(1) { /* Lookup base address or action number for current state */ base = Short(tbl->lex_base, state); @@ -61,18 +69,14 @@ value lex_engine(tbl, start_state, lexbuf) /* ML */ backtrk = Short(tbl->lex_backtrk, state); if (backtrk >= 0) { lexbuf->lex_last_pos = lexbuf->lex_curr_pos; - last_action = backtrk; + lexbuf->lex_last_action = Val_int(backtrk); + } + /* See if we need a refill */ + if (lexbuf->lex_curr_pos >= lexbuf->lex_buffer_len) { + lexbuf->lex_saved_state = Val_int(state); + return (-1); } /* Read next input char */ - if (lexbuf->lex_curr_pos >= lexbuf->lex_buffer_len) { - Push_roots (r, 2); - r[0] = (value) tbl; - r[1] = (value) lexbuf; - callback(lexbuf->refill_buff, (value) lexbuf); - tbl = (struct lexing_table *) r[0]; - lexbuf = (struct lexer_buffer *) r[1]; - Pop_roots (); - } c = Byte_u(lexbuf->lex_buffer, Long_val(lexbuf->lex_curr_pos)); lexbuf->lex_curr_pos += 2; /* Determine next state */ @@ -83,7 +87,11 @@ value lex_engine(tbl, start_state, lexbuf) /* ML */ /* If no transition on this char, return to last backtrack point */ if (state < 0) { lexbuf->lex_curr_pos = lexbuf->lex_last_pos; - return Val_int(last_action); + if (lexbuf->lex_last_action == Val_int(-1)) { + failwith("lexing: empty token"); + } else { + return lexbuf->lex_last_action; + } } } } diff --git a/byterun/main.c b/byterun/main.c index af20ad245..45e759c4a 100644 --- a/byterun/main.c +++ b/byterun/main.c @@ -78,8 +78,6 @@ static int read_trailer(fd, trail) return BAD_MAGIC_NUM; } -extern char * searchpath(); - int attempt_open(name, trail, do_open_script) char ** name; struct exec_trailer * trail; @@ -129,6 +127,8 @@ Algorithm: */ +extern void init_ieee_floats(); + #ifdef HAS_UI int caml_main(argc, argv) #else diff --git a/byterun/meta.c b/byterun/meta.c index 4b1c76644..a2df1572c 100644 --- a/byterun/meta.c +++ b/byterun/meta.c @@ -14,6 +14,7 @@ /* Primitives for the toplevel */ #include "alloc.h" +#include "config.h" #include "fix_code.h" #include "interp.h" #include "major_gc.h" @@ -30,13 +31,19 @@ value get_global_data(unit) /* ML */ return global_data; } -value execute_bytecode(prog, len) /* ML */ +value reify_bytecode(prog, len) /* ML */ value prog, len; { -#if defined(BIG_ENDIAN) + value clos; +#ifdef BIG_ENDIAN fixup_endianness((code_t) prog, (asize_t) Long_val(len)); #endif - return interprete((code_t) prog, (asize_t) Long_val(len)); +#ifdef THREADED_CODE + thread_code((code_t) prog, (asize_t) Long_val(len)); +#endif + clos = alloc(1, Closure_tag); + Code_val(clos) = (code_t) prog; + return clos; } value realloc_global(size) /* ML */ diff --git a/byterun/sys.h b/byterun/sys.h index f6dcb0f3c..859422c2c 100644 --- a/byterun/sys.h +++ b/byterun/sys.h @@ -19,5 +19,6 @@ void sys_error P((char *)); void sys_init P((char **)); void sys_exit P((value)) Noreturn; +char * searchpath P((char * name)); #endif /* _sys_ */