comments
authorClaus Gittinger <cg@exept.de>
Tue, 26 May 2015 20:55:30 +0200
changeset 18408 6f1d5142cbc3
parent 18406 eb1c585b6c9b
child 18409 48ddd376a992
child 18410 6806b6ba1316
comments
Array.st
Context.st
--- a/Array.st	Tue May 26 01:06:42 2015 +0200
+++ b/Array.st	Tue May 26 20:55:30 2015 +0200
@@ -1537,7 +1537,14 @@
     "reimplemented for speed if receiver is an Array"
 
 %{  /* NOCONTEXT */
-
+#ifdef __SCHTEAM__
+    if (bothSmallInteger(index1, index2)) {
+	int _start = index1.intValue();
+	int _stop = index2.intValue();
+	self.from_to_put(_start, _stop, anObject);
+	return context._RETURN(self);
+    }
+#else
     REGISTER INT index;
     unsigned INT nIndex;
     unsigned INT endIndex;
@@ -1552,20 +1559,20 @@
 
 	    if ((endIndex >= index) && (endIndex < nIndex)) {
 		dst = &(__InstPtr(self)->i_instvars[index]);
-#ifdef memset4
+# ifdef memset4
 		{
 		    int n4 = endIndex-index+1;
 
 		    memset4(dst, anObject, n4);
 		}
-#else
-# ifdef FAST_MEMSET
+# else
+#  ifdef FAST_MEMSET
 		if ((INT)anObject == 0) {
 		    memset(dst, 0, __OBJS2BYTES__(endIndex-index+1));
 		} else
-# endif
+#  endif
 		{
-# ifdef __UNROLL_LOOPS__
+#  ifdef __UNROLL_LOOPS__
 		    {
 			INT i8;
 
@@ -1576,17 +1583,18 @@
 			    index = i8;
 			}
 		    }
-# endif
+#  endif
 		    for (; index <= endIndex; index++) {
 			*dst++ = anObject;
 		    }
 		}
-#endif
+# endif
 		__STORE(self, anObject);
 		RETURN ( self );
 	    }
 	}
     }
+#endif
 %}.
     ^ super from:index1 to:index2 put:anObject
 !
@@ -1883,10 +1891,10 @@
      receiver refers to aLiteral (i.e. a deep search)"
 
     self do:[:el |
-        el == aLiteral ifTrue:[^true].
-        (el class == Array or:[el class == ImmutableArray]) ifTrue:[
-            (el refersToLiteral: aLiteral) ifTrue: [^true]
-        ]
+	el == aLiteral ifTrue:[^true].
+	(el class == Array or:[el class == ImmutableArray]) ifTrue:[
+	    (el refersToLiteral: aLiteral) ifTrue: [^true]
+	]
     ].
     ^ false
 
@@ -1904,10 +1912,10 @@
      receiver is symbolic and matches aMatchPattern (i.e. a deep search)"
 
     self do:[ :el |
-        (el isSymbol and:[ aMatchPattern match: el]) ifTrue:[^true].
-        (el class == Array or:[el class == ImmutableArray]) ifTrue:[
-            (el refersToLiteralMatching: aMatchPattern) ifTrue: [^true]
-        ]
+	(el isSymbol and:[ aMatchPattern match: el]) ifTrue:[^true].
+	(el class == Array or:[el class == ImmutableArray]) ifTrue:[
+	    (el refersToLiteralMatching: aMatchPattern) ifTrue: [^true]
+	]
     ].
     ^ false
 
@@ -2680,10 +2688,9 @@
 !Array class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Array.st,v 1.171 2015-05-08 10:29:19 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Array.st,v 1.172 2015-05-26 18:55:30 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Array.st,v 1.171 2015-05-08 10:29:19 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Array.st,v 1.172 2015-05-26 18:55:30 cg Exp $'
 ! !
-
--- 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