[self-interest] Self on the Macintosh

Jecel Assumpcao Jr jecel at merlintec.com
Wed Aug 16 22:42:45 UTC 2000

C. Ramakrishnan wrote:
> I'm assuming this performance is because the SIC is so awesome (not
> because the Sparc is that much better than the PPC :), and I would
> love to see it on the Mac.

Exactly. If you run a program like Squeak Smalltalk on these machines
you will notice that even your "slow" Macs are faster than the Sparc.

> So, what's involved in getting the SIC on the PPC?  Implement
> genHelper_ppc.c, node_ppc.c, and any supporting methods on Assembler?
> What else?  Is this work that's worth tackling, or is it going to be
> extraordinarily difficult?

It doesn't look too hard to do. One thing to remember, though, it that
the NIC didn't use the Sparc register windows (I think... Urs wrote
something about this in his thesis) but the SIC does. My first
impression what that David Ungar isolated this in the *sparc.c files,
but there could be some traps waiting inside the main SIC sources.
Grepping for "indow" there only turns up:

node.c:              needToFlushRegWindow ? "flush " : "",
node.h:    bool needToFlushRegWindow;
node.h:      needToFlushRegWindow = fr; isAccessMethod = am; nargs = n;
node.h:    void flushRegisterWindows();
nodeGen.c:  void NodeGen::prologue(bool needToFlushRegWindow, bool isAccessMethod,
nodeGen.c:    current = start = new PrologueNode(needToFlushRegWindow, isAccessMethod,
nodeGen.h:    void prologue(bool needToFlushRegWindow, bool isAccessMethod, fint nargs);
sic.c:    needRegWindowFlushes = false;
sic.h:    bool needRegWindowFlushes;          // compile reg-window flushing blocks
sicScope.c:      theNodeGen->prologue(theSIC->needRegWindowFlushes, false, nargs); 

This might be tricky.....

> If it is going to be extraordinarily difficult is there any thing we
> can do to speed up performance on the Mac?  Implement a scaled-down,
> windowing system that uses native widgets? 

This would probably be a lot more complicated than doing the SIC, and
the results wouldn't be as good.

> Wait for Self-in-Self
> where it should be easier to work with the VM?

The bad news is that I haven't started writing this yet. The good news
is that (like tinySelf 1) the latest "builds" will always be available
on the net so you won't have to wonder what I am doing. The first
compiler will target the X86, but it is meant to be portable from the
very begining.

-- Jecel

More information about the Self-interest mailing list