IRTransformTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 30 Mar 2009 14:47:18 +0000
changeset 9 04518c7fb91c
parent 1 0dd36941955f
child 10 0fd549e0c784
permissions -rw-r--r--
Initial support for closures.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/newcompiler' }"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
TestCase subclass:#IRTransformTest
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
	instanceVariableNames:''
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:''
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'NewCompiler-IR-Tests'
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!IRTransformTest methodsFor:'testing'!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
testAdd
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    14
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    16
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    17
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    18
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    19
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    20
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    21
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    22
    (iRMethod allSequences last) last delete.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    23
    (iRMethod allSequences last) last delete.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    24
    (iRMethod allSequences last) add:(IRInstruction pushLiteral:2).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    25
    (iRMethod allSequences last) add:(IRInstruction returnTop).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    26
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    27
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
testAddBefore
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    31
    |iRMethod aCompiledMethod ret|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    33
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    34
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    35
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    36
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    37
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    38
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    39
    (iRMethod allSequences last) last delete.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    40
    (iRMethod allSequences last) last delete.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    41
    ret := (IRInstruction returnTop).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    42
    (iRMethod allSequences last) add:ret.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    43
    (iRMethod allSequences last) add:(IRInstruction pushLiteral:2) before:ret.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    44
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    45
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
testAddIntructions
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
		pushLiteral: 1;				
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
	(iRMethod allSequences last) last delete.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
	(iRMethod allSequences last) last delete.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
	(iRMethod allSequences last)
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
			addInstructions: {(IRInstruction pushLiteral: 2). (IRInstruction returnTop)}.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
	self should: [(aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2].
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
testAddIntructionsBefore
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
	| iRMethod aCompiledMethod push |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
		pushLiteral: 1;				
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
	push := (iRMethod allSequences last) at: (iRMethod allSequences size - 1) .
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
	(iRMethod allSequences last)
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
			addInstructions: {(IRInstruction pushLiteral: 2). (IRInstruction returnTop)} before: push.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
	self should: [(aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2].
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
testAddIntructionsBeforeFromLList
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    90
    |iRMethod aCompiledMethod push llist col|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    92
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    93
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    94
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    95
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    96
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    97
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    98
    push := (iRMethod allSequences last) at:(iRMethod allSequences size - 1).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    99
    llist := LinkedList new.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   100
    llist add:(IRInstruction pushLiteral:2).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   101
    llist add:(IRInstruction returnTop).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   102
    col := llist asOrderedCollection.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   103
    (iRMethod allSequences last) addInstructions:col before:push.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   104
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   105
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
testDelete
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   109
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   111
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   112
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   113
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   114
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   115
                pushLiteral:2;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   116
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   117
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   118
    ((iRMethod allSequences last) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   119
        detect:[:each | each isConstant:[:c | c == 2 ] ]) delete.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   120
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   121
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 1 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
testReplace
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   125
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   127
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   128
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   129
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   130
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   131
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   132
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   133
    (iRMethod allSequences last at:1) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   134
        replaceWith:(IRInstruction pushLiteral:2).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   135
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   136
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
testReplaceInstr
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
		pushLiteral: 1;				
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
	(iRMethod allSequences last at: 1) 
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
			replaceWithInstructions: {(IRInstruction pushLiteral: 2)}.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
	self should: [(aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2].
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
! !
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
!IRTransformTest class methodsFor:'documentation'!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
version
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
    ^'$Id$'
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
! !