Vassili Bykov wrote:
Eliot's OOPSLA paper describes that improvement, as well as gives a good intro to closure implementation in VW in general:
http://www.squeak.org/oopsla99_vmworkshop/oopsla99-contexts.pdf
I have to put some water into the wine here... ;-(
The paper is interesting and stands in the tradition of and is related to earlier VW implementations, which have extended the ST80 specification. It addresses the realization of very fast block closures, so far so good.
But to reach this goal, native stack layout is used and different kind of mappings of ST contexts to native stack frames. I think this fits good into JIT-Compiler work, but
*** this isn't a platform independent approach ***.
Moreover I don't see a realization just by changing the interpreter and ST contexts, methods and related things.
To reach platform independence, we should use a slower, but compatible realization of block closures. More sophisticated techniques should be applied after a working common variant.
BTW: Are there any papers describing BlockClosures without referring to native stack layout?
Greetings,
Stephan
-- Vassili Bykov VisualWorks development vassili@parcplace.com
-----Original Message----- From: Tim Rowledge [mailto:tim@sumeru.stanford.edu] Sent: Thursday, July 27, 2000 2:29 PM To: squeak@cs.uiuc.edu Subject: Re: Block closures
Mats, if you're serious about this, do yourself a big favour and talk to Eliot Miranda about his recent (as in a year or so ago) improvements to block handling in VW; he's explained it to me but I couldn't for the life of me explain it to you and get it right. Basically I think it ... oh hell, get him to explain it.
And don't forget to talk with Ian Piumarta to make sure he isn't duplicating the work (he said at ECOOP he'd tackle it soon) and that you don't do anything that will break the jitter. Craig Latta did some pretty serious planning with Ian some time ago on this subject so he might some useful input for you as well. And don't forget the VM changes you'll need.
And don't forget to work out howto get there from here; the bit that has always put me off trying anything. I'd suggest using the SystemTracer to clone a new image with BlockClosures rather than trying to manage with both styles. At least with Squeak you can simulate the new system and have a decent debugger.
tim
-- Tim Rowledge, tim@sumeru.stanford.edu, http://sumeru.stanford.edu/tim To err is human; to forgive, beyond the scope of the Operating System.
In message 3982FB87.A4B1ABA9@evolgo.de you wrote:
I have to put some water into the wine here... ;-(
The paper is interesting and stands in the tradition of and is related to earlier VW implementations, which have extended the ST80 specification. It addresses the realization of very fast block closures, so far so good.
But to reach this goal, native stack layout is used and different kind of mappings of ST contexts to native stack frames. I think this fits good into JIT-Compiler work, but
*** this isn't a platform independent approach ***.
Depending somewhat on how you are defining platform independent I have to take issue with this statement. VW runs on about as many platforms as Squeak (yes, even Acorn, though never commercially. I did a port while I was at ParcPlace) and the context stuff is as portable as the rest.
Moreover I don't see a realization just by changing the interpreter and ST contexts, methods and related things.
I think that by changing that bunch you could realize almost anything!
The basic essence of BlockClosure is to create a closure instead of a BlcokContext at the point where the current system uses the blockCopy bytecode and to change the value primitives to use that closure to create a fresh BlockContext instead of just activating the Blockcontext that would be there now. Nothing wierd there at all.
The bit I find tricky is how to access the home context temporaries etc cleanly and I think that is the key point from Eliot's paper.
tim
squeak-dev@lists.squeakfoundation.org