VM pointers delivered

sig siguctua at gmail.com
Fri Jul 13 03:01:40 UTC 2007


VMMaker-sig.70
Exupery-sig.262

- removed numerous xxxxAddress methods from Interpreter,
ExuperyPlugin, MachineX86.

- added 4 new methods to Interpreter:
exuperyPrimitiveGlobalPtrCount   -- returns number of pointers stored in table

exuperyPrimitiveGlobalPtrByName -- by giving a name of pointer (string
or symbol) returns an array (pointer name proto) , or nil if not found
exuperyPrimitiveGlobalPtrByIndex -- same as above but uses index as parameter
exuperyGetGlobalPtrInfo: -- helper function to generate Array (pointer
name proto)

To see all VM global pointers use Exupery vmGlobalPtrs
 will return dictionary name -> info. where info is array of 4 elements:
- pointer value
- name
- prototype for functions or '<var>' for variables
  a function prototype can be useful to see argument types and names
e.t.c., so, it can be parsed in smalltalk to generate a cdecl callout
to it.
- index in global table ( left for later use , when i add support for
replacing pointer in table :) )

also, note, the function names are stored as smalltalk selectors, not
their corresponding C equivalents.
so, you have names like 'commonVariableInternal:at:cacheIndex:'
instead of 'commonVariableInternalatcacheIndex' in table so its easier
to get to its implementation in Interpreter class.

To see, how globals table generated look at
CCodeGenerator>>emitGlobalTablesOn:methodList:

i'm using struct instead of array, to preserve function names and type
info. so later i can substitute calls like:  foo(bar)  with
VMPointers->foo(bar)
and then be able to replace given function with anything i want.

All tests is passed fine except 3 cases, simply because i don't have
following classes in image:

GraphVizBaseTests
CommandShell
FloatMathPluginTests

i don't think something will change if they will be. :)


More information about the Exupery mailing list