Continuation.st
author ca
Mon, 27 Sep 2004 12:16:12 +0200
changeset 8596 5433434a9bf0
parent 8582 115869898a97
child 8687 d6e6e2c0c27c
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8554
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
     1
"
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
     2
 COPYRIGHT (c) 2004 by eXept Software AG
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
     3
              All Rights Reserved
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
     4
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
     5
 This software is furnished under a license and may be used
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
     6
 only in accordance with the terms of that license and with the
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
     8
 be provided or otherwise made available to, or used by, any
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
     9
 other person.  No title to or ownership of the software is
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    10
 hereby transferred.
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    11
"
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    12
8553
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"{ Package: 'stx:libbasic' }"
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
Object subclass:#Continuation
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	instanceVariableNames:'process id suspendContext'
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	classVariableNames:''
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	poolDictionaries:''
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	category:'Kernel-Processes'
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
!
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
8554
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    22
!Continuation class methodsFor:'documentation'!
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    23
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    24
copyright
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    25
"
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    26
 COPYRIGHT (c) 2004 by eXept Software AG
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    27
              All Rights Reserved
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    28
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    29
 This software is furnished under a license and may be used
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    30
 only in accordance with the terms of that license and with the
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    31
 inclusion of the above copyright notice.   This software may not
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    32
 be provided or otherwise made available to, or used by, any
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    33
 other person.  No title to or ownership of the software is
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    34
 hereby transferred.
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    35
"
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    36
!
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    37
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    38
documentation
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    39
"
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    40
    Initial attempt - Contnuations do not work yet.
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    41
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    42
    [Instance variables:]
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    43
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    44
        id                     <SmallInteger>   a unique continuation-id;
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    45
                                                Used to identify a corresponding 
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    46
                                                data-structure in the VM.
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    47
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    48
        process                <Process>        the process which created this continuation.
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    49
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    50
    [Class variables:]
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    51
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    52
    [see also:]
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    53
        Process Context Block
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    54
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    55
    [author:]
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    56
        Claus Gittinger
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    57
"
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    58
!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    59
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    60
supported
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    61
    ^ false
8554
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    62
! !
8553
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    64
!Continuation class methodsFor:'instance creation'!
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    65
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    66
current
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    67
        ^ self new
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    68
"/        ^ self fromContext: thisContext sender
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    69
!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    70
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    71
currentDo: aBlock
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    72
        ^ aBlock value:self new
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    73
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    74
        "/ ^ aBlock value: (self fromContext: thisContext sender)
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    75
!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    76
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    77
fromContext: aStack
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    78
        aStack == thisContext sender ifFalse:[
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    79
            self error.
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    80
        ].
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    81
        ^ self new
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    82
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    83
"/        ^ self new initializeFromContext: aStack
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    84
!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    85
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    86
new
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    87
    |cont id|
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    88
8558
09e2910c1e4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8557
diff changeset
    89
    cont := super new.
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    90
%{
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    91
    int __cId;
8559
aca77c69cd91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8558
diff changeset
    92
    extern int __continuationCreate();
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    93
8559
aca77c69cd91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8558
diff changeset
    94
    __cId = __continuationCreate(cont);
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    95
    if (__cId) {
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    96
        id = __MKSMALLINT(__cId);
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    97
    }
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    98
%}.
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    99
    id isNil ifTrue:[
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   100
        self error:'could not create continuation' mayProceed:true.
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   101
        ^ nil.
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   102
    ].
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   103
    cont setId:id process:(Processor activeProcess).
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   104
    ^ cont
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   105
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   106
    "
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   107
     self new
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   108
    "
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   109
! !
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   110
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   111
!Continuation methodsFor:'as yet unclassified'!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   112
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   113
restoreValues
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   114
self halt.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   115
"/        | valueStream context |
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   116
"/
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   117
"/        valueStream _ values readStream.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   118
"/        [valueStream atEnd] whileFalse:
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   119
"/                [context _ valueStream next.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   120
"/                1 to: context class instSize do: [:i | context instVarAt: i put: valueStream next].
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   121
"/                1 to: context localSize do: [:i | context localAt: i put: valueStream next]]
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   122
! !
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   123
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   124
!Continuation methodsFor:'invocation'!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   125
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   126
numArgs
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   127
	^ 1
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   128
!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   129
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   130
value
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   131
	self value: nil
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   132
!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   133
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   134
value: v
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   135
    |cID|
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   136
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   137
    (cID := id) notNil ifTrue:[
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   138
%{
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   139
        __continuationResume(__intVal(cID));
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   140
%}
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   141
    ].
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   142
self halt.
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   143
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   144
"/        self terminate: thisContext.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   145
"/        self restoreValues.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   146
"/        thisContext swapSender: values first.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   147
"/        ^v
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   148
!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   149
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   150
valueWithArguments: v
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   151
	v size == 1 ifFalse: [^self error: 'continuations can only be resumed with one argument'].
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   152
	self value: v first
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   153
! !
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   154
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   155
!Continuation methodsFor:'private'!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   156
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   157
initializeFromContext: aContext
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   158
self halt.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   159
"/        | valueStream context |
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   160
"/
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   161
"/        valueStream _ WriteStream on: (Array new: 20).
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   162
"/        context _ aContext.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   163
"/        [context notNil] whileTrue:
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   164
"/                [valueStream nextPut: context.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   165
"/                1 to: context class instSize do: [:i | valueStream nextPut: (context instVarAt: i)].
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   166
"/                1 to: context localSize do: [:i | valueStream nextPut: (context localAt: i)].
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   167
"/                context _ context sender].
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   168
"/        values _ valueStream contents
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   169
!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   170
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   171
terminate: aContext
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   172
self halt.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   173
"/        | context |
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   174
"/        context _ aContext.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   175
"/        [context notNil] whileTrue: [context _ context swapSender: nil]
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   176
! !
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   177
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   178
!Continuation methodsFor:'private accessing'!
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   179
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   180
finalize
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   181
    |cId|
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   182
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   183
    (cId := id) notNil ifTrue:[
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   184
        id := nil.
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   185
%{
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   186
        __continuationDestroy(__intVal(cId));
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   187
%}
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   188
    ].
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   189
!
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   190
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   191
setId:idArg process:aProcess
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   192
    id := idArg.
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   193
    process := aProcess.
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   194
    self registerForFinalization.
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   195
! !
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   196
8553
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
!Continuation class methodsFor:'documentation'!
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
version
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   200
    ^ '$Header: /cvs/stx/stx/libbasic/Continuation.st,v 1.7 2004-09-27 10:16:12 ca Exp $'
8553
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
! !