[Oberon] FPGA - Garbage Collector - GC
Andreas Pirklbauer
andreas_pirklbauer at yahoo.com
Mon Apr 17 18:36:09 CEST 2017
Then it is probably not related to FileDir. Still, you may want to rebuild the inner core and the rest of the Oberon system including the compiler, just to be on the safe side.
The only change to your module System I see is a bug in procedure System.Clear which I fixed some time ago :-) It should not affect GC either.
In the latest version of Oberon, GC works flawlessly. Perhaps you don't have all the latest sources. It should work.
From: Tomas Kral <thomas.kral at email.cz>
To: oberon at lists.inf.ethz.ch
Cc: Andreas Pirklbauer <andreas_pirklbauer at yahoo.com>
Sent: Monday, April 17, 2017 6:16 PM
Subject: Re: [Oberon] FPGA - Garbage Collector - GC
Hi Andreas, Paul,
I only rebuilt the `FileDir.Mod' to obtain a symbol file needed as
import to `System.Mod'.
I had backed the `System.rsc' to .Bak and deleted FileDir.{smb.rsc}
afterwards.
It breaks GC all the same.
This is diff on `System.Mod'
pi at raspberrypi /usr/src/oberon/PO.V5.1 $ diff
System.Mod.txt ../PO.V5.0/System.Mod.txt
1c1
< MODULE System; (*JG 3.10.90 / NW 12.10.93 / NW 20.6.2016*)
---
> MODULE System; (*JG 3.10.90 / NW 12.10.93 / NW 28.11.2015*)
89c89
< PROCEDURE Clear*; (*clear Log*)
---
> PROCEDURE Clear*; (*used to clear Log*)
93c93
< NEW(buf); Texts.OpenBuf(buf); T :=
F.next(TextFrames.Frame).text; Texts.Delete(T, 0, T.len, buf)
---
> T := F.next(TextFrames.Frame).text; Texts.Delete(T, 0, T.len,
> buf)
FileDir.Mod does not seem to have changed
pi at raspberrypi /usr/src/oberon/PO.V5.1 $ grep MODULE
> FileDir.Mod.txt
MODULE FileDir; (*NW 12.1.86 / 23.8.90 / 15.8.2013*)
Tomas
On Fri, 14 Apr 2017 10:21:45 +0000
Andreas Pirklbauer <andreas_pirklbauer at yahoo.com> wrote:
> 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.
>
> Andreas
>
> [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/20170417/e5ceb362/attachment.html>
More information about the Oberon
mailing list