I'm using a Squeak 3.8g 6527 image on Mac OS X. I've built my VM from Ian Pumarta's latest stable Unix VM sources.
With those same sources, i've loaded the latest VM into my image and regenerated the VM sources. WIth the exception of a small number of other fixes that I understand, I can't figure out is supposed to happen when methods in the VM invoke dispatchFunctionPointer (and in some cases, dispatchFunctionPointerOnIn). The way I read this, the generated VM should just make a function call to a function passed as an argument (or looked up in a table using in an index).
I found a reference in June '04 to John Mc putting "dispatchFunctionPointer" support into his VM, based on Tim's changes. Anybody have any idea what dispatchFunctionPointer and dispatchFunctionPointerOnIn should do? My VM doesn't link because these functions are missing.
Thanks in advance!
The sq.h you have should have /* typedef and macro to handle primitive dispatch * the primitive table is now a table and we jump direct to the function */ typedef int (*fptr) (void); #define dispatchFunctionPointerOnin(index, table) (((int (*) (void)) ((table)[(index)])) ()) #define dispatchFunctionPointer(fnPtr) ((int (*) (void)) fnPtr) ()
The rest of the code is generated in interp.c via changes found in some flavor of VMMaker. Check which version of VMMaker you have and if you have generated a new interp.c file
On Dec 27, 2004, at 7:38 PM, Phil Hargett wrote:
I'm using a Squeak 3.8g 6527 image on Mac OS X. I've built my VM from Ian Pumarta's latest stable Unix VM sources.
With those same sources, i've loaded the latest VM into my image and regenerated the VM sources. WIth the exception of a small number of other fixes that I understand, I can't figure out is supposed to happen when methods in the VM invoke dispatchFunctionPointer (and in some cases, dispatchFunctionPointerOnIn). The way I read this, the generated VM should just make a function call to a function passed as an argument (or looked up in a table using in an index).
I found a reference in June '04 to John Mc putting "dispatchFunctionPointer" support into his VM, based on Tim's changes. Anybody have any idea what dispatchFunctionPointer and dispatchFunctionPointerOnIn should do? My VM doesn't link because these functions are missing.
Thanks in advance!
-- ======================================================================== === John M. McIntosh johnmci@smalltalkconsulting.com 1-800-477-2659 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com ======================================================================== ===
In message 984E2E86-5883-11D9-915C-000D93333B80@smalltalkconsulting.com John M McIntosh johnmci@smalltalkconsulting.com wrote:
The sq.h you have should have /* typedef and macro to handle primitive dispatch
- the primitive table is now a table and we jump direct to the
function */ typedef int (*fptr) (void); #define dispatchFunctionPointerOnin(index, table) (((int (*) (void)) ((table)[(index)])) ()) #define dispatchFunctionPointer(fnPtr) ((int (*) (void)) fnPtr) ()
Yup. If you don't have those in your copy of sq.h you will certainly have problems. The only plausible route I can think of to get there is that you have got a copy of Ian's experimental 64bit C code where the macros are removed because he instead implemented their equivalent in the Interpreter Smalltalk code.
The current official VMMaker release doesn't yet have any of that 64bit stuff included. Note that to use the 64bit stuff you must start with a copy of the VMMaker3-7b5 from SM NOT NOT the latest 3-8 version.
If you want to build from the 3-8 VMMaker you will need to suck the code out of the new Subversion server....ah, but I'm not sure it's open to the public yet. Ian/Andreas?
I'll get to work on merging the code sometime but it's not my day job and I'm a bit busy currently installing a mega-dust-collector in my workshop.(http://www.oneida-air.com/systems/2comm/2commmain.htm ) Need to protect those lungs y'see.
tim -- Tim Rowledge, tim@sumeru.stanford.edu, http://sumeru.stanford.edu/tim Useful Latin Phrases:- Magister Mundi sum! = I am the Master of the Universe!
Thanks for the assistance! It was the missing bits in sq.h that did the trick; I checked my sources from the 3.6.3 Unix VM, and indeed those bits are not present in sq.h. No big deal; VM compiles and links just fine now. If I get a chance, I'll send off to the list the few bits I needed to tweak in this image to get the whole think to work.
Thank you! :)
On Dec 27, 2004, at 10:38 PM, Phil Hargett wrote:
I'm using a Squeak 3.8g 6527 image on Mac OS X. I've built my VM from Ian Pumarta's latest stable Unix VM sources.
With those same sources, i've loaded the latest VM into my image and regenerated the VM sources. WIth the exception of a small number of other fixes that I understand, I can't figure out is supposed to happen when methods in the VM invoke dispatchFunctionPointer (and in some cases, dispatchFunctionPointerOnIn). The way I read this, the generated VM should just make a function call to a function passed as an argument (or looked up in a table using in an index).
I found a reference in June '04 to John Mc putting "dispatchFunctionPointer" support into his VM, based on Tim's changes. Anybody have any idea what dispatchFunctionPointer and dispatchFunctionPointerOnIn should do? My VM doesn't link because these functions are missing.
Thanks in advance!
squeak-dev@lists.squeakfoundation.org