BC + call/cc

Anthony Hannan squeak-dev at lists.squeakfoundation.org
Sun Oct 27 11:01:27 UTC 2002


--==CelesteAttachment62531==

Avi Bryant <avi at beta4.com> wrote:
> Still tring to implement #callCC in the block closure image.  I get a DNU
> #trimBottomTo: in Process2>>swapSender:.  Anthony, what am I doing wrong?
> How does #swapSender: ever work?
> I have to say, I think the BC work is great, but I much prefer working
> with the non-BC MethodContexts...

Hi Avi and all,

swapSender: only works on suspended processes.  In fact, all context
manipulations only work on suspended processes.  This is to allow
running process to be internalized by the VM.  It is pretty easy to
temporarily suspend a running process and manipulate it by using
forkAndWait, ie:

	proc _ thisContext process.
	[	proc suspend.
		"manipulate proc here"
		proc resume.
	] forkAndWait.

forkAndWait will cause the active process to wait until the forked block
finishes.  It still needs to be suspended, however, to convert it to
object form for manipulation.  Upon resume it resumes waiting for the
fork to complete.  Then the fork completes and the proc resumes running.

Attached is a Continuation changeset for VI4.  It works, accept if you
write to the Transcript it crashes the VM.  I will try to fix this
tomorrow.

Cheers,
Anthony
--==CelesteAttachment62531==
Content-type: application/octet-stream
Content-transfer-encoding: base64
Content-disposition: attachment;filename="Continuations-ajh.cs"

J0Zyb20gU3F1ZWFrMy4yW1ZJNF0gb2YgMTEgSnVseSAyMDAyIFtsYXRlc3QgdXBkYXRlOiAj
NDk1Nl0gb24gMjcgT2N0b2JlciAyMDAyIGF0IDU6NTQ6MzcgYW0nIQ1PYmplY3Qgc3ViY2xh
c3M6ICNDb250aW51YXRpb24NCWluc3RhbmNlVmFyaWFibGVOYW1lczogJ3N1c3BlbmRlZFBy
b2Nlc3MgJw0JY2xhc3NWYXJpYWJsZU5hbWVzOiAnJw0JcG9vbERpY3Rpb25hcmllczogJycN
CWNhdGVnb3J5OiAnS2VybmVsLUV4ZWN1dGlvbichDQ0hQ29udGludWF0aW9uIGNvbW1lbnRT
dGFtcDogJ2FqaCAxMC8yNy8yMDAyIDA1OjUwJyBwcmlvcjogMCENSSBjb250YWlucyBhIHN1
c3BlbmRlZCBwcm9jZXNzIHRoYXQgd2lsbCBnZXQgY29waWVkIGFuZCByZXN1bWVkIHVwb24g
ZXZhbHVhdGlvbiAoYWxhIFNjaGVtZSkuDQ1UaGUgZm9sbG93aW5nIGV4YW1wbGUgd2lsbCBl
eGVjdXRlICdoZWxsbycgaW5zcGVjdCB0d2ljZSAodGhlIHdob2xlIHRoaW5nIGlzIGluIGEg
Zm9yayBzbyB0aGUgY29udGludWF0aW9uIGRvZXMgbm90IHJlc3VtZSBhIHNlY29uZCBVSSBs
b29wKToNDVsJfCByZXN1bWVWYWx1ZSB8DQlyZXN1bWVWYWx1ZSA6PSBbOmNvbnRpbnVhdGlv
biB8IGNvbnRpbnVhdGlvbl0gY2FsbENDLg0JJ2hlbGxvJyBpbnNwZWN0Lg0JcmVzdW1lVmFs
dWUgaWZOb3ROaWw6IFsNCQkicmVzdW1lVmFsdWUgZXF1YWxzIHRoZSBjb250aW51YXRpb24g
dGhlIGZpcnN0IHRpbWUuDQkJIE5vdyByZXN1bWUgdGhlIGNvbnRpbnVhdGlvbiB3aXRoIGEg
cmVzdW1lIHZhbHVlIG9mIG5pbCINCQlyZXN1bWVWYWx1ZSB2YWx1ZTogbmlsXS4NXSBmb3Jr
Lg0NVGhhbmtzIHRvIEF2aSBCcnlhbnQgZm9yIGV4cGxhaW5pbmcgY29udGludWF0aW9ucyBh
bmQgcHJvdmlkaW5nIHRoZSBhYm92ZSBleGFtcGxlLg0hDV1zdHlsZVsoMTMwIDE1IDQ0Milm
MSxmMWksZjEhDQ0NIUJsb2NrQ2xvc3VyZSBtZXRob2RzRm9yOiAnc2NoZWR1bGluZycgc3Rh
bXA6ICdhamggMTAvMjcvMjAwMiAwNTo1NCchDWNhbGxDQw0JIkNhbGwgd2l0aCBjdXJyZW50
IGNvbnRpbnVhdGlvbiwgYWxhIFNjaGVtZS4NCUV2YWx1YXRlIHNlbGYgYWdhaW5zdCBhIGNv
cHkgb2YgdGhlIHNlbmRlcidzIGNhbGwgc3RhY2ssIHdoaWNoIGNhbiBiZSByZXN1bWVkIGxh
dGVyIg0NCV4gc2VsZiB2YWx1ZTogdGhpc0NvbnRleHQgc2VuZGVyIGNvcHlTdGFjayBhc0Nv
bnRpbnVhdGlvbiEgIQ0NDSFDb250aW51YXRpb24gbWV0aG9kc0ZvcjogJ2FzIHlldCB1bmNs
YXNzaWZpZWQnIHN0YW1wOiAnYWpoIDEwLzI3LzIwMDIgMDQ6NDMnIQ1zdXNwZW5kZWRQcm9j
ZXNzOiBhU3VzcGVuZGVkUHJvY2Vzcw0NCXN1c3BlbmRlZFByb2Nlc3MgXyBhU3VzcGVuZGVk
UHJvY2VzcyEgIQ0NIUNvbnRpbnVhdGlvbiBtZXRob2RzRm9yOiAnYXMgeWV0IHVuY2xhc3Np
ZmllZCcgc3RhbXA6ICdhamggMTAvMjcvMjAwMiAwNTozMSchDXZhbHVlOiByZXN1bWVWYWx1
ZQ0JIkNvcHkgYW5kIHJlc3VtZSBteSBzdXNwZW5kZWRQcm9jZXNzLiAgcmVzdW1lVmFsdWUg
d2lsbCBiZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGNhbGxDQyINDQlzdXNwZW5kZWRQcm9jZXNz
IGNvcHkNCQlzdGFja1JlcGxhY2VUb3A6IHJlc3VtZVZhbHVlOw0JCXJlc3VtZSEgIQ0NDSFN
ZXRob2RDb250ZXh0MiBtZXRob2RzRm9yOiAnc2VuZGVyJyBzdGFtcDogJ2FqaCAxMC8yNy8y
MDAyIDA0OjM1JyENY29udGV4dFdpdGhUYWc6IGFDb250ZXh0VGFnDQkiU2VhcmNoIG15IHNl
bmRlcnMgZm9yIHRoZSBjb250ZXh0IHdpdGggYUNvbnRleHRUYWciDQ0JXiBzZWxmIGNvbnRl
eHRXaXRoVGFnOiBhQ29udGV4dFRhZyBpZk5vbmU6IFtzZWxmIGVycm9yTm9Db250ZXh0V2l0
aFRhZzogYUNvbnRleHRUYWddISAhDQ0hTWV0aG9kQ29udGV4dDIgbWV0aG9kc0ZvcjogJ2Nv
cHlpbmcnIHN0YW1wOiAnYWpoIDEwLzI3LzIwMDIgMDQ6MzMnIQ1jb3B5DQ0Jc2VsZiBlcnJv
cjogJ0luZGl2aWR1YWwgY29udGV4dHMgc2hvdWxkIG5vdCBiZSBjb3BpZWQsIGNvcHkgc3Vz
cGVuZGVkIHByb2Nlc3NlcyBpbnN0ZWFkJyEgIQ0NIU1ldGhvZENvbnRleHQyIG1ldGhvZHNG
b3I6ICdjb3B5aW5nJyBzdGFtcDogJ2FqaCAxMC8yNy8yMDAyIDA0OjM4JyENY29weVN0YWNr
DQkiQ29weSBteSBwcm9jZXNzIHRydW5jYXRlZCBkb3duIHRvIHRoaXMgY29udGV4dCINDQl8
IHRhZyBwcm9jIGN0eHQgfA0JdGFnIF8gc2VsZiBjb250ZXh0VGFnLiAgIkNyZWF0ZSBpdCBi
ZWZvcmUgY29weWluZyINCXByb2MgXyB0aHJlYWQgY29weS4NCWN0eHQgXyBwcm9jIGNvbnRl
eHRXaXRoVGFnOiB0YWcuDQlbY3R4dCBpc1RvcF0gd2hpbGVGYWxzZTogW3Byb2MgcG9wVG9w
Q29udGV4dF0uDQleIHByb2MhICENDQ0hUHJvY2VzczIgbWV0aG9kc0ZvcjogJ2NvbnRleHRz
JyBzdGFtcDogJ2FqaCAxMC8yNy8yMDAyIDA0OjM1JyENY29udGV4dFdpdGhUYWc6IHRhZw0N
CV4gbGFzdEFjdGl2ZUNvbnRleHQgY29udGV4dFdpdGhUYWc6IHRhZyEgIQ0NIVByb2Nlc3My
IG1ldGhvZHNGb3I6ICdwcml2YXRlJyBzdGFtcDogJ2FqaCAxMC8yNy8yMDAyIDA0OjE4JyEN
Y29weQ0NCXwgY29weSB8DQlbCXNlbGYgc3VzcGVuZC4NCQljb3B5IF8gc2VsZiBjb3B5Lg0J
CXNlbGYgcmVzdW1lLg0JXSBmb3JrQW5kV2FpdC4NCV4gY29weSEgIQ0NDSFTdXNwZW5kZWRQ
cm9jZXNzIG1ldGhvZHNGb3I6ICdjb3B5aW5nJyBzdGFtcDogJ2FqaCAxMC8yNy8yMDAyIDA0
OjQyJyENYXNDb250aW51YXRpb24NDQleIENvbnRpbnVhdGlvbiBuZXcgc3VzcGVuZGVkUHJv
Y2Vzczogc2VsZiEgIQ0NIVN1c3BlbmRlZFByb2Nlc3MgbWV0aG9kc0ZvcjogJ2NvcHlpbmcn
IHN0YW1wOiAnYWpoIDEwLzI3LzIwMDIgMDQ6MzEnIQ1jb3B5DQ0JXiBzZWxmIHNoYWxsb3dD
b3B5IHBvc3RDb3B5ISAhDQ1Qcm9jZXNzMiByZW1vdmVTZWxlY3RvcjogI3Bvc3RDb3B5IQ1N
ZXRob2RDb250ZXh0MiByZW1vdmVTZWxlY3RvcjogI3Bvc3RDb3B5IQ0=

--==CelesteAttachment62531==--



More information about the Squeak-dev mailing list