IRTransformTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 07 May 2011 13:19:45 +0000
changeset 34 4c372f8296b9
parent 26 db19d89eef60
child 37 be8c2dd09dff
permissions -rw-r--r--
IRTransformTest: test fixes (do not use Squeaks curly arrays)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
     1
"{ Package: 'cvut:stx/goodies/newcompiler' }"
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
TestCase subclass:#IRTransformTest
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
	instanceVariableNames:''
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:''
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'NewCompiler-IR-Tests'
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!IRTransformTest methodsFor:'testing'!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
testAdd
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    14
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    16
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    17
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    18
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    19
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    20
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    21
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    22
    (iRMethod allSequences last) last delete.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    23
    (iRMethod allSequences last) last delete.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    24
    (iRMethod allSequences last) add:(IRInstruction pushLiteral:2).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    25
    (iRMethod allSequences last) add:(IRInstruction returnTop).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    26
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    27
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
testAddBefore
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    31
    |iRMethod aCompiledMethod ret|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    33
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    34
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    35
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    36
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    37
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    38
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    39
    (iRMethod allSequences last) last delete.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    40
    (iRMethod allSequences last) last delete.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    41
    ret := (IRInstruction returnTop).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    42
    (iRMethod allSequences last) add:ret.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    43
    (iRMethod allSequences last) add:(IRInstruction pushLiteral:2) before:ret.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    44
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    45
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
testAddIntructions
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    49
        
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    50
        | iRMethod aCompiledMethod |
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    51
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    52
        iRMethod := IRBuilder new
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    53
                numRargs: 1;
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    54
                addTemps: #(self);              "receiver and args declarations"
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    55
                pushLiteral: 1;                                 
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    56
                returnTop;
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    57
                ir.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    59
        (iRMethod allSequences last) last delete.
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    60
        (iRMethod allSequences last) last delete.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    62
        (iRMethod allSequences last)
34
4c372f8296b9 IRTransformTest: test fixes (do not use Squeaks curly arrays)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
    63
                        addInstructions: (Array with:(IRInstruction pushLiteral: 2) with: (IRInstruction returnTop)).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    65
        aCompiledMethod := iRMethod compiledCode.
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    66
        self should: [(aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    68
    "Modified: / 30-03-2009 / 19:40:10 / Jan Vrany <vranyj1@fel.cvut.cz>"
34
4c372f8296b9 IRTransformTest: test fixes (do not use Squeaks curly arrays)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
    69
    "Modified: / 07-05-2011 / 14:17:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
testAddIntructionsBefore
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    73
        
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    74
        | iRMethod aCompiledMethod push |
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    75
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    76
        iRMethod := IRBuilder new
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    77
                numRargs: 1;
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    78
                addTemps: #(self);              "receiver and args declarations"
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    79
                pushLiteral: 1;                                 
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    80
                returnTop;
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    81
                ir.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    83
        push := (iRMethod allSequences last) at: (iRMethod allSequences size - 1) .
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    84
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    85
        (iRMethod allSequences last)
34
4c372f8296b9 IRTransformTest: test fixes (do not use Squeaks curly arrays)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
    86
                        addInstructions: (Array with:(IRInstruction pushLiteral: 2) with: (IRInstruction returnTop)) before: push.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    88
        aCompiledMethod := iRMethod compiledCode.
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    89
        self should: [(aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    91
    "Modified: / 30-03-2009 / 19:40:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
34
4c372f8296b9 IRTransformTest: test fixes (do not use Squeaks curly arrays)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
    92
    "Modified: / 07-05-2011 / 14:18:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
!
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
testAddIntructionsBeforeFromLList
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    96
    |iRMethod aCompiledMethod push llist col|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    98
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    99
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   100
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   101
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   102
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   103
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   104
    push := (iRMethod allSequences last) at:(iRMethod allSequences size - 1).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   105
    llist := LinkedList new.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   106
    llist add:(IRInstruction pushLiteral:2).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   107
    llist add:(IRInstruction returnTop).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   108
    col := llist asOrderedCollection.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   109
    (iRMethod allSequences last) addInstructions:col before:push.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   110
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   111
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
testDelete
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   115
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   117
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   118
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   119
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   120
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   121
                pushLiteral:2;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   122
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   123
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   124
    ((iRMethod allSequences last) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   125
        detect:[:each | each isConstant:[:c | c == 2 ] ]) delete.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   126
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   127
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 1 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
testReplace
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   131
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   133
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   134
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   135
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   136
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   137
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   138
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   139
    (iRMethod allSequences last at:1) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   140
        replaceWith:(IRInstruction pushLiteral:2).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   141
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   142
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
testReplaceInstr
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   146
        
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   147
        | iRMethod aCompiledMethod |
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   149
        iRMethod := IRBuilder new
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   150
                numRargs: 1;
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   151
                addTemps: #(self);              "receiver and args declarations"
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   152
                pushLiteral: 1;                                 
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   153
                returnTop;
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   154
                ir.
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   155
        
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   156
        (iRMethod allSequences last at: 1) 
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   157
                        replaceWithInstructions: {(IRInstruction pushLiteral: 2)}.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   159
        aCompiledMethod := iRMethod compiledCode.
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   160
        self should: [(aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2].
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   161
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   162
    "Modified: / 30-03-2009 / 19:40:30 / Jan Vrany <vranyj1@fel.cvut.cz>"
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
! !
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
!IRTransformTest class methodsFor:'documentation'!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
version
23
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   168
    ^ '$Header: /cvs/stx/cvut/stx/goodies/newcompiler/IRTransformTest.st,v 1.3 2009/10/08 11:56:52 fm Exp $'
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   169
!
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   170
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   171
version_CVS
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   172
    ^ '$Header: /cvs/stx/cvut/stx/goodies/newcompiler/IRTransformTest.st,v 1.3 2009/10/08 11:56:52 fm Exp $'
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   173
!
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   174
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   175
version_SVN
26
db19d89eef60 Added version_SVN to all classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
   176
    ^ '$Id$'
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
! !