Eliot Miranda uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-eem.327.mcz==================== Summary ====================
Name: Tests-eem.327
Author: eem
Time: 25 August 2015, 4:21:25.745 pm
UUID: 40649464-54c2-4aab-b4a4-9df95952958d
Ancestors: Tests-ul.326
Revise the maxLiterals test given the bytecode set specific facilities in Encoder and CompiledMethod.
=============== Diff against Tests-ul.326 ===============
Item was changed:
----- Method: CompilerTest>>testMaxLiterals (in category 'limits') -----
testMaxLiterals
"Document the maximum number of literals in a compiled method"
| maxLiterals stringThatCanBeCompiled stringWithOneTooManyLiterals |
+ "Why 6? It's rather implementation dependent. But the {... construct is compiled as
+ (Array braceStream: size)
+ nextPut: expr;
+ ...;
+ braceArray
+ where nextPut: is a special selector. So one each for Array binding, #braceStream, #braceArray and the size,
+ one for the selector and one for the methodClass makes 6."
+ maxLiterals := thisContext method encoderClass new maxNumLiterals - 6.
- maxLiterals := 250.
stringThatCanBeCompiled := '{ ', (String streamContents: [:strm |
1 to: maxLiterals do: [:e | strm nextPutAll: '''', e asString, '''', ' . ']]), '}'.
stringWithOneTooManyLiterals := '{ ', (String streamContents: [:strm |
1 to: maxLiterals + 1 do: [:e | strm nextPutAll: '''', e asString, '''', ' . ']]), '}'.
self assert: ((1 to: maxLiterals) collect: #printString) equals: (Compiler evaluate: stringThatCanBeCompiled).
"If the following test fails, it means that the limit has been raised or eliminated,
and this test should be updated to reflect the improvement."
self should: [Compiler evaluate: stringWithOneTooManyLiterals] raise: Error.
!