IRBuilderTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 15 Nov 2011 21:28:05 +0000
changeset 36 1bfd09c6b3d8
parent 33 9c1e160e9688
child 37 be8c2dd09dff
permissions -rw-r--r--
Fixes in tests
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: 19
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:#IRBuilderTest
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
	instanceVariableNames:''
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:'TestToPush'
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'NewCompiler-IR-Tests'
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!IRBuilderTest class methodsFor:'as yet unclassified'!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
testToPush
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
	^TestToPush
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
testToPush: anObject
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	TestToPush := anObject
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
! !
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    22
!IRBuilderTest methodsFor:'mock methods'!
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    23
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    24
mock1: arg1 with: arg2
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    25
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    26
    ^arg1 + arg2
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
    27
6
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    28
    "Created: / 02-12-2008 / 09:11:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    29
!
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    30
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    31
mock2
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    32
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    33
    ^[ testSelector ]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    34
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    35
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    36
    decompiling IRBuilderTest>>mock2
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    37
    nA: 0 nV: 0 nT: 2   
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    38
    
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    39
    1: 37 04 00 00             makeBlock 4 (7) nv=0 na=0
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    40
    5: 5A                      pushInstVar1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    41
    6: 00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    42
    7: 08 03                   LINE[3]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    43
    9: 00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    44
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    45
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    46
    "Created: / 28-03-2009 / 18:47:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    47
    "Modified: / 28-03-2009 / 20:16:08 / Jan Vrany <vranyj1@fel.cvut.cz>"
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    48
!
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    49
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    50
mock3
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    51
    | b |
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    52
    b := 1.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    53
    ^[ b ]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    54
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    55
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    56
    decompiling IRBuilderTest>>mock3
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    57
    nA: 0 nV: 1 nT: 2
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    58
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    59
    1: 79                      push1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    60
    2: 64                      storeMethodVar1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    61
    3: 37 04 00 00             makeBlock 4 (9) nv=0 na=0
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    62
    7: 50                      pushMethodVar1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    63
    8: 00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    64
    9: 08 04                   LINE[4]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    65
    11:00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    66
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    67
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    68
    "Created: / 28-03-2009 / 20:16:36 / Jan Vrany <vranyj1@fel.cvut.cz>"
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    69
!
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    70
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    71
mock4
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    72
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    73
    ^[:arg| arg ]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    74
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    75
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    76
    decompiling IRBuilderTest>>mock4
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    77
    nA: 0 nV: 0 nT: 2
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    78
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    79
    1: 37 04 00 01             makeBlock 4 (7) nv=0 na=1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    80
    5: 8C                      pushBlockArg1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    81
    6: 00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    82
    7: 08 03                   LINE[3]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    83
    9: 00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    84
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    85
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    86
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    87
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    88
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    89
    "Created: / 28-03-2009 / 20:18:32 / Jan Vrany <vranyj1@fel.cvut.cz>"
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    90
!
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    91
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    92
mock5
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    93
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    94
    ^[|temp| temp ]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    95
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    96
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    97
    decompiling IRBuilderTest>>mock5
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    98
    nA: 0 nV: 0 nT: 2
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    99
    
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   100
    1: 37 04 01 00             makeBlock 4 (7) nv=1 na=0
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   101
    5: E8                      pushBlockVar1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   102
    6: 00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   103
    7: 08 03                   LINE[3]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   104
    9: 00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   105
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   106
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   107
    "Created: / 28-03-2009 / 20:19:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   108
!
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   109
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   110
mock6
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   111
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   112
    ^[|temp| [ temp ] ]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   113
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   114
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   115
    decompiling IRBuilderTest>>mock6
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   116
    nA: 0 nV: 0 nT: 3
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   117
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   118
    1: 37 0B 01 00             makeBlock 11 (14) nv=1 na=0
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   119
    5: 37 06 00 00             makeBlock 6 (13) nv=0 na=0
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   120
    9: 80 01 01                pushOuterBlockVar 1 lvl: 1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   121
    12:00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   122
    13:00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   123
    14:08 03                   LINE[3]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   124
    16:00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   125
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   126
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   127
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   128
    "Created: / 28-03-2009 / 20:20:06 / Jan Vrany <vranyj1@fel.cvut.cz>"
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   129
!
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   130
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   131
mock7
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   132
    | b |
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   133
    b := 1.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   134
    ^[ ^b ]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   135
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   136
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   137
    decompiling IRBuilderTest>>mock7
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   138
    nA: 0 nV: 1 nT: 2
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   139
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   140
    1: 79                      push1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   141
    2: 64                      storeMethodVar1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   142
    3: 37 06 00 00             makeBlock 6 (11) nv=0 na=0
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   143
    7: 50                      pushMethodVar1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   144
    8: 08 04                   LINE[4]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   145
    10:07                      homeRetTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   146
    11:08 04                   LINE[4]
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   147
    13:00                      retTop
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   148
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   149
    "
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   150
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   151
    "Created: / 28-03-2009 / 20:21:51 / Jan Vrany <vranyj1@fel.cvut.cz>"
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   152
!
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
mock8
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
    ^([:arg| arg ] value: 22)
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   157
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   158
    "Created: / 30-03-2009 / 19:21:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
17
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   159
!
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   160
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   161
mock9
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   162
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   163
    ^[:barg1 | [:barg2 | barg2 ] value: barg1 ]
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   164
        value: 22
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   165
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   166
    "
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   167
    decompiling IRBuilderTest>>mock9
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   168
    nA: 0 nV: 0 nT: 3
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   169
    
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   170
     1: 37 0C 00 01             makeBlock 12 (15) nv=0 na=1
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   171
     5: 37 04 00 01             makeBlock 4 (11) nv=0 na=1
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   172
     9: 8C                      pushBlockArg1
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   173
    10: 00                      retTop
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   174
    11: 8C                      pushBlockArg1
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   175
    12: 98 03                   send1 #value:[3]
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   176
    14: 00                      retTop
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   177
    15: 10 16                   pushNum 22
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   178
    17: 98 04                   send1 #value:[4]
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   179
    19: 08 03                   LINE[3]
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   180
    21: 00 
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   181
    
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   182
    "
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   183
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   184
    "Created: / 11-05-2009 / 23:09:57 / Jan Vrany <vranyj1@fel.cvut.cz>"
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   185
! !
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   186
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
!IRBuilderTest methodsFor:'testing'!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
28
2eab5fdb9467 - Removed IRDecompiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
   189
error
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
        "Redefinition for testing the #send:toSuperOf:"
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   192
    "Created: / 11-06-2008 / 16:08:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   193
    "Created: / 15-11-2011 / 22:27:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
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
isThisEverCalled
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
	"Redefinition for testing the #send:toSuperOf:"
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
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
testDup
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   201
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   203
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   204
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   205
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   206
                pushLiteral:3;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   207
                pushDup;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   208
                send:#'=';
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   209
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   210
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   211
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   212
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   213
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   214
        assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = true).
1
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
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
testInstVar
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   218
    |aCompiledMethod irBuilder|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   220
    irBuilder := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   221
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   222
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   223
                pushInstVar:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   224
                pushInstVar:2;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   225
                send:#'+';
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   228
    aCompiledMethod := irBuilder compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   229
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   230
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   231
        assert:((aCompiledMethod valueWithReceiver:(3 @ 4) arguments:#()) = 7).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
    "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
   234
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
testJumpAheadTo
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   237
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   239
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   240
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   241
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   242
                pushTemp:#self;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   243
                jumpAheadTo:#end;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   244
                pushLiteral:3;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   245
                jumpAheadTarget:#end;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   246
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   247
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   248
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   249
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   250
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = nil).
1
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
testJumpAheadToIf
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   254
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   256
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   257
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   258
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   259
                pushTemp:#self;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   260
                pushLiteral:true;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   261
                jumpAheadTo:#end if:true;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   262
                pushLiteral:3;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   263
                jumpAheadTarget:#end;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   264
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   265
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   266
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   267
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   268
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = nil).
1
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
testJumpBackTo
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   272
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   274
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   275
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   276
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   277
                pushTemp:#self;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   278
                pushLiteral:false;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   279
                jumpBackTarget:#begin;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   280
                jumpAheadTo:#end if:true;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   281
                pushLiteral:true;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   282
                jumpBackTo:#begin;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   283
                jumpAheadTarget:#end;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   284
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   285
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   286
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   287
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   288
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = nil).
1
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
6
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   291
testLine1
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   292
    |iRMethod aCompiledMethod|
6
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   293
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   294
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   295
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   296
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   297
                line:5;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   298
                pushLiteral:true;
6
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   299
                returnTop;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   300
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   301
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   302
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   303
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   304
        assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = true).
6
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   305
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   306
    "Created: / 02-12-2008 / 09:11:06 / Jan Vrany <vranyj1@fel.cvut.cz>"
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   307
!
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   308
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   309
testLine2
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   310
    |iRMethod aCompiledMethod|
6
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   311
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   312
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   313
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   314
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   315
                line:5;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   316
                pushLiteral:true;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   317
                pushLiteral:false;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   318
                send:#'&';
6
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   319
                returnTop;
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   320
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   321
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   322
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   323
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   324
        assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = false).
6
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   325
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   326
    "Created: / 02-12-2008 / 09:11:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   327
!
49a61123c743 A new IRLine pseudoinstruction added to include debugging info into the bytecode.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   328
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
testLiteralArray
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   330
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   332
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   333
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   334
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   335
                pushLiteral:#( #test 4 #you );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   336
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   337
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   338
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   339
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   340
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   341
                = #( #test 4 #you )).
1
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
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
testLiteralBoolean
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   345
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   347
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   348
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   349
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   350
                pushLiteral:true;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   351
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   352
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   353
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   354
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   355
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   356
        assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = true).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
testLiteralCharacter
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   360
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   362
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   363
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   364
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   365
                pushLiteral:$e;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   366
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   367
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   368
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   369
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   370
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = $e).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
testLiteralFloat
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   374
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   376
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   377
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   378
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   379
                pushLiteral:2.0;
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   380
                returnTop;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   381
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   382
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   383
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   384
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = 2.0).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   386
    "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
   387
!
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
testLiteralInteger
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   390
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   392
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   393
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   394
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   395
                pushLiteral:2;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   396
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   397
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   398
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   399
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   400
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = 2).
1
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
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
testLiteralNil
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   404
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   406
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   407
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   408
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   409
                pushLiteral:nil;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   410
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   411
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   412
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   413
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   414
    self assert:((aCompiledMethod valueWithReceiver:4 arguments:#()) = nil).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
testLiteralString
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   418
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   420
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   421
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   422
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   423
                pushLiteral:'hello';
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   424
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   425
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   426
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   427
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   428
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   429
        assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = 'hello').
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
testLiteralSymbole
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   433
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   435
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   436
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   437
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   438
                pushLiteral:#you;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   439
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   440
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   441
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   442
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   443
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   444
        assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = #you).
1
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
testLiteralVariableClass
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   448
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   450
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   451
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   452
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   453
                pushLiteralVariable:Object binding;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   454
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   455
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   456
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   457
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   458
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   459
        assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = Object).
1
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
testLiteralVariableClassVariable
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   463
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   465
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   466
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   467
                addTemps:#( #self );
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   468
                pushLiteralVariable:#ArithmeticError;
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   471
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   472
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   473
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   474
                = ArithmeticValue arithmeticSignal).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
    "Modified: / 11-06-2008 / 11:31:32 / Jan Vrany <vranyj1@fel.cvut.cz>"
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   477
    "Modified: / 15-11-2011 / 22:25:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
!
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
testLiteralVariableGlobale
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   481
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   483
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   484
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   485
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   486
                pushLiteralVariable:Smalltalk binding;
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   489
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   490
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   491
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   492
        assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = Smalltalk).
1
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
    "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
   495
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
testPopTop
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   498
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   500
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   501
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   502
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   503
                pushLiteral:true;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   504
                pushLiteral:false;
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
                popTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   508
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   509
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   510
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   511
        assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = true).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
    "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
   514
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
testPushReceiver
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   517
    |iRMethod aCompiledMethod receiver|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   519
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   520
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   521
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   522
                pushReceiver;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   523
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   524
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   525
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   526
    receiver := (5 @ 8).
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   527
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   528
    self assert:((aCompiledMethod valueWithReceiver:receiver arguments:#()) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   529
                == receiver).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   530
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   531
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   532
testPushTempArgument
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   533
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   535
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   536
                numRargs:3;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   537
                addTemps:#( #self #a #b );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   538
                pushTemp:#a;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   539
                pushTemp:#b;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   540
                send:#'+';
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   541
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   542
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   543
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   544
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   545
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   546
        assert:((aCompiledMethod valueWithReceiver:nil arguments:#( 2 8 )) = 10).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   547
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   548
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   549
testPushTempSelf
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   550
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   551
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   552
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   553
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   554
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   555
                pushTemp:#self;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   556
                send:#class;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   557
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   558
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   559
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   560
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   561
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   562
                == UndefinedObject).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   563
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   564
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   565
testPushTempTemp
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   566
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   567
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   568
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   569
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   570
                addTemps:#( #self #a );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   571
                pushTemp:#a;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   572
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   573
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   574
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   575
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   576
    self assert:((aCompiledMethod valueWithReceiver:5 arguments:#()) = nil).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   577
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   578
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   579
testPushThisContext
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   580
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   581
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   582
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   583
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   584
                addTemps:#( #self #a );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   585
                pushThisContext;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   586
                send:#receiver;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   587
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   588
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   589
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   590
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   591
    self assert:((aCompiledMethod valueWithReceiver:5 arguments:#()) = 5).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   592
!
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
testPushThisEnv
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   595
    |iRMethod aCompiledMethod receiver|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   596
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   597
    ^ self.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   598
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   599
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   600
                addTemps:#( #self );
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   601
                pushThisContext;
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   602
                pushLiteral:5;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   603
                pushLiteral:ClosureEnvironment;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   604
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   605
                send:#new:;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   606
                send:#privSetInstVar:put:;
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   607
                pushThisEnv;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   608
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   609
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   610
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   611
    receiver := Object new.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   612
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   613
    self assert:((aCompiledMethod valueWithReceiver:receiver arguments:#()) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   614
                isKindOf:ClosureEnvironment)
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   615
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   616
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   617
testSendNumArgs1
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   618
    |iRMethod aCompiledMethod|
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   619
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   620
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   621
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   622
                addTemps:#( #self );
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   623
                pushReceiver;
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   624
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   625
                pushLiteral:2;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   626
                send:#mock1 numArgs:2;
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   627
                returnTop;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   628
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   629
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   630
    self class basicAddSelector:#mock1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   631
        withMethod:(self class >> #mock1:with:).
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   632
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   633
    self 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   634
        assert:(aCompiledMethod valueWithReceiver:(IRBuilderTest new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   635
                arguments:#()) = 3.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   636
    self class basicRemoveSelector:#mock1.
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   637
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   638
    "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
   639
!
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   640
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   641
testSendNumArgs2
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   642
    |iRMethod aCompiledMethod|
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   643
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   644
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   645
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   646
                addTemps:#( #self );
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   647
                pushReceiver;
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   648
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   649
                send:#mock1 numArgs:1;
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   650
                returnTop;
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   651
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   652
    aCompiledMethod := iRMethod compiledCode.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   653
    self class basicAddSelector:#mock1
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   654
        withMethod:(self class >> #mock1:with:).
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   655
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   656
    self 
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   657
        should:[
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   658
            (aCompiledMethod valueWithReceiver:(IRBuilderTest new) arguments:#())
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   659
        ]
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   660
        raise:Error.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   661
    self class basicRemoveSelector:#mock1.
5
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   662
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   663
    "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
   664
!
b94aea1d3710 Added method IRBuilder>>#send:numArgs and IRBuilder>>#send:numArgs:toSuperOf:.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   665
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   666
testSendSuper
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   667
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   668
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   669
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   670
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   671
                addTemps:#( #self );
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   672
                pushReceiver;
28
2eab5fdb9467 - Removed IRDecompiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
   673
                send:#error toSuperOf:IRBuilderTest;
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   674
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   675
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   676
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   677
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   678
    self 
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   679
        should:[
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   680
            (aCompiledMethod valueWithReceiver:(IRBuilderTest new) arguments:#())
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   681
        ]
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   682
        raise:Error.
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   683
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   684
    "Modified: / 11-06-2008 / 16:09:12 / Jan Vrany <vranyj1@fel.cvut.cz>"
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   685
    "Modified: / 15-11-2011 / 22:25:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   686
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   687
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   688
testStorIntoVariable
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   689
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   690
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   691
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   692
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   693
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   694
                pushLiteral:4;
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   695
                storeIntoLiteralVariable:(#'IRBuilderTest:TestToPush');
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   696
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   697
                ir.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   698
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   699
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   700
    aCompiledMethod valueWithReceiver:nil arguments:#().
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   701
    self assert:(IRBuilderTest testToPush = 4).
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   702
    IRBuilderTest testToPush:nil.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   703
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   704
    "Modified: / 15-11-2011 / 22:27:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   705
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   706
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   707
testStoreTemp
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   708
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   709
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   710
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   711
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   712
                addTemps:#( #self #a );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   713
                pushLiteral:34;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   714
                storeTemp:#a;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   715
                pushTemp:#a;
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   716
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   717
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   718
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   719
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   720
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = 34).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   721
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   722
    "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
   723
!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   724
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   725
testStoreThisEnv
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   726
    |iRMethod aCompiledMethod|
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   727
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   728
    ^ self.
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   729
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   730
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   731
                addTemps:#( #self #a );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   732
                pushLiteral:ClosureEnvironment;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   733
                pushLiteral:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   734
                send:#new:;
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   735
                storeThisEnv;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   736
                pushThisContext;
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   737
                pushLiteral:5;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   738
                send:#privGetInstVar:;
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   739
                returnTop;
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   740
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   741
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   742
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   743
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) 
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   744
                isKindOf:ClosureEnvironment).
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   745
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   746
    "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
   747
!
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   748
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   749
testTwoJumpAheadToIfsToSameTarget
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   750
    |iRMethod aCompiledMethod|
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   751
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   752
    iRMethod := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   753
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   754
                addTemps:#( #self );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   755
                pushTemp:#self;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   756
                pushLiteral:false;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   757
                jumpAheadTo:#end if:true;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   758
                pushLiteral:true;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   759
                jumpAheadTo:#end if:true;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   760
                pushLiteral:3;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   761
                jumpAheadTarget:#end;
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   762
                returnTop;
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   763
                ir.
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   764
    aCompiledMethod := iRMethod compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   765
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   766
    self assert:((aCompiledMethod valueWithReceiver:nil arguments:#()) = nil).
3
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   767
c9845c180bd4 Fixes IRBytecodeGenerator >> #pushLiteral and IRBuilder >> #jumpAheadTo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   768
    "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
   769
! !
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   770
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   771
!IRBuilderTest methodsFor:'testing - blocks'!
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   772
17
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   773
testBlock_blockNesting_1
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   774
    |aCompiledMethod irBuilder|
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   775
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   776
    irBuilder := (IRBuilder new)
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   777
                numRargs:1;
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   778
                addTemps:#( #self );
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   779
                pushBlockUsingBuilder:[:builder | 
17
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   780
                        builder
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   781
                            numRargs:1;
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   782
                            addTemps:#( #barg1 );
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   783
                            pushBlockUsingBuilder:[:builder|
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   784
                                builder
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   785
                                    numRargs: 1;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   786
                                    addTemps: #( #barg2 );
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   787
                                    pushTemp: #barg2;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   788
                                    returnTop
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   789
                            ];
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   790
                            pushTemp: #barg1;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   791
                            send: #value:;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   792
                            returnTop
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   793
                    ];
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   794
                pushLiteral: 22;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   795
                send:#value;
17
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   796
                returnTop;
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   797
                ir.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   798
    "
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   799
        irBuilder ir
17
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   800
    "
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   801
17
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   802
    aCompiledMethod := irBuilder compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   803
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
17
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   804
    self assert:((aCompiledMethod valueWithReceiver:1 arguments:#()) = 22).
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   805
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   806
    "Created: / 11-05-2009 / 23:04:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   807
!
df6f26442169 Nested blocks works
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   808
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   809
testBlock_blockTempArg
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   810
    |aCompiledMethod irBuilder|
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   811
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   812
    irBuilder := (IRBuilder new)
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   813
                numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   814
                addTemps:#( #self );
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   815
                pushBlockUsingBuilder:[:builder | 
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   816
                        builder
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   817
                            numRargs:1;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   818
                            addTemps:#( #barg1 );
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   819
                            pushTemp:#barg1;
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   820
                            returnTop
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   821
                    ];
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   822
                pushLiteral:22;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   823
                send:#value:;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   824
                returnTop;
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   825
                ir.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   826
    "
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   827
        irBuilder ir
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   828
    "
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   829
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   830
    aCompiledMethod := irBuilder compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   831
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   832
    self assert:((aCompiledMethod valueWithReceiver:1 arguments:#()) = 22).
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   833
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   834
    "Created: / 30-03-2009 / 14:26:18 / Jan Vrany <vranyj1@fel.cvut.cz>"
10
0fd549e0c784 First simple block works. See IRBuilderTest>>testBlock_blockTempArg.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   835
    "Modified: / 30-03-2009 / 19:16:25 / Jan Vrany <vranyj1@fel.cvut.cz>"
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   836
!
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   837
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   838
testBlock_blockTempVar
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   839
    |aCompiledMethod irBuilder|
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   840
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   841
    irBuilder := (IRBuilder new)
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   842
                numRargs:1;
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   843
                addTemps:#( #self );
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   844
                pushBlockUsingBuilder:[:builder | 
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   845
                        builder
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   846
                            numRargs:0;
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   847
                            addTemps:#( #bvar1 );
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   848
                            pushLiteral: 22;
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   849
                            storeTemp:#bvar1;
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   850
                            pushTemp: #bvar1;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   851
                            returnTop
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   852
                    ];
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   853
                send:#value;
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   854
                returnTop;
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   855
                ir.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   856
    "
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   857
        irBuilder ir
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   858
    "
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   859
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   860
    aCompiledMethod := irBuilder compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   861
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   862
    self assert:((aCompiledMethod valueWithReceiver:1 arguments:#()) = 22).
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   863
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   864
    "Created: / 30-03-2009 / 23:03:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   865
!
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   866
19
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   867
testBlock_block_in_another_basic_block
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   868
    |aCompiledMethod irBuilder|
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   869
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   870
    irBuilder := (IRBuilder new)
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   871
                numRargs:1;
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   872
                addTemps:#( #self );
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   873
                pushLiteral: false;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   874
                pushLiteral: true;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   875
                jumpAheadTo: #end if: false;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   876
                pushBlockUsingBuilder:[:builder | 
19
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   877
                        builder
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   878
                            numRargs: 0;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   879
                            pushLiteral: true;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   880
                            returnTop
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   881
                    ];
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   882
                send: #value;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   883
                jumpAheadTarget: #end;
19
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   884
                returnTop;
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   885
                ir.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   886
    "
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   887
        irBuilder ir
19
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   888
    "
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   889
19
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   890
    aCompiledMethod := irBuilder compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   891
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
19
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   892
    self assert:((aCompiledMethod valueWithReceiver:1 arguments:#()) = true).
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   893
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   894
    "Created: / 13-05-2009 / 11:24:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   895
!
3bb7360f9dff - method stackSize is now correctly initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   896
16
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   897
testBlock_exceptionHandler
14
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   898
    |aCompiledMethod irBuilder|
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   899
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   900
    irBuilder := (IRBuilder new)
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   901
                numRargs:1;
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   902
                addTemps:#( #self);
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   903
               pushBlockUsingBuilder:[:builder | 
14
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   904
                        builder
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   905
                            numRargs:0;  
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   906
                            pushLiteral: 1;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   907
                            pushLiteral: 0;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   908
                            send: #/;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   909
                            pushLiteral: false;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   910
                            remoteReturn
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   911
                    ];
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   912
                pushLiteralVariable: #Error;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   913
                pushBlockUsingBuilder:[:builder|
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   914
                    builder
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   915
                        numRargs:0;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   916
                        pushLiteral: true;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   917
                        remoteReturn];
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   918
                send: #on:do:;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   919
                pushLiteral: false;
14
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   920
                returnTop;
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   921
                ir.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   922
    "
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   923
        irBuilder ir
14
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   924
    "
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   925
14
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   926
    aCompiledMethod := irBuilder compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   927
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
14
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   928
    self assert:((aCompiledMethod valueWithReceiver:1 arguments:#()) = true).
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   929
16
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   930
    "Created: / 11-05-2009 / 21:53:19 / Jan Vrany <vranyj1@fel.cvut.cz>"
14
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   931
!
9369d251b3ed testcase demonstrating invalid push order when working with blocks
karpij1
parents: 11
diff changeset
   932
16
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   933
testBlock_exceptionHandler_noRemoteReturn
15
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   934
    |aCompiledMethod irBuilder|
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   935
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   936
    irBuilder := (IRBuilder new)
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   937
                numRargs:1;
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   938
                addTemps:#( #self);
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   939
               pushBlockUsingBuilder:[:builder | 
15
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   940
                        builder
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   941
                            numRargs:0;  
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   942
                            pushLiteral: 1;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   943
                            pushLiteral: 0;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   944
                            send: #/;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   945
                            pushLiteral: false;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   946
                            returnTop
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   947
                    ];
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   948
                pushLiteralVariable: #Error;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   949
                pushBlockUsingBuilder:[:builder|
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   950
                    builder
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   951
                        numRargs:0;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   952
                        pushLiteral: true;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   953
                        returnTop];
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   954
                send: #on:do:;
15
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   955
                returnTop;
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   956
                ir.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   957
    "
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   958
        irBuilder ir
15
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   959
    "
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   960
15
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   961
    aCompiledMethod := irBuilder compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   962
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
15
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   963
    self assert:((aCompiledMethod valueWithReceiver:1 arguments:#()) = true).
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   964
16
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   965
    "Created: / 11-05-2009 / 21:53:25 / Jan Vrany <vranyj1@fel.cvut.cz>"
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   966
!
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   967
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   968
testBlock_invalid_instruction_ordering_bug_1
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   969
    |aCompiledMethod irBuilder|
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   970
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   971
    irBuilder := (IRBuilder new)
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   972
                    numRargs: 1;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   973
                    addTemps: #(self i);
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   974
                    pushTemp: #i;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   975
                    pushLiteral: 3;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   976
                    pushReceiver;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   977
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   978
                    pushBlockUsingBuilder: [ :builder | 
16
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   979
                        builder
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   980
                            numRargs: 0;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   981
                            addTemps: #();
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   982
                            pushTemp: #i;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   983
                            returnTop.
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   984
                    ];
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   985
                    returnTop;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   986
                    ir.
16
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   987
    "
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   988
        irBuilder ir
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   989
    "
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   990
16
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   991
    aCompiledMethod := irBuilder compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   992
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   993
    self assert:((aCompiledMethod valueWithReceiver:1 arguments:#()) isKindOf: Block).
16
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   994
f325defc9c7e Invalid intruction ordering bug fixed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   995
    "Created: / 11-05-2009 / 21:55:30 / Jan Vrany <vranyj1@fel.cvut.cz>"
15
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   996
!
4daeb5471d43 added test for exception handling (only returnTop)
karpij1
parents: 14
diff changeset
   997
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   998
testBlock_methodTempVar
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   999
    |aCompiledMethod irBuilder|
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1000
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1001
    irBuilder := (IRBuilder new)
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1002
                numRargs:1;
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1003
                addTemps:#( #self #a);
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1004
                pushLiteral: 22;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1005
                storeTemp: #a;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1006
                pushBlockUsingBuilder:[:builder | 
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1007
                        builder
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1008
                            numRargs:0;
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1009
                            pushTemp: #a;
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1010
                            returnTop
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1011
                    ];
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1012
                send:#value;
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1013
                returnTop;
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1014
                ir.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1015
    "
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1016
        irBuilder ir
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1017
    "
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1018
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1019
    aCompiledMethod := irBuilder compiledCode.
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1020
    self assert:(aCompiledMethod isKindOf:CompiledMethod).
11
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1021
    self assert:((aCompiledMethod valueWithReceiver:1 arguments:#()) = 22).
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1022
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1023
    "Created: / 30-03-2009 / 23:05:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
0a50d475c1ff Blocks seems to work. No support for nested block. No support for
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
  1024
    "Modified: / 01-04-2009 / 19:43:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
9
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
  1025
! !
04518c7fb91c Initial support for closures.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
  1026
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1027
!IRBuilderTest class methodsFor:'documentation'!
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1028
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1029
version
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1030
    ^ '$Id$'
23
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
  1031
!
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
  1032
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
  1033
version_CVS
36
1bfd09c6b3d8 Fixes in tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
  1034
    ^ '§Header: /cvs/stx/cvut/stx/goodies/newcompiler/IRBuilderTest.st,v 1.3 2009/10/08 12:03:51 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: 19
diff changeset
  1035
!
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
  1036
377bc46cad12 Moved to package cvut:stx/goodies/newcompiler to be in sync with eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
  1037
version_SVN
26
db19d89eef60 Added version_SVN to all classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
  1038
    ^ '$Id$'
1
0dd36941955f Initial revision. All tests pass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1039
! !