[squeak-dev] The Trunk: Tests-mt.412.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Jul 5 14:19:49 UTC 2019


Marcel Taeumel uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-mt.412.mcz

==================== Summary ====================

Name: Tests-mt.412
Author: mt
Time: 5 July 2019, 4:19:48.095927 pm
UUID: 2c15b9f3-d33e-42b6-b9f5-bab98e2f6d03
Ancestors: Tests-pre.411

Fixes max-literals test for EncoderV3* (i.e., pre-SistaV1).

=============== Diff against Tests-pre.411 ===============

Item was changed:
  ----- Method: CompilerTest>>testMaxLiteralsWithClassReferenceInClosure (in category 'limits') -----
  testMaxLiteralsWithClassReferenceInClosure
  	"Document the maximum number of literals in a compiled method. A class
  	reference in a closure reduces the maximum literals."
  
  	| bytecodeSetEncoder maxLiterals stringThatCanBeCompiled stringWithOneTooManyLiterals |
  	bytecodeSetEncoder := CompiledMethod preferredBytecodeSetEncoderClass new.
  	maxLiterals := bytecodeSetEncoder maxNumLiterals
  					- 2 "for selector & methodClass"
+ 					- (bytecodeSetEncoder supportsFullBlocks ifTrue: [1] ifFalse: [5 "For this example. See below"])
- 					- (bytecodeSetEncoder supportsFullBlocks ifTrue: [1] ifFalse: [0])
  					- 4 "for the implicit stream processing into which the brace construct is compiled: (Array braceStream: size) braceArray".
  	stringThatCanBeCompiled := '[ DateAndTime now. Date today. Time ]. { ',
  			(String streamContents: [:strm |
  					1 to: maxLiterals do: [:e | strm nextPutAll: '''', e asString, '''', ' . ']]), '}'.
  	stringWithOneTooManyLiterals := '[ DateAndTime now. Date today. Time ]. { ',
  			(String streamContents: [:strm |
  					1 to: maxLiterals + 1 do: [:e | strm nextPutAll: '''', e asString, '''', ' . ']]), '}'.
  	self assert: maxLiterals equals: (Compiler evaluate: stringThatCanBeCompiled) size.
  	
  	"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.
  !



More information about the Squeak-dev mailing list