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