Re: Procedure types

From: [at]} <Wojtek>
Date: Sun, 21 Nov 2004 20:17:21 -0500 (EST)

----boundary-LibPST-iamunique-180651453_-_-
Content-type: text/plain

On Sun, 21 Nov 2004, Wojtek Skulski wrote:

> Inheritance references are static, while procedure variables are assigned
> at run time. Furthermore, even the number of procedure variables
> in a given module may not be known since procedure variables can be
> created dynamically. For example, imagine a type
>
> prVar = POINTER TO RECORD pv: PROCEDURE; next: prVar END;
>
> One can thus create a linked list of records, each one containing
> a reference to a procedure. In order to make unloading safe one needs
> to maintain those references versus unloading of modules that implement
> the "pv" fields.

On my second thought: the example above may lead to "dynamic imports" as
opposed to static imports that are known at compile time. My earlier
example with two modules TestUpper and TestLower could illustrate the
same idea. Namely, either a procedure variable or an object reference
from the module Upper gets installed in the hook variable declared in
module Lower, however, without statically importing the module Upper.
This means that at run time the module Lower contains references
to the module Upper. I would call it "dynamic import" because
the dependency was created at run time.

Now imagine Upper is unloaded. What happens if the hook variables are not
set to NIL but rather hold pointers to the unloaded code?

One solution might be that before a given module is unloaded, all
pointers in all other modules are traversed the same way as GC is doing
now, and in case a reference is encountered to the Upper code, it is not
unloaded but an error message is issued. The traversal should happen after
the CLOSE part of Upper is executed, because in all likelihood a sane
programmer has taken care of the problem by closing all references.
However, in order to prevent a dangling pointer still existing somewhere,
this last-minute check can be done. If Upper is still "dynamically
imported" from any place in the system, it is kept in memory.

I would not complain about the inefficiency of this solution, because if
we accept GC then we should also accept this. However, I am not sure if
this really solves the problem. I am also sure I am reinventing the wheel
here. This line of thought must be well known.


> I am sure one can invent even more vicious scenarios. My question still
> stands whether all this is safe in the current version of the run time
> system, and if not then whether it can be made safe. I am not yet buing
> into Fyodor arguments. Perhaps this problem has been solved already
> by the c.s. community. I simply do not know. I am only a user.

W.


--------------------------------------------

To unsubscribe from this mailing list, send a message containing the word "unsubscribe" to:
   blackbox-request{([at]})nowhere.xy

To get a list of valid e-mail commands and instructions on their usage, send a message containing the word "help" to the above address.

Send any problem reports or questions related to this email list to the list owner at
   owner-blackbox{([at]})nowhere.xy

Current posting policy:

a) To post you should use the same address by which you are subscribed to the mailing list. That way, the list server will recognize you as subscriber and forward your posting immediately, without creating any overhead.

b) If, for some reason, you cannot post from the address, by which you are subscribed, your message will be moderated to avoid spam. Please understand that moderation will often cause some delay, in particular over weekends or holydays.


----boundary-LibPST-iamunique-180651453_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIE9uIFN1biwgMjEgTm92IDIwMDQsIFdvanRlayBT
a3Vsc2tpIHdyb3RlOlxwYXINClxwYXINCj4gSW5oZXJpdGFuY2UgcmVmZXJlbmNlcyBhcmUgc3Rh
dGljLCB3aGlsZSBwcm9jZWR1cmUgdmFyaWFibGVzIGFyZSBhc3NpZ25lZFxwYXINCj4gYXQgcnVu
IHRpbWUuIEZ1cnRoZXJtb3JlLCBldmVuIHRoZSBudW1iZXIgb2YgcHJvY2VkdXJlIHZhcmlhYmxl
c1xwYXINCj4gaW4gYSBnaXZlbiBtb2R1bGUgbWF5IG5vdCBiZSBrbm93biBzaW5jZSBwcm9jZWR1
cmUgdmFyaWFibGVzIGNhbiBiZVxwYXINCj4gY3JlYXRlZCBkeW5hbWljYWxseS4gRm9yIGV4YW1w
bGUsIGltYWdpbmUgYSB0eXBlXHBhcg0KPlxwYXINCj4gcHJWYXIgPSBQT0lOVEVSIFRPIFJFQ09S
RCBwdjogUFJPQ0VEVVJFOyBuZXh0OiBwclZhciBFTkQ7XHBhcg0KPlxwYXINCj4gT25lIGNhbiB0
aHVzIGNyZWF0ZSBhIGxpbmtlZCBsaXN0IG9mIHJlY29yZHMsIGVhY2ggb25lIGNvbnRhaW5pbmdc
cGFyDQo+IGEgcmVmZXJlbmNlIHRvIGEgcHJvY2VkdXJlLiBJbiBvcmRlciB0byBtYWtlIHVubG9h
ZGluZyBzYWZlIG9uZSBuZWVkc1xwYXINCj4gdG8gbWFpbnRhaW4gdGhvc2UgcmVmZXJlbmNlcyB2
ZXJzdXMgdW5sb2FkaW5nIG9mIG1vZHVsZXMgdGhhdCBpbXBsZW1lbnRccGFyDQo+IHRoZSAicHYi
IGZpZWxkcy5ccGFyDQpccGFyDQpPbiBteSBzZWNvbmQgdGhvdWdodDogdGhlIGV4YW1wbGUgYWJv
dmUgbWF5IGxlYWQgdG8gImR5bmFtaWMgaW1wb3J0cyIgYXNccGFyDQpvcHBvc2VkIHRvIHN0YXRp
YyBpbXBvcnRzIHRoYXQgYXJlIGtub3duIGF0IGNvbXBpbGUgdGltZS4gTXkgZWFybGllclxwYXIN
CmV4YW1wbGUgd2l0aCB0d28gbW9kdWxlcyBUZXN0VXBwZXIgYW5kIFRlc3RMb3dlciBjb3VsZCBp
bGx1c3RyYXRlIHRoZVxwYXINCnNhbWUgaWRlYS4gTmFtZWx5LCBlaXRoZXIgYSBwcm9jZWR1cmUg
dmFyaWFibGUgb3IgYW4gb2JqZWN0IHJlZmVyZW5jZVxwYXINCmZyb20gdGhlIG1vZHVsZSBVcHBl
ciBnZXRzIGluc3RhbGxlZCBpbiB0aGUgaG9vayB2YXJpYWJsZSBkZWNsYXJlZCBpblxwYXINCm1v
ZHVsZSBMb3dlciwgaG93ZXZlciwgd2l0aG91dCBzdGF0aWNhbGx5IGltcG9ydGluZyB0aGUgbW9k
dWxlIFVwcGVyLlxwYXINClRoaXMgbWVhbnMgdGhhdCBhdCBydW4gdGltZSB0aGUgbW9kdWxlIExv
d2VyIGNvbnRhaW5zIHJlZmVyZW5jZXNccGFyDQp0byB0aGUgbW9kdWxlIFVwcGVyLiBJIHdvdWxk
IGNhbGwgaXQgImR5bmFtaWMgaW1wb3J0IiBiZWNhdXNlXHBhcg0KdGhlIGRlcGVuZGVuY3kgd2Fz
IGNyZWF0ZWQgYXQgcnVuIHRpbWUuXHBhcg0KXHBhcg0KTm93IGltYWdpbmUgVXBwZXIgaXMgdW5s
b2FkZWQuIFdoYXQgaGFwcGVucyBpZiB0aGUgaG9vayB2YXJpYWJsZXMgYXJlIG5vdFxwYXINCnNl
dCB0byBOSUwgYnV0IHJhdGhlciBob2xkIHBvaW50ZXJzIHRvIHRoZSB1bmxvYWRlZCBjb2RlP1xw
YXINClxwYXINCk9uZSBzb2x1dGlvbiBtaWdodCBiZSB0aGF0IGJlZm9yZSBhIGdpdmVuIG1vZHVs
ZSBpcyB1bmxvYWRlZCwgYWxsXHBhcg0KcG9pbnRlcnMgaW4gYWxsIG90aGVyIG1vZHVsZXMgYXJl
IHRyYXZlcnNlZCB0aGUgc2FtZSB3YXkgYXMgR0MgaXMgZG9pbmdccGFyDQpub3csIGFuZCBpbiBj
YXNlIGEgcmVmZXJlbmNlIGlzIGVuY291bnRlcmVkIHRvIHRoZSBVcHBlciBjb2RlLCBpdCBpcyBu
b3RccGFyDQp1bmxvYWRlZCBidXQgYW4gZXJyb3IgbWVzc2FnZSBpcyBpc3N1ZWQuIFRoZSB0cmF2
ZXJzYWwgc2hvdWxkIGhhcHBlbiBhZnRlclxwYXINCnRoZSBDTE9TRSBwYXJ0IG9mIFVwcGVyIGlz
IGV4ZWN1dGVkLCBiZWNhdXNlIGluIGFsbCBsaWtlbGlob29kIGEgc2FuZVxwYXINCnByb2dyYW1t
ZXIgaGFzIHRha2VuIGNhcmUgb2YgdGhlIHByb2JsZW0gYnkgY2xvc2luZyBhbGwgcmVmZXJlbmNl
cy5ccGFyDQpIb3dldmVyLCBpbiBvcmRlciB0byBwcmV2ZW50IGEgZGFuZ2xpbmcgcG9pbnRlciBz
dGlsbCBleGlzdGluZyBzb21ld2hlcmUsXHBhcg0KdGhpcyBsYXN0LW1pbnV0ZSBjaGVjayBjYW4g
YmUgZG9uZS4gSWYgVXBwZXIgaXMgc3RpbGwgImR5bmFtaWNhbGx5XHBhcg0KaW1wb3J0ZWQiIGZy
b20gYW55IHBsYWNlIGluIHRoZSBzeXN0ZW0sIGl0IGlzIGtlcHQgaW4gbWVtb3J5LlxwYXINClxw
YXINCkkgd291bGQgbm90IGNvbXBsYWluIGFib3V0IHRoZSBpbmVmZmljaWVuY3kgb2YgdGhpcyBz
b2x1dGlvbiwgYmVjYXVzZSBpZlxwYXINCndlIGFjY2VwdCBHQyB0aGVuIHdlIHNob3VsZCBhbHNv
IGFjY2VwdCB0aGlzLiBIb3dldmVyLCBJIGFtIG5vdCBzdXJlIGlmXHBhcg0KdGhpcyByZWFsbHkg
c29sdmVzIHRoZSBwcm9ibGVtLiBJIGFtIGFsc28gc3VyZSBJIGFtIHJlaW52ZW50aW5nIHRoZSB3
aGVlbFxwYXINCmhlcmUuIFRoaXMgbGluZSBvZiB0aG91Z2h0IG11c3QgYmUgd2VsbCBrbm93bi5c
cGFyDQpccGFyDQpccGFyDQo+IEkgYW0gc3VyZSBvbmUgY2FuIGludmVudCBldmVuIG1vcmUgdmlj
aW91cyBzY2VuYXJpb3MuIE15IHF1ZXN0aW9uIHN0aWxsXHBhcg0KPiBzdGFuZHMgd2hldGhlciBh
bGwgdGhpcyBpcyBzYWZlIGluIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIHJ1biB0aW1lXHBh
cg0KPiBzeXN0ZW0sIGFuZCBpZiBub3QgdGhlbiB3aGV0aGVyIGl0IGNhbiBiZSBtYWRlIHNhZmUu
IEkgYW0gbm90IHlldCBidWluZ1xwYXINCj4gaW50byBGeW9kb3IgYXJndW1lbnRzLiBQZXJoYXBz
IHRoaXMgcHJvYmxlbSBoYXMgYmVlbiBzb2x2ZWQgYWxyZWFkeVxwYXINCj4gYnkgdGhlIGMucy4g
Y29tbXVuaXR5LiBJIHNpbXBseSBkbyBub3Qga25vdy4gSSBhbSBvbmx5IGEgdXNlci5ccGFyDQpc
cGFyDQpXLlxwYXINClxwYXINClxwYXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tXHBhcg0KXHBhcg0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIG1haWxpbmcg
bGlzdCwgc2VuZCBhIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgd29yZCAidW5zdWJzY3JpYmUiIHRv
OlxwYXINCiAgIGJsYWNrYm94LXJlcXVlc3RAb2Jlcm9uLmNoXHBhcg0KXHBhcg0KVG8gZ2V0IGEg
bGlzdCBvZiB2YWxpZCBlLW1haWwgY29tbWFuZHMgYW5kIGluc3RydWN0aW9ucyBvbiB0aGVpciB1
c2FnZSwgc2VuZCBhIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgd29yZCAiaGVscCIgdG8gdGhlIGFi
b3ZlIGFkZHJlc3MuXHBhcg0KXHBhcg0KU2VuZCBhbnkgcHJvYmxlbSByZXBvcnRzIG9yIHF1ZXN0
aW9ucyByZWxhdGVkIHRvIHRoaXMgZW1haWwgbGlzdCB0byB0aGUgbGlzdCBvd25lciBhdFxwYXIN
CiAgIG93bmVyLWJsYWNrYm94QG9iZXJvbi5jaFxwYXINClxwYXINCkN1cnJlbnQgcG9zdGluZyBw
b2xpY3k6XHBhcg0KXHBhcg0KYSkgVG8gcG9zdCB5b3Ugc2hvdWxkIHVzZSB0aGUgc2FtZSBhZGRy
ZXNzIGJ5IHdoaWNoIHlvdSBhcmUgc3Vic2NyaWJlZCB0byB0aGUgbWFpbGluZyBsaXN0LiBUaGF0
IHdheSwgdGhlIGxpc3Qgc2VydmVyIHdpbGwgcmVjb2duaXplIHlvdSBhcyBzdWJzY3JpYmVyIGFu
ZCBmb3J3YXJkIHlvdXIgcG9zdGluZyBpbW1lZGlhdGVseSwgd2l0aG91dCBjcmVhdGluZyBhbnkg
b3ZlcmhlYWQuXHBhcg0KXHBhcg0KYikgSWYsIGZvciBzb21lIHJlYXNvbiwgeW91IGNhbm5vdCBw
b3N0IGZyb20gdGhlIGFkZHJlc3MsIGJ5IHdoaWNoIHlvdSBhcmUgc3Vic2NyaWJlZCwgeW91ciBt
ZXNzYWdlIHdpbGwgYmUgbW9kZXJhdGVkIHRvIGF2b2lkIHNwYW0uIFBsZWFzZSB1bmRlcnN0YW5k
IHRoYXQgbW9kZXJhdGlvbiB3aWxsIG9mdGVuIGNhdXNlIHNvbWUgZGVsYXksIGluIHBhcnRpY3Vs
YXIgb3ZlciB3ZWVrZW5kcyBvciBob2x5ZGF5c319AGNHVnpJ


----boundary-LibPST-iamunique-180651453_-_---
Received on Mon Nov 22 2004 - 02:17:21 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:30 UTC