RegressionTests__BlockTest.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 18:53:03 +0200
changeset 2327 bf482d49aeaf
parent 2230 af977c91c96c
permissions -rw-r--r--
#QUALITY by exept class: RegressionTests::StringTests added: #test82c_expanding
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2230
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
     1
"{ Encoding: utf8 }"
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
     2
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1156
diff changeset
     3
"{ Package: 'stx:goodies/regression' }"
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
70
c677f96c4a0b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
     5
"{ NameSpace: RegressionTests }"
c677f96c4a0b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
     6
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
     7
TestCase subclass:#BlockTest
608
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
     8
	instanceVariableNames:'process'
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	classVariableNames:''
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	poolDictionaries:''
1156
6db89be79d82 category changes
Claus Gittinger <cg@exept.de>
parents: 939
diff changeset
    11
	category:'tests-Regression-RuntimeSystem'
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
606
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    15
!BlockTest methodsFor:'helpers - eqeq defect'!
334
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    16
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    17
g
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    18
    ^ True "/ the class here
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    19
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    20
    "Created: / 31-08-2007 / 17:40:37 / cg"
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    21
!
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    22
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    23
h
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    24
    ^ True "/ the class here
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    25
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    26
    "Created: / 31-08-2007 / 17:40:39 / cg"
606
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    27
! !
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    28
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    29
!BlockTest methodsFor:'helpers - mkreal defect'!
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    30
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    31
backgroundBlockWithMethodReturningHelper
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    32
    "/ had this bug in one situation:
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    33
    "/  a block was forked away
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    34
    "/  the method returns (its context is moved from the stack to the heap)
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    35
    "/  the block sees wrong method-vars
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    36
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    37
    |var1 var2 var3 var4 backgroundAction sema|
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    38
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    39
    sema := Semaphore new.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    40
    
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    41
    backgroundAction := 
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    42
        [
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    43
            var1 := self getMeVar:1 sema:sema.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    44
            self assert:(var1 = #[1]).
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    45
            var2 := self getMeVar:2 sema:sema.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    46
            self assert:(var2 = #[2]).
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    47
            var3 := self getMeVar:3 sema:sema.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    48
            self assert:(var3 = #[3]).
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    49
            var4 := self getMeVar:4 sema:sema.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    50
            self assert:(var4 = #[4]).
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    51
            sema signal.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    52
        ].
608
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    53
    process := backgroundAction newProcess.
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    54
    process priority:3.
609
378ef1ea8892 comment/format in:
Claus Gittinger <cg@exept.de>
parents: 608
diff changeset
    55
    process resume.
606
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    56
    ^ sema
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    57
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    58
    "Created: / 02-08-2011 / 18:56:44 / cg"
334
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    59
!
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    60
606
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    61
getMeVar:arg sema:sema
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    62
    |t|
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    63
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    64
    t := ByteArray with:arg.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    65
    sema wait.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    66
%{
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    67
    __markInterrupted(__context);
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    68
%}.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    69
    ^ t
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    70
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    71
    "Created: / 02-08-2011 / 18:57:20 / cg"
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    72
! !
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    73
2163
187234116087 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 1813
diff changeset
    74
!BlockTest methodsFor:'initialize / release'!
608
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    75
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    76
tearDown
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    77
    |p|
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    78
609
378ef1ea8892 comment/format in:
Claus Gittinger <cg@exept.de>
parents: 608
diff changeset
    79
    (p := process) notNil ifTrue:[
608
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    80
        process := nil.
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    81
        p terminate. 
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    82
    ]
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    83
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    84
    "Created: / 03-08-2011 / 15:11:11 / cg"
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    85
! !
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
    86
606
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    87
!BlockTest methodsFor:'tests - eqeq defects'!
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
    88
334
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    89
testBlockWithEQEQ_1
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    90
    |b v|
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    91
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    92
    b := [ self g == self h ].
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    93
    v := b value.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    94
    self assert:(v == true).
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    95
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    96
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    97
    "
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    98
     self new testBlockWithEQEQ_1
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    99
    "
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   100
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   101
    "Created: / 31-08-2007 / 17:41:59 / cg"
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   102
!
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   103
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   104
testBlockWithEQEQ_2
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   105
    |b v|
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   106
2230
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   107
    self 
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   108
        skipIf:ExternalAddress pointerSize = 8 
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   109
        description:'Compile does not work under 64bit'.
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   110
334
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   111
    b := [ 
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   112
%{
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   113
#ifdef FOO
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   114
%}.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   115
            self thisIsNeverCalled.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   116
%{
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   117
#endif
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   118
%}.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   119
            self g == self h 
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   120
         ].
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   121
    v := b value.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   122
    self assert:(v == true).
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   123
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   124
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   125
    "
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   126
     self new testBlockWithEQEQ_2
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   127
    "
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   128
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   129
    "Created: / 31-08-2007 / 17:42:02 / cg"
2230
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   130
    "Modified: / 21-05-2019 / 16:18:57 / Stefan Reise"
334
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   131
!
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   132
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   133
testBlockWithEQEQ_3
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   134
    |b p v|
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   135
2230
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   136
    self 
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   137
        skipIf:ExternalAddress pointerSize = 8 
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   138
        description:'Compile does not work under 64bit'.
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   139
334
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   140
    p := self.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   141
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   142
    [
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   143
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   144
        b := [ 
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   145
%{
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   146
#ifdef FOO
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   147
%}.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   148
            self thisIsNeverCalled.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   149
%{
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   150
#endif
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   151
%}.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   152
            p g == p h 
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   153
         ].
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   154
    ] value.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   155
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   156
    v := b value.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   157
    self assert:(v == true).
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   158
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   159
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   160
    "
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   161
     self new testBlockWithEQEQ_3
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   162
    "
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   163
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   164
    "Created: / 31-08-2007 / 17:44:07 / cg"
2230
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   165
    "Modified: / 21-05-2019 / 16:19:07 / Stefan Reise"
334
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   166
!
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   167
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   168
testBlockWithEQEQ_4
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   169
    |b p v Tmp|
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   170
2230
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   171
    self 
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   172
        skipIf:ExternalAddress pointerSize = 8 
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   173
        description:'Compile does not work under 64bit'.
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   174
334
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   175
    p := self.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   176
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   177
    [
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   178
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   179
        b := [   |foo|
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   180
%{
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   181
#ifdef FOO
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   182
%}.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   183
            foo := Timestamp now.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   184
            Tmp isNil ifTrue:[
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   185
                Tmp := 'flags' copy.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   186
            ] ifFalse:[
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   187
                ObjectMemory stopBackgroundCollector.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   188
            ].
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   189
            self thisIsNeverCalled.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   190
%{
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   191
#endif
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   192
%}.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   193
            p g == p h 
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   194
         ].
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   195
    ] perform:((Base64Coder decode:'dmFsdWU=') asString asSymbol).
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   196
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   197
    v := b value.
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   198
    self assert:(v == true).
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   199
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   200
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   201
    "
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   202
     self new testBlockWithEQEQ_4
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   203
    "
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   204
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   205
    "Created: / 31-08-2007 / 17:44:38 / cg"
2230
af977c91c96c #BUGFIX by Stefan Reise
sr
parents: 2163
diff changeset
   206
    "Modified: / 21-05-2019 / 16:19:14 / Stefan Reise"
334
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   207
! !
a9657208d19b oops - bytecode version generated wrong jitted code
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   208
606
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   209
!BlockTest methodsFor:'tests - mkreal defect'!
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   210
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   211
testBackgroundBlockWithMethodReturning
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   212
    "/ had this bug in one situation:
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   213
    "/  a block was forked away
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   214
    "/  the method returns (its context is moved from the stack to the heap)
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   215
    "/  the block sees wrong method-vars
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   216
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   217
    |sema|
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   218
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   219
    sema := self backgroundBlockWithMethodReturningHelper.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   220
    sema signal.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   221
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   222
    sema wait.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   223
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   224
    "Created: / 02-08-2011 / 20:00:44 / cg"
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   225
! !
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   226
938
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   227
!BlockTest methodsFor:'tests - unwind actions'!
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   228
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   229
test_unwind1
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   230
    |trace firstEntry callCount ensureCount|
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   231
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   232
    trace := OrderedCollection new.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   233
    firstEntry := true.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   234
    callCount := ensureCount := 0.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   235
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   236
    trace add:10.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   237
    [:restart |
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   238
        trace add:15.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   239
        [
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   240
            trace add:20.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   241
            callCount := callCount + 1.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   242
            firstEntry ifTrue:[
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   243
                trace add:21.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   244
                firstEntry := false.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   245
                restart value.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   246
                trace add:22.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   247
            ].
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   248
        ] ensure:[
939
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   249
            trace add:30.
938
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   250
            ensureCount := ensureCount + 1.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   251
        ].
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   252
        trace add:40.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   253
    ] valueWithRestart.
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   254
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   255
    self assert:(callCount == 2).
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   256
    self assert:(ensureCount == 2).
939
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   257
    self assert:(trace asArray = #(10 15 20 21 30 15 20 30 40)).
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   258
!
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   259
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   260
test_unwind2
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   261
    <context: #return>
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   262
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   263
    |mark trace firstEntry callCount ensureCount kon|
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   264
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   265
    kon := thisContext.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   266
    mark isNil ifTrue:[
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   267
        mark := true.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   268
        trace := OrderedCollection new.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   269
        firstEntry := true.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   270
        callCount := ensureCount := 0.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   271
        trace add:5.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   272
    ].
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   273
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   274
    trace add:10.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   275
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   276
    [
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   277
        trace add:20.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   278
        callCount := callCount + 1.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   279
        firstEntry ifTrue:[
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   280
            trace add:21.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   281
            firstEntry := false.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   282
            kon unwindAndRestart.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   283
            trace add:22.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   284
        ].
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   285
    ] ensure:[
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   286
        trace add:30.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   287
        ensureCount := ensureCount + 1.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   288
    ].
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   289
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   290
    trace add:40.
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   291
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   292
    self assert:(callCount == 2).
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   293
    self assert:(ensureCount == 2).
77517e3b896b class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   294
    self assert:(trace asArray = #(5 10 20 21 30 10 20 30 40)).
938
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   295
! !
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   296
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   297
!BlockTest methodsFor:'varArgBlocks'!
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
97
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   299
getBlock1
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   300
     |b|
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   301
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   302
     b := [:arg | Transcript 
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   303
                        show:'invoked with arg:'; 
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   304
                        showCR:arg
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   305
          ].
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   306
     ^ b
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   307
!
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   308
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
getVarArgBlock1
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
     |b|
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
     b := [:argList | Transcript 
1813
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   313
                        show:'invoked with args:'; 
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   314
                        showCR:argList.
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   315
                      nil  
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   316
          ] asVarArgBlock.
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
     ^ b
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
1813
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   319
    "Modified: / 11-10-2017 / 15:44:34 / cg"
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
!
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
getVarArgBlock2
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
     |b|
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
     b := [:argList | Transcript 
70
c677f96c4a0b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
   326
			show:'invoked with args:'; 
c677f96c4a0b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
   327
			showCR:argList.
c677f96c4a0b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
   328
		      argList
c677f96c4a0b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
   329
	  ] asVarArgBlock.
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
     ^ b
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
!
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
getVarArgBlock3
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
     |b|
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
     b := [:argList | Transcript 
70
c677f96c4a0b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
   339
			show:'invoked with args:'; 
c677f96c4a0b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
   340
			showCR:argList.
c677f96c4a0b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
   341
		      argList size
c677f96c4a0b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
   342
	  ] asVarArgBlock.
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
     ^ b
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
!
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
97
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   348
testBlock1
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   349
    |b|
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   350
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   351
    b := self getBlock1.
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   352
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   353
    b code notNil ifTrue:[
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   354
        Transcript showCR:'before call: *** blocks code is jitted'
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   355
    ] ifFalse:[
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   356
        Transcript showCR:'before call: blocks code is NOT jitted'
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   357
    ].
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   358
    b value:nil.
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   359
    b code notNil ifTrue:[
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   360
        Transcript showCR:'after call: blocks code is jitted'
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   361
    ] ifFalse:[
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   362
        Transcript showCR:'after call: *** blocks code is NOT jitted'
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   363
    ].
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   364
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   365
    b value:#foo.
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   366
    b value:1.
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   367
    b value:2
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   368
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   369
    "
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   370
     self new testBlock1
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   371
    "
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   372
!
7acb21a8e40c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   373
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
testVarArgBlock1
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
    |b|
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
    b := self getVarArgBlock1.
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
    b value.
60
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   380
    b code notNil ifTrue:[
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   381
        Transcript showCR:'blocks code is jitted'
60
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   382
    ] ifFalse:[
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   383
        Transcript showCR:'*** blocks code is NOT jitted'
60
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   384
    ].
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   385
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   386
    b value.
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
    b value:'arg1'.
1813
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   388
    b value:'arg1' value:'arg2' value:'arg3' value:'arg4'.
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
1813
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   390
    self assert:(b value) isNil.
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   391
    self assert:(b value:1) isNil.
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   392
    self assert:(b value:1 value:2) isNil.
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   393
    
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
    "
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   395
     self new testVarArgBlock1
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
    "
1813
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   397
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   398
    "Modified: / 11-10-2017 / 15:44:09 / cg"
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
!
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
testVarArgBlock2
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
    |b|
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
    b := self getVarArgBlock2.
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
60
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   406
    b value.
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   407
    b code notNil ifTrue:[
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   408
        Transcript showCR:'blocks code is jitted'
60
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   409
    ] ifFalse:[
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   410
        Transcript showCR:'*** blocks code is NOT jitted'
60
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   411
    ].
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   412
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   413
    self assert:( b value     = #() ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   414
    self assert:( (b value:1) = #(1) ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   415
    self assert:( (b value:1 value:2) = #(1 2) ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   416
    self assert:( (b value:1 value:2 value:3) = #(1 2 3) ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   417
    self assert:( (b value:1 value:2 value:3 value:4) = #(1 2 3 4) ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   418
    self assert:( (b valueWithArguments:#(1 2 3 4)) = #(1 2 3 4) ).
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   420
    self assert:( (b perform:#value)     = #()  ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   421
    self assert:( (b perform:#'value:' with:1) = #(1) ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   422
    self assert:( (b perform:#'value:value:' with:1 with:2) = #(1 2) ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   423
    self assert:( (b perform:#'value:value:value:' with:1 with:2 with:3) = #(1 2 3) ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   424
    self assert:( (b perform:#'value:value:value:value:' with:1 with:2 with:3 with:4) = #(1 2 3 4) ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   425
    self assert:( (b perform:#'valueWithArguments:' with:#(1 2 3 4)) = #(1 2 3 4) ).
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
1813
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   427
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   428
    "/ someone known to be stc-compiled and sending value: is collect:
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   429
    "/ (here, collects the arguments passed to b)
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   430
    self assert: ( #(0 0 0) collect:b ) = #((0) (0) (0)).
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   431
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
    "
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   433
     self new testVarArgBlock2
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
    "
1813
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   435
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   436
    "Modified: / 11-10-2017 / 15:43:19 / cg"
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
!
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
testVarArgBlock3
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
    |b|
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
    b := self getVarArgBlock3.
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
60
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   444
    b value.
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   445
    b code notNil ifTrue:[
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   446
        Transcript showCR:'blocks code is jitted'
60
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   447
    ] ifFalse:[
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   448
        Transcript showCR:'*** blocks code is NOT jitted'
60
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   449
    ].
f23dd849290e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   450
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   451
    self assert:( b value     = 0  ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   452
    self assert:( (b value:1) = 1  ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   453
    self assert:( (b value:1 value:2) = 2 ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   454
    self assert:( (b value:1 value:2 value:3) = 3 ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   455
    self assert:( (b value:1 value:2 value:3 value:4) = 4 ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   456
    self assert:( (b valueWithArguments:#(1 2 3 4)) = 4 ).
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   458
    self assert:( (b perform:#value)     = 0  ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   459
    self assert:( (b perform:#'value:' with:1) = 1 ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   460
    self assert:( (b perform:#'value:value:' with:1 with:2) = 2 ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   461
    self assert:( (b perform:#'value:value:value:' with:1 with:2 with:3) = 3 ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   462
    self assert:( (b perform:#'value:value:value:value:' with:1 with:2 with:3 with:4) = 4 ).
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   463
    self assert:( (b perform:#'valueWithArguments:' with:#(1 2 3 4)) = 4 ).
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
1813
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   465
    "/ someone known to be stc-compiled and sending value: is collect:
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   466
    "/ (here, collects the number of arguments passed to b)
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   467
    self assert: ( #(0 0 0) collect:b ) = #(1 1 1).
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   468
    
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
    "
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   470
     self new testVarArgBlock3
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
    "
1813
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   472
fe94fc89bc3a #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1447
diff changeset
   473
    "Modified: / 11-10-2017 / 15:42:39 / cg"
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
!
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
95
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   476
xtestAll
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   477
    self testVarArgBlocks.
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   478
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   479
    "
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   480
     self new xtestAll
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   481
    "
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   482
!
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   483
362e58ff28ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   484
xtestVarArgBlocks
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
    self testVarArgBlock1.
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
    self testVarArgBlock2.
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
    self testVarArgBlock3.
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
! !
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
!BlockTest class methodsFor:'documentation'!
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
version
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
    ^ '$Header$'
608
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
   494
!
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
   495
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
   496
version_CVS
72ad19f340f0 class definition
Claus Gittinger <cg@exept.de>
parents: 606
diff changeset
   497
    ^ '$Header$'
58
98b8f998027c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
! !
938
dec392a0a71e class: RegressionTests::BlockTest
Claus Gittinger <cg@exept.de>
parents: 609
diff changeset
   499