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