The limitation is inherit in the object format/ instruction set, you can find
some previous discussions at
http://forum.world.st/Max-source-method-length-Max-string-length-Max-change-set-size-td3531169.html#a3535281
and
http://forum.world.st/More-than-256-literals-referenced-td4676669.html#a4676972

One alternative is to change the compiler to create a literal array to hold
all literals > 255 and rewrite accesses to indexes above 254 as something
like 
genPushLiteral: 255
pushLiteral #at:
pushConst: X
messageSend
, but as long as we're talking about a single digit number of cases, and not
translating 200+ UI specs, it is probably a lot easier (albeit, maybe a
little slower) to rewrite the code in a way which works in both dialects
without using a large number of literals, say:

MyClass class >> #initializeStaticVals
dict := Dictionary new.
initializerPairs := #(
Key1 2 
Key2 4
).
1 to: initializerPairs size by: 2 do: [:ix | dict at: (initializerPairs at:
ix) put: (initializerPairs at: ix +1)].
MyClassVar := dict.

(Haven't seen a support layer package for VA, sorry)

Cheers,
Henry



--
View this message in context: 
http://forum.world.st/Problem-compiling-method-source-genPushLiteral-out-of-range-tp4961986p4962020.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.

Reply via email to