[Cross-space references] NewtonOS and Sessions
Jecel Assumpcao Jr
jecel at merlintec.com
Thu Aug 23 23:15:12 UTC 2001
On Thursday 23 August 2001 02:14, Rob Withers wrote:
> > ["cached smart references"]
>
> It's a pointer swizzle. I like the idea of controlling the reference
> and changing it's state (perhaps by an optimizing manager and not the
> client of the reference), like faulting the methods or state locally
> or defaulting then remotely.
These days I would call the "optimizing manager" a meta-object and the
reference itself would be a proxy. This seems cleaner than just a block
and a fixed-in-the-vm optimizing hack.
It is an interesting and flexible way to do things, but I am trying to
figure out what "the simplest thing that could possibly work" is.
> > myGraph := rmObj graph.
>
> SRP, that I just mentioned, does this with rules that control whether
> an object is pass-by-value or -ass-by-reference and whether the
> MetaState should be serialized. Always make external references
> smart, seems like the simplest design.
I found SRP very interesting though it seems to be designed for "off
line" transfer of binary objects between systems and not for
performance critical operation. Its compressed encoding was the
inspiration for my own variations on this idea.
Can you convert internal references into smart external ones
automatically? That was the problem with my scheme and with Texas. They
depend on human generated names for roots. If you are going to have
lots of references with names like "obj231234" you might as well give
up on human understandable external pointers.
> > where rmObj is a carefully hand crafted "root" in the other segment
> > but its graph is not.
>
> Gemstone controls the fault depth for a graph of objects. It says
> only fault in objects within 2 edges of me and stub the rest. That
> would lead to localization of objects accessed often and dynamically
> determine the clusters that get faulted.
This is also a great way to avoid getting stuck in circular references
:-)
> If the references are handles to a table, and we can restrict access
> to that table, then we can really hide external objects from prying
> hands.
My tables were protected by the virtual machine hardware. Any attempt
to access them trapped to the OS (boot session) which could do anything
it wanted to with it.
> I also liked the idea in Newton of using Ports for
> communication.
I think other systems (iAPX432, Mach, BeOS...) have something similar.
-- Jecel
More information about the Squeak-dev
mailing list
|