[Pharo-project] mapping primitive numbers to meaningful selectors
Hi - in porting the Type Inference Engine to Pharo, I came across this problem. I was using the Interpreter class to help translate from the number of a primitive into a meaningful selector (eg from 1 to primitiveAdd). Any ideas how to achieve something similar in Pharo? Assuming primitive numbers haven't changed, I could just copy that method... - Francisco In Squeak 2.8: Interpreter class >> initializePrimitiveTable**** "This table generates a C switch statement for primitive dispatching."**** ** ** "NOTE: The real limit here is 2047, but our C compiler currently barfs over 700"**** MaxPrimitiveIndex _ 700.**** PrimitiveTable _ Array new: MaxPrimitiveIndex + 1.**** self table: PrimitiveTable from:**** #( "Integer Primitives (0-19)"**** (0 primitiveFail)**** (1 primitiveAdd)**** (2 primitiveSubtract)**** (3 primitiveLessThan)**** (4 primitiveGreaterThan)**** (5 primitiveLessOrEqual)**** (6 primitiveGreaterOrEqual)**** (7 primitiveEqual)**** (8 primitiveNotEqual)**** (9 primitiveMultiply)**** (10 primitiveDivide)**** (11 primitiveMod) : <and so on>
On 29 March 2012 11:03, Francisco Garau <francisco.garau@gmail.com> wrote:
Hi - in porting the Type Inference Engine to Pharo, I came across this problem.
I was using the Interpreter class to help translate from the number of a primitive into a meaningful selector (eg from 1 to primitiveAdd).
Any ideas how to achieve something similar in Pharo?
Assuming primitive numbers haven't changed, I could just copy that method...
It is changed, of course, you'd better use Cog's primitive table(s). And i am +100000 for the idea. If you read vm-dev list , i recently pointed out on same thing. It would be nice to replace numbers with selectors. And change the compiler to translate them.
- Francisco
In Squeak 2.8:
Interpreter class >> initializePrimitiveTable
               "This table generates a C switch statement for primitive dispatching."
               "NOTE: The real limit here is 2047, but our C compiler currently barfs over 700"
               MaxPrimitiveIndex _ 700.
               PrimitiveTable _ Array new: MaxPrimitiveIndex + 1.
               self table: PrimitiveTable from:
               #(           "Integer Primitives (0-19)"
                               (0 primitiveFail)
                               (1 primitiveAdd)
                               (2 primitiveSubtract)
                               (3 primitiveLessThan)
                               (4 primitiveGreaterThan)
                               (5 primitiveLessOrEqual)
                               (6 primitiveGreaterOrEqual)
                               (7 primitiveEqual)
                               (8 primitiveNotEqual)
                               (9 primitiveMultiply)
                               (10 primitiveDivide)
                               (11 primitiveMod)
:
<and so on>
-- Best regards, Igor Stasenko.
participants (2)
-
Francisco Garau -
Igor Stasenko