Building latest Unix VM - how?

Scott A Crosby crosby at qwes.math.cmu.edu
Sat Jan 19 13:06:20 UTC 2002


On 19 Jan 2002, Cees de Groot wrote:

> Hi,
>
> Because I want to look into Squeak's consuming inordinate CPU resources now
> and then (constantly calling gettimeofday()) and because I want to extent the

There is a lot in the VM avenue thats hopefully oncoming. Mostly patches
from myself and Andraes Raab. He's got one that removes a most of those
calls. (About 90% come from primitiveResponse trying to decide whether a
primitive has taken 'too long' and a timer interrupt should be flicked.)
(I can forward it to you; I've not run it myself; only read it.)

I've got one that redoes the methodcache. ~30% improvement in
macrobenchmarks.

And Andraas has several that make fullGC's a lot less frequent on the VM
side. WHen I next rebuild a new VM, I'll try all of em together. I've got
one that makes them less frequent on the smalltalk side. I wonder if I'll
be able to run a full macrobenchmarks without a single fullGC. :)

There's also another place (in commonSend, I believe) where a
 a _ b _ XXXX
doesn't inline XXX, while
 b _ XXXX. a _ b.
does, and give a few percent.

So, I'd consider applying those, then playing with the resultant VM before
doing much VM hacking.


> socket primitives to accept an IP address to listen on (so you can run it
> besides Apache on port 80, both on their own IP address; sort of important for
> hosting Squeak), I am trying to build a recent VM under Linux.
>
> I've tried VMMaker and Tim's platforms zip file, but that had all sort of
> problems with paths and a broken configure; the platforms/ from SourceForge
> are much better, but the makefile is not updated for the plugins (a line
> '@auto_make@' lingers in the generated Makefile). Could someone help me in
> building My Own Hacker VM?

I have the same trouble with the makefile being built wrong. If I remove
that line, I get another error (declaration and definition of a function
mismatch), fix that, and I get a bunch of missing symbols during
the compile. Then I decided to wait another few weeks and try again.

If you find a recipee that works, I may try it myself.

What I have: I grab the unix source tree (the old, non-vmmaker tree). Run:

Time millisecondsToRun: [
	Interpreter translate: 'interp.c' doInlining: true.
	Smalltalk beep]

Which builds everything. Then *move* the generated files into the source
tree and tada.  Note that that source tree has a bug in sockets causing
crashes, so grab the patch.

>>>
@@ -547,7 +325,7 @@

 static int socketValid(SocketPtr s)
 {
-  if ((s != 0) && (s->privateSocketPtr != 0) && (s->sessionID == thisNetSession ))
+  if ((s != 0) && (thisNetSession != 0) && (s->privateSocketPtr != 0) &&  (s->sessionID == thisNetSession))
     return true;
   interpreterProxy->success(false);
   return false;
@@ -596,14 +374,19 @@
   pss->pendingEvents= 0;
 }
<<<

Thats what I'll run till vmmaker works for me.



Scott




More information about the Squeak-dev mailing list