IRTransformTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 30 Oct 2014 22:18:24 +0000
changeset 42 acdc3ec6d152
parent 41 f3898a3b378d
child 43 c8afb8e4c3cc
permissions -rw-r--r--
Better class category name - IR Compiler-*
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
41
f3898a3b378d Package renamed from cvut:stx/goodies/newcompiler to ctu:ircompiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
     1
"{ Package: 'ctu:ircompiler' }"
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:''
42
acdc3ec6d152 Better class category name - IR Compiler-*
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
     7
	category:'IR Compiler-Tests'
1
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)
37
be8c2dd09dff Build files regenerated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    63
                        addInstructions: {(IRInstruction pushLiteral: 2). (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>"
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
!
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
testAddIntructionsBefore
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    72
        
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    73
        | iRMethod aCompiledMethod push |
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    74
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    75
        iRMethod := IRBuilder new
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    76
                numRargs: 1;
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    77
                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
    78
                pushLiteral: 1;                                 
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    79
                returnTop;
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    80
                ir.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    82
        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
    83
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    84
        (iRMethod allSequences last)
37
be8c2dd09dff Build files regenerated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
    85
                        addInstructions: {(IRInstruction pushLiteral: 2). (IRInstruction returnTop)} before: push.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    87
        aCompiledMethod := iRMethod compiledCode.
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    88
        self should: [(aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    90
    "Modified: / 30-03-2009 / 19:40:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
testAddIntructionsBeforeFromLList
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    94
    |iRMethod aCompiledMethod push llist col|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    96
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    97
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    98
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
    99
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   100
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   101
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   102
    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
   103
    llist := LinkedList new.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   104
    llist add:(IRInstruction pushLiteral:2).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   105
    llist add:(IRInstruction returnTop).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   106
    col := llist asOrderedCollection.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   107
    (iRMethod allSequences last) addInstructions:col before:push.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   108
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   109
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
1
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
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
testDelete
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   113
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   115
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   116
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   117
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   118
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   119
                pushLiteral:2;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   120
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   121
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   122
    ((iRMethod allSequences last) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   123
        detect:[:each | each isConstant:[:c | c == 2 ] ]) delete.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   124
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   125
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 1 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
!
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
testReplace
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   129
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   131
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   132
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   133
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   134
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   135
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   136
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   137
    (iRMethod allSequences last at:1) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   138
        replaceWith:(IRInstruction pushLiteral:2).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   139
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   140
    self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
!
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
testReplaceInstr
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   144
        
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   145
        | iRMethod aCompiledMethod |
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   147
        iRMethod := IRBuilder new
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   148
                numRargs: 1;
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   149
                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
   150
                pushLiteral: 1;                                 
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   151
                returnTop;
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   152
                ir.
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   153
        
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   154
        (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
   155
                        replaceWithInstructions: {(IRInstruction pushLiteral: 2)}.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   157
        aCompiledMethod := iRMethod compiledCode.
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   158
        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
   159
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   160
    "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
   161
! !
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
!IRTransformTest class methodsFor:'documentation'!
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
version
37
be8c2dd09dff Build files regenerated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   166
    ^ '$Id$'
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
   167
!
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
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
version_CVS
41
f3898a3b378d Package renamed from cvut:stx/goodies/newcompiler to ctu:ircompiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   170
    ^ 'Header: /cvs/stx/cvut/stx/goodies/newcompiler/IRTransformTest.st,v 1.3 2009/10/08 11:56:52 fm Exp '
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
   171
!
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
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
version_SVN
37
be8c2dd09dff Build files regenerated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   174
    ^ '$Id::                                                                                                                        $'
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
! !
42
acdc3ec6d152 Better class category name - IR Compiler-*
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   176