Context.st
changeset 18408 6f1d5142cbc3
parent 18406 eb1c585b6c9b
child 18409 48ddd376a992
child 18412 dc22d0d82e28
--- a/Context.st	Tue May 26 01:06:42 2015 +0200
+++ b/Context.st	Tue May 26 20:55:30 2015 +0200
@@ -1233,7 +1233,8 @@
 
 %{
 #ifdef __SCHTEAM__
-    ERROR("unimplemented");
+    return __c__._RETURN_TO(value, self.asSTContinuation());
+    /* NOTREACHED */
 #else
     OBJ sndr;
 
@@ -1284,7 +1285,8 @@
 
 %{
 #ifdef __SCHTEAM__
-    ERROR("unimplemented");
+    return __c__._RETURN_TO(value, self.asSTContinuation());
+    /* NOTREACHED */
 #else
     OBJ theContext, sndr;
 
@@ -1330,7 +1332,8 @@
 
 %{
 #ifdef __SCHTEAM__
-    ERROR("unimplemented");
+    return __c__._RETURN_TO(value, self.asSTContinuation());
+    /* NOTREACHED */
 #else
     OBJ theContext, sndr;
 
@@ -1384,7 +1387,8 @@
 
 %{  /* NOCONTEXT */
 #ifdef __SCHTEAM__
-    ERROR("unimplemented");
+    return __c__._RETURN_FROM(value, self.asSTContinuation());
+    /* NOTREACHED */
 #else
     if (__INST(sender_) == nil) {
 	RETURN(nil);
@@ -2367,7 +2371,21 @@
 
 %{  /* NOCONTEXT */
 #ifdef __SCHTEAM__
-    ERROR("unimplemented");
+    {
+	if (self == aContext) {
+	    return __c__._RETURN(self);
+	}
+
+	STContinuation theContext = self.sender();
+
+	while (theContext != null) {
+	    if ((theContext == aContext)
+	     || theContext.isMarkedForUnwind()) {
+		return __c__._RETURN(theContext);
+	    }
+	    theContext = theContext.sender();
+	}
+    }
 #else
     OBJ theContext;
 
@@ -2872,11 +2890,11 @@
 !Context class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.222 2015-05-25 23:06:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.223 2015-05-26 18:55:30 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.222 2015-05-25 23:06:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.223 2015-05-26 18:55:30 cg Exp $'
 !
 
 version_HG