<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><div style="direction: inherit;">Lars</div><div style="direction: inherit;">To be precise the Oberon sysem has two types of heaps: A heap for code and a heap for data. See Figure 8.1 in <a href="https://www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.System.pdf">https://www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.System.pdf</a></div><div style="direction: inherit;">Jörg</div></div><div><div><div style="direction: inherit;"><br></div></div>Am 27.09.2016 um 07:29 schrieb Jörg Straube <<a href="mailto:joerg.straube@iaeth.ch">joerg.straube@iaeth.ch</a>>:<br><br></div><blockquote type="cite"><div><span>Lars</span><br><span>Actually Oberon modules ARE allocated on the heap. This is the beauty of Oberon that you can load and unload them dynamically.</span><br><span>Jörg</span><br><span></span><br><blockquote type="cite"><span>Am 27.09.2016 um 07:14 schrieb Skulski, Wojciech <<a href="mailto:skulski@pas.rochester.edu">skulski@pas.rochester.edu</a>>:</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Lars:</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><blockquote type="cite"><span>An interesting thought: if one were to make a module allocated at run time</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>would this offer anything useful or different than an object being</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>allocated? </span><br></blockquote></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>A module provides executable code. There is only one copy of the module's code. An object provides data and pointers to the code, but it does not provide the actual code. There can be multiple copies of the object. Each copy can provide different data, but the same pointers to the same code. Note that in this description I have in mind Oberon-2 objects rather than Oberon-1 objects. Oberon-1 objects are more difficult to understand because the pointers to the code can be installed at run time. Note however, that Oberon-1 objects do not provide the code. Just the pointers.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><blockquote type="cite"><span>Or would we reinvent object oriented programming if modules</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>could be allocated on the heap? If we just reinvented objects, now we</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>know exactly what modules are: design time objects without any heap</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>allocation at run time.</span><br></blockquote></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>You put the module on the heap with its code, because it is the module's goal to provide the code. OK. Now you need to execute that code from the heap. OK. You allocate another copy of the module on the heap. So you put the same executable code on the heap for the 2nd time. Now you can execute it. (If you cannot, then allocating the code would make no sense.) So now you have two copies of the same executable code on the heap. It makes little sense.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>W.</span><br></blockquote><blockquote type="cite"><span>--</span><br></blockquote><blockquote type="cite"><span><a href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems</span><br></blockquote><blockquote type="cite"><span><a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a></span><br></blockquote><span></span><br><span>--</span><br><span><a href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems</span><br><span><a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a></span><br></div></blockquote></body></html>