Multy-core CPUs

John M McIntosh johnmci at smalltalkconsulting.com
Thu Oct 18 16:49:19 UTC 2007


> I am currently trying to understand what to do with all of the  
> global variables used in the interp loop, so I can have multiple  
> threads running that code.

Ah, well my intent was to ensure there was no globals, however there  
are a few because.

sqInt extraVMMemory;		/* Historical reasons for mac os-9 setup, not  
needed as a global now*/
sqInt (*compilerHooks[16])();	/* earlier versions of the code warrior  
compiler had issues when you stuck this in a structure, should be  
fixed now
usqInt memory;				/* There where some usage of memory in ccode:  
constructs in the in interp, I think these might be gone now
void* showSurfaceFn;			/* not sure about this one

struct VirtualMachine* interpreterProxy;  /* This points to the  
interpreterProxy, It's there historically to allow direct linking  
from support code, but really you should use an accessor.

The rest are set to values which you can't do in a struct, however  
somewhere in or before the readImageFromFileHeapSizeStartingAt
you could allocate the foo structure and initialize these values.   
There of course is some messy setup code in the VM that might refer  
to procedures in
interp.c before an image is loaded of course, that is poor  practice,  
you would need to root that out.

char* obsoleteIndexedPrimitiveTable[][3] = {
const char* obsoleteNamedPrimitiveTable[][3] = {
void *primitiveTable[577] = {
const char *interpreterVersion =



--
======================================================================== 
===
John M. McIntosh <johnmci at smalltalkconsulting.com>
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
======================================================================== 
===





More information about the Squeak-dev mailing list