Continuation.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 20:55:17 +0200
changeset 24417 03b083548da2
parent 23853 ebdceb0eb84d
permissions -rw-r--r--
#REFACTORING by exept class: Smalltalk class changed: #recursiveInstallAutoloadedClassesFrom:rememberIn:maxLevels:noAutoload:packageTop:showSplashInLevels: Transcript showCR:(... bindWith:...) -> Transcript showCR:... with:...
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
10224
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
     3
	      All Rights Reserved
8554
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
"
8553
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic' }"
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
23853
ebdceb0eb84d #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 15554
diff changeset
    14
"{ NameSpace: Smalltalk }"
ebdceb0eb84d #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 15554
diff changeset
    15
8553
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
Object subclass:#Continuation
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	instanceVariableNames:'process id suspendContext'
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'Kernel-Processes'
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
8848
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
    23
Continuation comment:'declared from: ..\..\..\stx\libbasic\abbrev.stc'
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
    24
!
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
    25
8554
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    26
!Continuation class methodsFor:'documentation'!
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    27
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    28
copyright
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    29
"
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    30
 COPYRIGHT (c) 2004 by eXept Software AG
10224
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
    31
	      All Rights Reserved
8554
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    32
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    33
 This software is furnished under a license and may be used
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    34
 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
    35
 inclusion of the above copyright notice.   This software may not
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    36
 be provided or otherwise made available to, or used by, any
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    37
 other person.  No title to or ownership of the software is
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    38
 hereby transferred.
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
!
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
documentation
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    43
"
10210
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
    44
    Initial attempt - Unfinished.
8849
f0bfc23a2f7b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8848
diff changeset
    45
    Continuations do not work yet - there is more support needed in the VM.
8554
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    46
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    47
    [Instance variables:]
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    48
10224
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
    49
	id                     <SmallInteger>   a unique continuation-id;
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
    50
						Used to identify a corresponding
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
    51
						data-structure in the VM.
8554
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    52
10224
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
    53
	process                <Process>        the process which created this continuation.
8554
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
    [Class variables:]
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    56
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    57
    [see also:]
10224
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
    58
	Process Context Block
8554
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    59
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    60
    [author:]
10224
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
    61
	Claus Gittinger
8554
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    62
"
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    63
!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    64
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    65
supported
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    66
    ^ false
8554
8fc9c321feb8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8553
diff changeset
    67
! !
8553
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    69
!Continuation class methodsFor:'instance creation'!
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    70
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
    71
current
15554
b4d307032579 class: Continuation
Claus Gittinger <cg@exept.de>
parents: 11304
diff changeset
    72
    "this is called current-continuation in scheme"
b4d307032579 class: Continuation
Claus Gittinger <cg@exept.de>
parents: 11304
diff changeset
    73
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    74
    |cont id|
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    75
10224
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
    76
    cont := self basicNew.
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    77
%{
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    78
    int __cId;
8559
aca77c69cd91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8558
diff changeset
    79
    extern int __continuationCreate();
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    80
8559
aca77c69cd91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8558
diff changeset
    81
    __cId = __continuationCreate(cont);
10224
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
    82
    if (__cId > 0) {
15554
b4d307032579 class: Continuation
Claus Gittinger <cg@exept.de>
parents: 11304
diff changeset
    83
        id = __mkSmallInteger(__cId);
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    84
    }
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    85
%}.
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    86
    id isNil ifTrue:[
15554
b4d307032579 class: Continuation
Claus Gittinger <cg@exept.de>
parents: 11304
diff changeset
    87
        self error:'could not create continuation' mayProceed:true.
b4d307032579 class: Continuation
Claus Gittinger <cg@exept.de>
parents: 11304
diff changeset
    88
        ^ nil.
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    89
    ].
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    90
    cont setId:id process:(Processor activeProcess).
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
    91
    ^ cont
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    92
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    93
    "
10210
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
    94
     self current
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
    95
    "
10210
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
    96
15554
b4d307032579 class: Continuation
Claus Gittinger <cg@exept.de>
parents: 11304
diff changeset
    97
    "Modified: / 25-07-2013 / 11:37:27 / cg"
10210
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
    98
!
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
    99
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
   100
currentDo: aBlock
15554
b4d307032579 class: Continuation
Claus Gittinger <cg@exept.de>
parents: 11304
diff changeset
   101
    "this is is called call/cc in scheme"
b4d307032579 class: Continuation
Claus Gittinger <cg@exept.de>
parents: 11304
diff changeset
   102
10210
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
   103
    ^ aBlock value:self current
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
   104
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
   105
    "Modified: / 29-11-2006 / 10:14:03 / cg"
15554
b4d307032579 class: Continuation
Claus Gittinger <cg@exept.de>
parents: 11304
diff changeset
   106
    "Modified (comment): / 25-07-2013 / 11:37:00 / cg"
10210
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
   107
!
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
   108
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
   109
new
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
   110
    self error:'continuations must be created with #current'
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
   111
963dac304d35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8913
diff changeset
   112
    "Modified: / 29-11-2006 / 10:13:19 / cg"
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   113
! !
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   114
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   115
!Continuation methodsFor:'invocation'!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   116
8687
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8596
diff changeset
   117
argumentCount
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8596
diff changeset
   118
    "VisualAge/ANSI compatibility"
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8596
diff changeset
   119
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8596
diff changeset
   120
    ^ 1
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8596
diff changeset
   121
!
d6e6e2c0c27c Define #argumentCount as ANSI alias for #numArgs
Stefan Vogel <sv@exept.de>
parents: 8596
diff changeset
   122
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   123
numArgs
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   124
	^ 1
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
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   127
value
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   128
	self value: nil
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
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   131
value: v
23853
ebdceb0eb84d #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 15554
diff changeset
   132
    <resource: #todo>
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   133
    |cID|
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   134
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   135
    (cID := id) notNil ifTrue:[
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   136
%{
11259
1139cf276d57 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10224
diff changeset
   137
        __continuationResume(__intVal(cID));
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   138
%}
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   139
    ].
11304
dbc86babac7d Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 11259
diff changeset
   140
    self shouldImplement. 
8596
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 terminate: thisContext.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   143
"/        self restoreValues.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   144
"/        thisContext swapSender: values first.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   145
"/        ^v
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   146
!
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   147
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   148
valueWithArguments: v
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   149
	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
   150
	self value: v first
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   151
! !
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   152
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   153
!Continuation methodsFor:'private'!
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
terminate: aContext
23853
ebdceb0eb84d #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 15554
diff changeset
   156
    <resource: #todo>
11304
dbc86babac7d Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 11259
diff changeset
   157
    self shouldImplement. 
8582
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   158
"/        | context |
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   159
"/        context _ aContext.
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   160
"/        [context notNil] whileTrue: [context _ context swapSender: nil]
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   161
! !
115869898a97 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8559
diff changeset
   162
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   163
!Continuation methodsFor:'private accessing'!
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   164
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   165
finalize
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   166
    |cId|
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   167
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   168
    (cId := id) notNil ifTrue:[
10224
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
   169
	id := nil.
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   170
%{
10224
a63c1f284258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 10210
diff changeset
   171
	__continuationDestroy(__intVal(cId));
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   172
%}
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   173
    ].
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   174
!
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   175
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   176
setId:idArg process:aProcess
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   177
    id := idArg.
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   178
    process := aProcess.
8596
5433434a9bf0 *** empty log message ***
ca
parents: 8582
diff changeset
   179
    self registerForFinalization.
8557
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   180
! !
931a24890c1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8554
diff changeset
   181
8848
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   182
!Continuation methodsFor:'restoration'!
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   183
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   184
restoreValues
23853
ebdceb0eb84d #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 15554
diff changeset
   185
    <resource: #todo>
11304
dbc86babac7d Change #halt: to #shouldImplement or #assert:
Stefan Vogel <sv@exept.de>
parents: 11259
diff changeset
   186
    self shouldImplement. 
8848
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   187
"/        | valueStream context |
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   188
"/
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   189
"/        valueStream _ values readStream.
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   190
"/        [valueStream atEnd] whileFalse:
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   191
"/                [context _ valueStream next.
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   192
"/                1 to: context class instSize do: [:i | context instVarAt: i put: valueStream next].
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   193
"/                1 to: context localSize do: [:i | context localAt: i put: valueStream next]]
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   194
! !
54c8ceb41539 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8687
diff changeset
   195
8553
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
!Continuation class methodsFor:'documentation'!
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
version
23853
ebdceb0eb84d #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 15554
diff changeset
   199
    ^ '$Header$'
8553
1cf4acd5102a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
! !
15554
b4d307032579 class: Continuation
Claus Gittinger <cg@exept.de>
parents: 11304
diff changeset
   201