[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