IRBuilderTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 02 Dec 2008 08:14:54 +0000
changeset 6 49a61123c743
parent 5 b94aea1d3710
child 9 04518c7fb91c
permissions -rw-r--r--
A new IRLine pseudoinstruction added to include debugging info into the bytecode. See IRBuilderTests for examples.
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:#IRBuilderTest
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:'TestToPush'
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
!IRBuilderTest class methodsFor:'as yet unclassified'!
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
testToPush
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
	^TestToPush
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
testToPush: anObject
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	TestToPush := anObject
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
! !
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    22
!IRBuilderTest methodsFor:'mock methods'!
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    23
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    24
mock1: arg1 with: arg2
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    25
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    26
    ^arg1 + arg2
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    27
6
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    28
    "Created: / 02-12-2008 / 09:11:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    29
! !
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    30
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
!IRBuilderTest methodsFor:'testing'!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
halt
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
        "Redefinition for testing the #send:toSuperOf:"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    "Created: / 11-06-2008 / 16:08:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
isThisEverCalled
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
	"Redefinition for testing the #send:toSuperOf:"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
testDup
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
		addTemps: #(self);		"receiver and args declarations"
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
		pushLiteral: 3;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
		pushDup;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
		
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
		send: #=;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
		
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = true).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
!
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
testInstVar
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
        | aCompiledMethod irBuilder |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
        irBuilder := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
                addTemps: #(self);              "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
                pushInstVar: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
                pushInstVar: 2;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
                send: #+;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
                
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
                ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
        aCompiledMethod := irBuilder compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
     self assert: ((aCompiledMethod valueWithReceiver: (3@4) arguments: #() ) = 7).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    "Modified: / 11-06-2008 / 13:16:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
testJumpAheadTo
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
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
		pushTemp: #self	;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
		jumpAheadTo: #end;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
		pushLiteral: 3;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
		jumpAheadTarget: #end;	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
		
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = nil).
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
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
testJumpAheadToIf
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
		pushTemp: #self	;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
		pushLiteral: true;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
		
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
		"jumpAhaedTo pop the first element of thz stack"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
		jumpAheadTo: #end if: true;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
		pushLiteral: 3;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
		jumpAheadTarget: #end;	
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
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = nil).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
testJumpBackTo
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
		pushTemp: #self	;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
		pushLiteral: false;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
		jumpBackTarget: #begin;
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
		"jumpAhaedTo pop the first element of the stack"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
		jumpAheadTo: #end if: true;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
		pushLiteral: true;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
		jumpBackTo: #begin;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
		jumpAheadTarget: #end;	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
		
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = nil).
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
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
6
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   159
testLine1
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   160
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   161
        | iRMethod aCompiledMethod |
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   162
        iRMethod := IRBuilder new
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   163
                numRargs: 1;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   164
                addTemps: #(self); "receiver and args declarations"
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   165
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   166
                line: 5;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   167
                pushLiteral: true;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   168
                returnTop;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   169
                ir.
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   170
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   171
        aCompiledMethod := iRMethod compiledMethod.
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   172
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   173
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   174
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = true).
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   175
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   176
    "Created: / 02-12-2008 / 09:11:06 / Jan Vrany <vranyj1@fel.cvut.cz>"
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   177
!
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   178
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   179
testLine2
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   180
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   181
        | iRMethod aCompiledMethod |
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   182
        iRMethod := IRBuilder new
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   183
                numRargs: 1;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   184
                addTemps: #(self); "receiver and args declarations"
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   185
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   186
                line: 5;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   187
                pushLiteral: true;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   188
                pushLiteral: false;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   189
                send: #&;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   190
                returnTop;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   191
                ir.
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   192
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   193
        aCompiledMethod := iRMethod compiledMethod.
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   194
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   195
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   196
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = false).
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   197
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   198
    "Created: / 02-12-2008 / 09:11:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   199
!
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   200
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
testLiteralArray
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
		pushLiteral: #(test 4 you); 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = #(test 4 you)).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
testLiteralBoolean
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
		pushLiteral: true; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = true).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
testLiteralCharacter
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
		pushLiteral: $e; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = $e).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
testLiteralFloat
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   260
        | iRMethod aCompiledMethod |
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   261
        iRMethod := IRBuilder new
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   262
                numRargs: 1;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   263
                addTemps: #(self);              "receiver and args declarations"
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   264
                        
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   265
                pushLiteral: 2.0;       
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   266
                returnTop;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   267
                ir.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   269
        aCompiledMethod := iRMethod compiledMethod.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   271
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2.0).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   274
    "Modified: / 03-11-2008 / 08:39:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
testLiteralInteger
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
		pushLiteral: 2; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
testLiteralNil
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
		pushLiteral: nil; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
     self assert: ((aCompiledMethod valueWithReceiver: 4 arguments: #() ) = nil).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
testLiteralString
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
		pushLiteral: 'hello'; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = 'hello').
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
testLiteralSymbole
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
		pushLiteral: #you; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = #you).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
testLiteralVariableClass
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
		pushLiteralVariable: Object binding;	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = Object).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
testLiteralVariableClassVariable
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
        | iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
                addTemps: #(self);              "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
                        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
                pushLiteralVariable: (ArithmeticValue bindingOf: #ArithmeticSignal);   
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
                ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = ArithmeticValue arithmeticSignal).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
    "Modified: / 11-06-2008 / 11:31:32 / Jan Vrany <vranyj1@fel.cvut.cz>"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
testLiteralVariableGlobale
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
        | iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
                addTemps: #(self);              "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
                        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
                pushLiteralVariable: Smalltalk binding;     
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
                ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = Smalltalk).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
    "Modified: / 11-06-2008 / 11:32:07 / Jan Vrany <vranyj1@fel.cvut.cz>"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
testPopTop
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
        | iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   413
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
                addTemps: #(self);              "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
                pushLiteral: true         ;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
                        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
                pushLiteral: false;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
                popTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
                
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
                ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = true).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
    "Modified: / 11-06-2008 / 13:22:11 / Jan Vrany <vranyj1@fel.cvut.cz>"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
testPushReceiver
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
	| iRMethod aCompiledMethod receiver |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
		pushReceiver;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
	receiver :=  (5@8).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
     self assert: ((aCompiledMethod valueWithReceiver: receiver arguments: #() ) == receiver).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
testPushTempArgument
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
	| iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
		numRargs: 3;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
		addTemps: #(self a b);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
		pushTemp: #a;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
		pushTemp: #b;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
		send: #+;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   460
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   461
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #(2 8) ) = 10).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
testPushTempSelf
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
		pushTemp: #self;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
		send: #class;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) == UndefinedObject).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
testPushTempTemp
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
	| iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
		addTemps: #(self a);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
		pushTemp: #a;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
     self assert: ((aCompiledMethod valueWithReceiver: 5 arguments: #() ) = nil).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   509
testPushThisContext
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
	| iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
		addTemps: #(self a);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
		pushThisContext;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
		send: #receiver;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
     self assert: ((aCompiledMethod valueWithReceiver: 5 arguments: #() ) = 5).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   527
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   528
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   529
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   530
testPushThisEnv
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   531
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   532
        | iRMethod aCompiledMethod receiver |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   533
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
        ^self.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   535
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   536
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   537
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   538
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   539
                addTemps: #(self);              "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   540
                pushThisContext;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   541
                pushLiteral: 5;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   542
                pushLiteral: ClosureEnvironment;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   543
                pushLiteral: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   544
                send: #new:;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   545
                send: #privSetInstVar:put:;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   546
                pushThisEnv;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   547
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   548
                ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   549
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   550
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   551
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   552
        receiver := Object new.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   553
        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   554
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   555
     self assert: ((aCompiledMethod valueWithReceiver: receiver arguments: #()) isKindOf: ClosureEnvironment)
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   556
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   557
    "Modified: / 11-06-2008 / 14:47:36 / Jan Vrany <vranyj1@fel.cvut.cz>"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   558
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   559
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   560
testSendNumArgs1
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   561
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   562
        | iRMethod aCompiledMethod  |
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   563
        iRMethod := IRBuilder new
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   564
                numRargs: 1;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   565
                addTemps: #(self);              "receiver and args declarations"
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   566
        
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   567
                pushReceiver;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   568
                pushLiteral: 1;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   569
                pushLiteral: 2;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   570
                send: #mock1 numArgs:2;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   571
                returnTop;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   572
                ir.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   573
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   574
        aCompiledMethod := iRMethod compiledMethod.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   575
        self class 
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   576
            basicAddSelector: #mock1 withMethod: (self class >> #mock1:with:).
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   577
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   578
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   579
        self assert: (aCompiledMethod valueWithReceiver: (IRBuilderTest new) arguments:#())
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   580
                        = 3.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   581
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   582
        self class 
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   583
            basicRemoveSelector: #mock1.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   584
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   585
    "Created: / 01-12-2008 / 19:58:18 / Jan Vrany <vranyj1@fel.cvut.cz>"
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   586
!
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   587
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   588
testSendNumArgs2
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   589
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   590
        | iRMethod aCompiledMethod  |
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   591
        iRMethod := IRBuilder new
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   592
                numRargs: 1;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   593
                addTemps: #(self);              "receiver and args declarations"
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   594
        
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   595
                pushReceiver;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   596
                pushLiteral: 1;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   597
                send: #mock1 numArgs:1;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   598
                returnTop;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   599
                ir.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   600
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   601
        aCompiledMethod := iRMethod compiledMethod.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   602
        self class 
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   603
            basicAddSelector: #mock1 withMethod: (self class >> #mock1:with:).
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   604
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   605
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   606
        self 
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   607
            should: [(aCompiledMethod valueWithReceiver: (IRBuilderTest new) arguments:#())]
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   608
            raise: Error.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   609
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   610
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   611
        self class 
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   612
            basicRemoveSelector: #mock1.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   613
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   614
    "Created: / 01-12-2008 / 19:59:02 / Jan Vrany <vranyj1@fel.cvut.cz>"
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   615
!
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   616
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   617
testSendSuper
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   618
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   619
        | iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   620
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   621
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   622
                addTemps: #(self);              "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   623
        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   624
                pushReceiver;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   625
                send: #halt toSuperOf: IRBuilderTest;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   626
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   627
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   628
                ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   629
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   630
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   631
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   632
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   633
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   634
     self should: [(aCompiledMethod valueWithReceiver: (IRBuilderTest new) arguments: #())] raise: Error.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   635
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   636
    "Modified: / 11-06-2008 / 16:09:12 / Jan Vrany <vranyj1@fel.cvut.cz>"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   637
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   638
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   639
testStorIntoVariable
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   640
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   641
	| iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   642
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   643
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   644
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   645
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   646
		pushLiteral: 4;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   647
		storeIntoLiteralVariable: (IRBuilderTest bindingOf: #TestToPush);
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   648
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   649
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   650
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   651
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   652
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   653
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   654
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   655
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   656
     aCompiledMethod valueWithReceiver: nil arguments: #().
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   657
	self assert: (IRBuilderTest testToPush = 4).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   658
	IRBuilderTest testToPush: nil.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   659
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   660
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   661
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   662
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   663
testStoreTemp
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   664
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   665
        | iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   666
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   667
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   668
                addTemps: #(self a);            "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   669
        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   670
                pushLiteral: 34;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   671
                storeTemp: #a;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   672
                pushTemp: #a;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   673
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   674
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   675
                ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   676
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   677
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   678
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   679
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   680
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = 34).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   681
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   682
    "Modified: / 11-06-2008 / 16:24:43 / Jan Vrany <vranyj1@fel.cvut.cz>"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   683
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   684
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   685
testStoreThisEnv
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   686
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   687
        | iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   688
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   689
        ^self.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   690
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   691
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   692
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   693
                addTemps: #(self a);            "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   694
                pushLiteral: ClosureEnvironment;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   695
                pushLiteral: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   696
                send: #new:;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   697
                storeThisEnv;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   698
                pushThisContext;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   699
                pushLiteral: 5;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   700
                send: #privGetInstVar:;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   701
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   702
                ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   703
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   704
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   705
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   706
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   707
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) isKindOf: ClosureEnvironment).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   708
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   709
    "Modified: / 11-06-2008 / 14:47:51 / Jan Vrany <vranyj1@fel.cvut.cz>"
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   710
!
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   711
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   712
testTwoJumpAheadToIfsToSameTarget
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   713
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   714
        | iRMethod aCompiledMethod |
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   715
        iRMethod := IRBuilder new
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   716
                numRargs: 1;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   717
                addTemps: #(self);              "receiver and args declarations"
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   718
                pushTemp: #self         ;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   719
                pushLiteral: false;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   720
                jumpAheadTo: #end if: true;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   721
                pushLiteral: true;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   722
                jumpAheadTo: #end if: true;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   723
                pushLiteral: 3;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   724
                jumpAheadTarget: #end;  
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   725
                
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   726
                returnTop;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   727
                ir.
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   728
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   729
        aCompiledMethod := iRMethod compiledMethod.
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   730
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   731
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   732
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = nil).
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   733
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   734
    "Created: / 03-11-2008 / 13:34:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   735
! !
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   736
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   737
!IRBuilderTest class methodsFor:'documentation'!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   738
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   739
version
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   740
    ^'$Id$'
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   741
! !