Context.st
changeset 18408 6f1d5142cbc3
parent 18406 eb1c585b6c9b
child 18409 48ddd376a992
child 18412 dc22d0d82e28
equal deleted inserted replaced
18406:eb1c585b6c9b 18408:6f1d5142cbc3
  1231      (i.e. the one that I have called) and return from it.
  1231      (i.e. the one that I have called) and return from it.
  1232     "
  1232     "
  1233 
  1233 
  1234 %{
  1234 %{
  1235 #ifdef __SCHTEAM__
  1235 #ifdef __SCHTEAM__
  1236     ERROR("unimplemented");
  1236     return __c__._RETURN_TO(value, self.asSTContinuation());
       
  1237     /* NOTREACHED */
  1237 #else
  1238 #else
  1238     OBJ sndr;
  1239     OBJ sndr;
  1239 
  1240 
  1240     theContext = __thisContext;
  1241     theContext = __thisContext;
  1241     while (theContext != nil) {
  1242     while (theContext != nil) {
  1282      (i.e. the one that I have called) and return from it.
  1283      (i.e. the one that I have called) and return from it.
  1283     "
  1284     "
  1284 
  1285 
  1285 %{
  1286 %{
  1286 #ifdef __SCHTEAM__
  1287 #ifdef __SCHTEAM__
  1287     ERROR("unimplemented");
  1288     return __c__._RETURN_TO(value, self.asSTContinuation());
       
  1289     /* NOTREACHED */
  1288 #else
  1290 #else
  1289     OBJ theContext, sndr;
  1291     OBJ theContext, sndr;
  1290 
  1292 
  1291     theContext = __thisContext;
  1293     theContext = __thisContext;
  1292     while (theContext != nil) {
  1294     while (theContext != nil) {
  1328      (i.e. the one that I have called) and return from it.
  1330      (i.e. the one that I have called) and return from it.
  1329     "
  1331     "
  1330 
  1332 
  1331 %{
  1333 %{
  1332 #ifdef __SCHTEAM__
  1334 #ifdef __SCHTEAM__
  1333     ERROR("unimplemented");
  1335     return __c__._RETURN_TO(value, self.asSTContinuation());
       
  1336     /* NOTREACHED */
  1334 #else
  1337 #else
  1335     OBJ theContext, sndr;
  1338     OBJ theContext, sndr;
  1336 
  1339 
  1337     theContext = __thisContext;
  1340     theContext = __thisContext;
  1338     while (theContext != nil) {
  1341     while (theContext != nil) {
  1382 	 non-returnable contexts (which are faster).
  1385 	 non-returnable contexts (which are faster).
  1383 	 If such a context is restarted, a runtime error is raised."
  1386 	 If such a context is restarted, a runtime error is raised."
  1384 
  1387 
  1385 %{  /* NOCONTEXT */
  1388 %{  /* NOCONTEXT */
  1386 #ifdef __SCHTEAM__
  1389 #ifdef __SCHTEAM__
  1387     ERROR("unimplemented");
  1390     return __c__._RETURN_FROM(value, self.asSTContinuation());
       
  1391     /* NOTREACHED */
  1388 #else
  1392 #else
  1389     if (__INST(sender_) == nil) {
  1393     if (__INST(sender_) == nil) {
  1390 	RETURN(nil);
  1394 	RETURN(nil);
  1391     } else {
  1395     } else {
  1392 	__RESUMECONTEXT__(self, value, 0);
  1396 	__RESUMECONTEXT__(self, value, 0);
  2365     "/ (it avoids referencing all intermediate contexts, which would mark them special,
  2369     "/ (it avoids referencing all intermediate contexts, which would mark them special,
  2366     "/  although they aren't really - this is expert knowledge, no need to understand that ...)
  2370     "/  although they aren't really - this is expert knowledge, no need to understand that ...)
  2367 
  2371 
  2368 %{  /* NOCONTEXT */
  2372 %{  /* NOCONTEXT */
  2369 #ifdef __SCHTEAM__
  2373 #ifdef __SCHTEAM__
  2370     ERROR("unimplemented");
  2374     {
       
  2375 	if (self == aContext) {
       
  2376 	    return __c__._RETURN(self);
       
  2377 	}
       
  2378 
       
  2379 	STContinuation theContext = self.sender();
       
  2380 
       
  2381 	while (theContext != null) {
       
  2382 	    if ((theContext == aContext)
       
  2383 	     || theContext.isMarkedForUnwind()) {
       
  2384 		return __c__._RETURN(theContext);
       
  2385 	    }
       
  2386 	    theContext = theContext.sender();
       
  2387 	}
       
  2388     }
  2371 #else
  2389 #else
  2372     OBJ theContext;
  2390     OBJ theContext;
  2373 
  2391 
  2374     if (self == aContext) {
  2392     if (self == aContext) {
  2375 	RETURN (self);
  2393 	RETURN (self);
  2870 ! !
  2888 ! !
  2871 
  2889 
  2872 !Context class methodsFor:'documentation'!
  2890 !Context class methodsFor:'documentation'!
  2873 
  2891 
  2874 version
  2892 version
  2875     ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.222 2015-05-25 23:06:42 cg Exp $'
  2893     ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.223 2015-05-26 18:55:30 cg Exp $'
  2876 !
  2894 !
  2877 
  2895 
  2878 version_CVS
  2896 version_CVS
  2879     ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.222 2015-05-25 23:06:42 cg Exp $'
  2897     ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.223 2015-05-26 18:55:30 cg Exp $'
  2880 !
  2898 !
  2881 
  2899 
  2882 version_HG
  2900 version_HG
  2883 
  2901 
  2884     ^ '$Changeset: <not expanded> $'
  2902     ^ '$Changeset: <not expanded> $'