[Oberon] FPGA - Garbage Collector - GC

Andreas Pirklbauer andreas_pirklbauer at yahoo.com
Fri Apr 14 12:21:45 CEST 2017

If you have changed module FileDir, its variable size and/or its code size will very likely have changed (even if the module interface itself has not changed). Therefore, pointers from within the module descriptor of FileDir, such as mod.code and mod.ptr, will no longer point to "correct" starting addresses in the various sections inside the module block of FileDir.

So you will likely have to rebuild the inner core and load it onto the disk's boot area, e.g., by executing the commands [1]

 ORP.Compile Kernel.Mod FileDir.Mod Files.Mod Modules.Mod ~
 Linker.Link Modules ~
 Builder.Build Modules ~

Note: It is the linking process that will update the module area layout (i.e. the linked list of the four modules Kernel, FileDir, Files and Modules), such that *after* rebooting, pointers like mod.ptr will be correct again. With the updated mod.ptr, the GC should work. Please make sure to also recompile the rest of the Oberon system including the compiler itself *before* rebooting system - just in case module keys of the inner core modules have changed. Otherwise it may not come up again.


[1] e.g. see http://github.com/andreaspirklbauer/Oberon-building-tools 

Tomas Kral thomas.kral at email.cz Fri Apr 14 10:49:39 CEST 2017Hi,

Now I have figured out, recompiling OR.Compile FileDir.Mod System.Mod ~ with most recent changes, stopped GC to collect garbage.
Any ideas what I may have done wrong? Do I have to rebuild inner core?Tomas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20170414/f3074485/attachment.html>

More information about the Oberon mailing list