IRBuilderTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 01 Dec 2008 19:01:08 +0000
changeset 5 b94aea1d3710
parent 3 c9845c180bd4
child 6 49a61123c743
permissions -rw-r--r--
Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:. Those methods will be used by the Ruby compiler
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
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    28
    "Created: / 01-12-2008 / 19:59:11 / 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
    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
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
testLiteralArray
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
		pushLiteral: #(test 4 you); 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
     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
   174
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
testLiteralBoolean
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
		pushLiteral: true; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = true).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
testLiteralCharacter
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
		pushLiteral: $e; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
		ir.
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
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = $e).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
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
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
testLiteralFloat
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   218
        | iRMethod aCompiledMethod |
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   219
        iRMethod := IRBuilder new
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   220
                numRargs: 1;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   221
                addTemps: #(self);              "receiver and args declarations"
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   222
                        
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   223
                pushLiteral: 2.0;       
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   224
                returnTop;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   225
                ir.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   227
        aCompiledMethod := iRMethod compiledMethod.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   229
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2.0).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   232
    "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
   233
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
testLiteralInteger
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
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
		pushLiteral: 2; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
		ir.
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
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
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
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
testLiteralNil
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
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
		pushLiteral: nil; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
     self assert: ((aCompiledMethod valueWithReceiver: 4 arguments: #() ) = nil).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
testLiteralString
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
		pushLiteral: 'hello'; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
		ir.
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
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = 'hello').
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
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
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
testLiteralSymbole
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
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
		pushLiteral: #you; 	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
		ir.
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
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = #you).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
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
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
testLiteralVariableClass
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
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
			
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
		pushLiteralVariable: Object binding;	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
		ir.
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
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = Object).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
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
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
testLiteralVariableClassVariable
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
        | iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
                addTemps: #(self);              "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
                        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
                pushLiteralVariable: (ArithmeticValue bindingOf: #ArithmeticSignal);   
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
                ir.
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
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = ArithmeticValue arithmeticSignal).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
    "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
   347
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
testLiteralVariableGlobale
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
        | iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
                addTemps: #(self);              "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
                        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
                pushLiteralVariable: Smalltalk binding;     
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
                ir.
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
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = Smalltalk).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
    "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
   366
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
testPopTop
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
        | iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
                addTemps: #(self);              "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
                pushLiteral: true         ;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
                        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
                pushLiteral: false;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
                popTop;
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
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
                ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = true).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
    "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
   388
!
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
testPushReceiver
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
	| iRMethod aCompiledMethod receiver |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
		pushReceiver;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
	aCompiledMethod := iRMethod compiledMethod.
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
	receiver :=  (5@8).
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: receiver arguments: #() ) == receiver).
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
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
testPushTempArgument
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
	| iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
		numRargs: 3;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   413
		addTemps: #(self a b);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
		pushTemp: #a;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
		pushTemp: #b;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
		send: #+;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
     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
   425
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
testPushTempSelf
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
	| iRMethod aCompiledMethod |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
		pushTemp: #self;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
		send: #class;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
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
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) == UndefinedObject).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
	
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
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
testPushTempTemp
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
	| iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
		addTemps: #(self a);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
		pushTemp: #a;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   460
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
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
     self assert: ((aCompiledMethod valueWithReceiver: 5 arguments: #() ) = nil).
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
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
testPushThisContext
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
	| iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
		addTemps: #(self a);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
		pushThisContext;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
		send: #receiver;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
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
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
     self assert: ((aCompiledMethod valueWithReceiver: 5 arguments: #() ) = 5).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
	
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
testPushThisEnv
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
        | iRMethod aCompiledMethod receiver |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
        ^self.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
                addTemps: #(self);              "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
                pushThisContext;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
                pushLiteral: 5;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
                pushLiteral: ClosureEnvironment;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
                pushLiteral: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
                send: #new:;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
                send: #privSetInstVar:put:;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
                pushThisEnv;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
                ir.
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
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   509
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
        receiver := Object new.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
     self assert: ((aCompiledMethod valueWithReceiver: receiver arguments: #()) isKindOf: ClosureEnvironment)
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
    "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
   516
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   518
testSendNumArgs1
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   519
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   520
        | iRMethod aCompiledMethod  |
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   521
        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
   522
                numRargs: 1;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   523
                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
   524
        
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   525
                pushReceiver;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   526
                pushLiteral: 1;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   527
                pushLiteral: 2;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   528
                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
   529
                returnTop;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   530
                ir.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   531
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   532
        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
   533
        self class 
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   534
            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
   535
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   536
        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
   537
        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
   538
                        = 3.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   539
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   540
        self class 
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   541
            basicRemoveSelector: #mock1.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   542
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   543
    "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
   544
!
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   545
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   546
testSendNumArgs2
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   547
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   548
        | iRMethod aCompiledMethod  |
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   549
        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
   550
                numRargs: 1;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   551
                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
   552
        
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   553
                pushReceiver;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   554
                pushLiteral: 1;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   555
                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
   556
                returnTop;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   557
                ir.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   558
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   559
        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
   560
        self class 
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   561
            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
   562
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   563
        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
   564
        self 
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   565
            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
   566
            raise: Error.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   567
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   568
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   569
        self class 
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   570
            basicRemoveSelector: #mock1.
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   571
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   572
    "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
   573
!
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   574
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
testSendSuper
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   576
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   577
        | iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   578
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   579
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   580
                addTemps: #(self);              "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   581
        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   582
                pushReceiver;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   583
                send: #halt toSuperOf: IRBuilderTest;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   584
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   585
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   586
                ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   587
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   588
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   589
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   590
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   591
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   592
     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
   593
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   594
    "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
   595
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   596
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   597
testStorIntoVariable
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   598
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   599
	| iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   600
	iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   601
		numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   602
		addTemps: #(self);		"receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   603
	
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   604
		pushLiteral: 4;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   605
		storeIntoLiteralVariable: (IRBuilderTest bindingOf: #TestToPush);
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   606
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   607
		returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   608
		ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   609
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   610
	aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   611
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   612
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   613
	self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   614
     aCompiledMethod valueWithReceiver: nil arguments: #().
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   615
	self assert: (IRBuilderTest testToPush = 4).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   616
	IRBuilderTest testToPush: nil.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   617
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
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   620
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   621
testStoreTemp
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   622
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   623
        | iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   624
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   625
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   626
                addTemps: #(self a);            "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   627
        
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   628
                pushLiteral: 34;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   629
                storeTemp: #a;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   630
                pushTemp: #a;
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
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   633
                ir.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   634
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   635
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   636
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   637
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   638
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) = 34).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   639
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   640
    "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
   641
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   642
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   643
testStoreThisEnv
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   644
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   645
        | iRMethod aCompiledMethod  |
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   646
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   647
        ^self.
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
        iRMethod := IRBuilder new
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   650
                numRargs: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   651
                addTemps: #(self a);            "receiver and args declarations"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   652
                pushLiteral: ClosureEnvironment;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   653
                pushLiteral: 1;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   654
                send: #new:;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   655
                storeThisEnv;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   656
                pushThisContext;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   657
                pushLiteral: 5;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   658
                send: #privGetInstVar:;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   659
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   660
                ir.
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
        aCompiledMethod := iRMethod compiledMethod.
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   663
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   664
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   665
     self assert: ((aCompiledMethod valueWithReceiver: nil arguments: #() ) isKindOf: ClosureEnvironment).
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   666
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   667
    "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
   668
!
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   669
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   670
testTwoJumpAheadToIfsToSameTarget
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   671
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   672
        | iRMethod aCompiledMethod |
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   673
        iRMethod := IRBuilder new
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   674
                numRargs: 1;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   675
                addTemps: #(self);              "receiver and args declarations"
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   676
                pushTemp: #self         ;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   677
                pushLiteral: false;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   678
                jumpAheadTo: #end if: true;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   679
                pushLiteral: true;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   680
                jumpAheadTo: #end if: true;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   681
                pushLiteral: 3;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   682
                jumpAheadTarget: #end;  
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   683
                
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   684
                returnTop;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   685
                ir.
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   686
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   687
        aCompiledMethod := iRMethod compiledMethod.
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   688
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   689
        self assert: (aCompiledMethod isKindOf: CompiledMethod).
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   690
     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
   691
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   692
    "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
   693
! !
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   694
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   695
!IRBuilderTest class methodsFor:'documentation'!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   696
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   697
version
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   698
    ^'$Id$'
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   699
! !