Looking at compiler inline...

Ian Piumarta ian.piumarta at inria.fr
Thu Apr 8 19:04:59 UTC 2004


Hi Alan,

> The next thing I tried was to change the prefferances of VMMaker to 
> disable inlining.
>
> This caused the compiler to generate a file was broken on the unix 
> platform due to some ill-advised post-proccessing by "gnuify" ( sorry, 
> Ian...)

I'm not sure it's broken, just a little obscure to use (since only 
those doing VM debugging or low-level profiling should ever care about 
it -- as you just discovered as part of your current adventures ;).

Gnuify should detect a non-inlined interp.c and bail immediately.  If 
it doesn't, that's a bug.

You can build a VM from a non-gnuified interp.c, but you have to tell 
"make" explicitly to avoid trying to gnuify it at all, like this:

     ../plat/ux/conf/configure         # as usual
     make INTERP=interp                # avoid gnuifying

How does this work?  The VM is built from a bunch of stuff, including 
${INTERP}.o which contains the generated part of the VM.  The default 
value of INTERP is "gnu-interp", which does not exist in the source 
tree at the beginning; only the file "interp.c" already exists.  Then 
there is a rule in the Makefile that says "gnu-interp.c is built from 
interp.c by gnufiying the latter into the former".  That's where the 
"missing" gnu-interp.c file comes from, and where the gnuification 
stage actually takes place.

By running make with "INTERP=interp" as an argument on the command-line 
you simply bypass the rule that gnuifies interp.c, since "gnu-interp.o" 
is never required by the build, and simply use the original one 
unmodified instead.

I hope that made some kind of sense.

Cheers,
Ian




More information about the Squeak-dev mailing list