Writing a primitive test first in Exupery

Yakov Zaytsev iakovz at gmail.com
Sun Jun 24 21:23:11 UTC 2007


 > Primitive code is implemented in IntermediateSimplifier which
 > converts high level intermediate into low level intermediate.

Could some information about intermediates be provided?

 > Now look at IntermediateSimplifierTests>>testAtPrimitive. Use
 > this as an example to write a test for the "^ true" primitive.

IntermediateSimplifierTests >>testAtPrimitive
	source := MedMethod
				createIntermediate:
					#((block 1  (primitive 60 Array block2 receiver arg1) ))
				for: machine.			
	mockEmitter expectEmission:
		#((block1
				(mov arg1 t1) "Index"
				(mov receiver t2)	"receiver"
				(addressOfIndexedElement t2 t1 block2))
			(block2)).
	...


It was discovered that createIntermediate:for: is connected with  
IntermediateCreator>>createBlock and friends... In order  
testTruePrimitive to be written, it's needed to be known how to write  
such arrays
				#((block 1  (primitive 60 Array block2 receiver arg1) ))

Talking about MockIntermediateEmitter. Is this a pidgin assembler  
stateements
				(mov arg1 t1) "Index"
				(mov receiver t2)	"receiver"
				(addressOfIndexedElement t2 t1 block2))
There's MockIntermediateEmitter>>addressOfIndexedElement:at:failTo:  
which probably is connected with
				(addressOfIndexedElement t2 t1 block2))
..but there's no something similar to mov...

It would be great if some more details will be given regarding how  
typical primitive test code is written

Thanks in advance


Yakov





More information about the Exupery mailing list