keep ref to weak-element somewhere (this is a try)
authorClaus Gittinger <cg@exept.de>
Wed, 21 Feb 1996 00:43:41 +0100
changeset 981 6da206fcc1c4
parent 980 0ab2f56ecfc7
child 982 c46ce921fae2
keep ref to weak-element somewhere (this is a try)
WeakArr.st
WeakArray.st
--- a/WeakArr.st	Tue Feb 20 22:12:52 1996 +0100
+++ b/WeakArr.st	Wed Feb 21 00:43:41 1996 +0100
@@ -286,14 +286,13 @@
     "evaluate the argument, aBlock for each element in the collection.
      - reimplemented for IGC readBarrier. You dont have to understand this."
 
-    |home|
+    |home element|
 %{
     REGISTER OBJFUNC codeVal;
     REGISTER int index;
     unsigned int nIndex;
     static struct inlineCache val = _ILC1;
     REGISTER OBJ rHome;
-    OBJ el;
     extern OBJ __WEAK_READ__();
 
     index = _intVal(_ClassInstPtr(__qClass(self))->c_ninstvars);
@@ -304,9 +303,9 @@
 #ifdef NEW_BLOCK_CALL
 	for (; index < nIndex; index++) {
 	    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
-	    el = _InstPtr(self)->i_instvars[index];
-	    if (el != nil) el = __WEAK_READ__(self, el);
-	    (*codeVal)(aBlock, CON_COMMA  el);
+	    element = _InstPtr(self)->i_instvars[index];
+	    if (element != nil) element = __WEAK_READ__(self, element);
+	    (*codeVal)(aBlock, CON_COMMA  element);
 	} 
 #else
 	home = _BlockInstPtr(aBlock)->b_home;
@@ -318,17 +317,17 @@
 	    for (; index < nIndex; index++) {
 		if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-		el = _InstPtr(self)->i_instvars[index];
-		if (el != nil) el = __WEAK_READ__(self, el);
-		(*codeVal)(rHome, CON_COMMA  el);
+		element = _InstPtr(self)->i_instvars[index];
+		if (element != nil) element = __WEAK_READ__(self, element);
+		(*codeVal)(rHome, CON_COMMA  element);
 	    } 
 	} else {
 	    for (; index < nIndex; index++) {
 		if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-		el = _InstPtr(self)->i_instvars[index];
-		if (el != nil) el = __WEAK_READ__(self, el);
-		(*codeVal)(home, CON_COMMA  el);
+		element = _InstPtr(self)->i_instvars[index];
+		if (element != nil) element = __WEAK_READ__(self, element);
+		(*codeVal)(home, CON_COMMA  element);
 	    } 
 	} 
 #endif
@@ -336,16 +335,15 @@
 	for (; index < nIndex; index++) {
 	    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-	    el = _InstPtr(self)->i_instvars[index];
-	    if (el != nil) el = __WEAK_READ__(self, el);
+	    element = _InstPtr(self)->i_instvars[index];
+	    if (element != nil) element = __WEAK_READ__(self, element);
 	    (*val.ilc_func)(aBlock, 
 			    @symbol(value:), 
 			    CON_COMMA  nil, &val, 
-			    el);
+			    element);
 	} 
     }
-%}
-.
+%}.
     ^ self
 !
 
@@ -354,7 +352,7 @@
      up to (and including) stop in the collection.
      - reimplemented for IGC readBarrier. You dont have to understand this."
 
-    |home|
+    |home element|
 %{
     REGISTER OBJFUNC codeVal;
     REGISTER int index;
@@ -362,7 +360,6 @@
     int nIndex, nInsts;
     static struct inlineCache val = _ILC1;
     int indexLow, indexHigh;
-    OBJ el;
     extern OBJ __WEAK_READ__();
 
     if (__bothSmallInteger(start, stop)) {
@@ -382,9 +379,9 @@
 #ifdef NEW_BLOCK_CALL
 		    for (index=indexLow; index <= indexHigh; index++) {
 			if (InterruptPending != nil) __interruptL(@line COMMA_CON);
-			el = _InstPtr(self)->i_instvars[index];
-			if (el != nil) el = __WEAK_READ__(self, el);
-			(*codeVal)(aBlock, CON_COMMA  el);
+			element = _InstPtr(self)->i_instvars[index];
+			if (element != nil) element = __WEAK_READ__(self, element);
+			(*codeVal)(aBlock, CON_COMMA  element);
 		    } 
 #else
 		    home = _BlockInstPtr(aBlock)->b_home;
@@ -393,28 +390,28 @@
 			index = indexLow;
 			for (; index <= indexHigh; index++) {
 			    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
-			    el = _InstPtr(self)->i_instvars[index];
-			    if (el != nil) el = __WEAK_READ__(self, el);
-			    (*codeVal)(rHome, CON_COMMA  el);
+			    element = _InstPtr(self)->i_instvars[index];
+			    if (element != nil) element = __WEAK_READ__(self, element);
+			    (*codeVal)(rHome, CON_COMMA  element);
 			} 
 		    } else {
 			for (index=indexLow; index <= indexHigh; index++) {
 			    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
-			    el = _InstPtr(self)->i_instvars[index];
-			    if (el != nil) el = __WEAK_READ__(self, el);
-			    (*codeVal)(home, CON_COMMA  el);
+			    element = _InstPtr(self)->i_instvars[index];
+			    if (element != nil) element = __WEAK_READ__(self, element);
+			    (*codeVal)(home, CON_COMMA  element);
 			} 
 		    }
 #endif
 		} else {
 		    for (index=indexLow; index <= indexHigh; index++) {
 			if (InterruptPending != nil) __interruptL(@line COMMA_CON);
-			el = _InstPtr(self)->i_instvars[index];
-			if (el != nil) el = __WEAK_READ__(self, el);
+			element = _InstPtr(self)->i_instvars[index];
+			if (element != nil) element = __WEAK_READ__(self, element);
 			(*val.ilc_func) (aBlock, 
 					 @symbol(value:), 
 					 CON_COMMA  nil, &val, 
-					 el);
+					 element);
 		    } 
 		}
 	    }
@@ -431,14 +428,13 @@
      Pass both index and element to the block.
      - reimplemented for speed"
 
-    |home|
+    |home element|
 %{
     REGISTER OBJFUNC codeVal;
     REGISTER int index;
     unsigned int nIndex;
     static struct inlineCache val2 = _ILC2;
     REGISTER OBJ rHome;
-    OBJ el;
     extern OBJ __WEAK_READ__();
 
     index = _intVal(_ClassInstPtr(__qClass(self))->c_ninstvars);
@@ -450,9 +446,9 @@
 	for (; index < nIndex; index++) {
 	    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-	    el = _InstPtr(self)->i_instvars[index];
-	    if (el != nil) el = __WEAK_READ__(self, el);
-	    (*codeVal)(aBlock, CON_COMMA  __MKSMALLINT(index+1), el);
+	    element = _InstPtr(self)->i_instvars[index];
+	    if (element != nil) element = __WEAK_READ__(self, element);
+	    (*codeVal)(aBlock, CON_COMMA  __MKSMALLINT(index+1), element);
 	} 
 #else
 	home = _BlockInstPtr(aBlock)->b_home;
@@ -464,19 +460,19 @@
 	    while (index < nIndex) {
 		if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-		el = _InstPtr(self)->i_instvars[index];
-		if (el != nil) el = __WEAK_READ__(self, el);
+		element = _InstPtr(self)->i_instvars[index];
+		if (element != nil) element = __WEAK_READ__(self, element);
 		index++;
-		(*codeVal)(rHome, CON_COMMA  __MKSMALLINT(index), el);
+		(*codeVal)(rHome, CON_COMMA  __MKSMALLINT(index), element);
 	    } 
 	} else {
 	    while (index < nIndex) {
 		if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-		el = _InstPtr(self)->i_instvars[index];
-		if (el != nil) el = __WEAK_READ__(self, el);
+		element = _InstPtr(self)->i_instvars[index];
+		if (element != nil) element = __WEAK_READ__(self, element);
 		index++;
-		(*codeVal)(home, CON_COMMA  __MKSMALLINT(index), el);
+		(*codeVal)(home, CON_COMMA  __MKSMALLINT(index), element);
 	    } 
 	} 
 #endif
@@ -484,14 +480,14 @@
 	while (index < nIndex) {
 	    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-	    el = _InstPtr(self)->i_instvars[index];
-	    if (el != nil) el = __WEAK_READ__(self, el);
+	    element = _InstPtr(self)->i_instvars[index];
+	    if (element != nil) element = __WEAK_READ__(self, element);
 	    index++;
 	    (*val2.ilc_func)(aBlock, 
 			    @symbol(value:value:), 
 			    CON_COMMA  nil, &val2,
 			    __MKSMALLINT(index),
-			    el);
+			    element);
 	} 
     }
 %}.
@@ -501,14 +497,13 @@
 nonNilElementsDo:aBlock
     "evaluate the argument, aBlock for each non-nil element"
 
-    |home|
+    |home element|
 %{
     REGISTER OBJFUNC codeVal;
     REGISTER int index;
     int nIndex;
     static struct inlineCache val = _ILC1;
     REGISTER OBJ rHome;
-    REGISTER OBJ element;
     extern OBJ __WEAK_READ__();
 
     index = _intVal(_ClassInstPtr(__qClass(self))->c_ninstvars);
@@ -597,6 +592,6 @@
 !WeakArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Attic/WeakArr.st,v 1.24 1996-01-04 01:24:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Attic/WeakArr.st,v 1.25 1996-02-20 23:43:41 cg Exp $'
 ! !
 WeakArray initialize!
--- a/WeakArray.st	Tue Feb 20 22:12:52 1996 +0100
+++ b/WeakArray.st	Wed Feb 21 00:43:41 1996 +0100
@@ -286,14 +286,13 @@
     "evaluate the argument, aBlock for each element in the collection.
      - reimplemented for IGC readBarrier. You dont have to understand this."
 
-    |home|
+    |home element|
 %{
     REGISTER OBJFUNC codeVal;
     REGISTER int index;
     unsigned int nIndex;
     static struct inlineCache val = _ILC1;
     REGISTER OBJ rHome;
-    OBJ el;
     extern OBJ __WEAK_READ__();
 
     index = _intVal(_ClassInstPtr(__qClass(self))->c_ninstvars);
@@ -304,9 +303,9 @@
 #ifdef NEW_BLOCK_CALL
 	for (; index < nIndex; index++) {
 	    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
-	    el = _InstPtr(self)->i_instvars[index];
-	    if (el != nil) el = __WEAK_READ__(self, el);
-	    (*codeVal)(aBlock, CON_COMMA  el);
+	    element = _InstPtr(self)->i_instvars[index];
+	    if (element != nil) element = __WEAK_READ__(self, element);
+	    (*codeVal)(aBlock, CON_COMMA  element);
 	} 
 #else
 	home = _BlockInstPtr(aBlock)->b_home;
@@ -318,17 +317,17 @@
 	    for (; index < nIndex; index++) {
 		if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-		el = _InstPtr(self)->i_instvars[index];
-		if (el != nil) el = __WEAK_READ__(self, el);
-		(*codeVal)(rHome, CON_COMMA  el);
+		element = _InstPtr(self)->i_instvars[index];
+		if (element != nil) element = __WEAK_READ__(self, element);
+		(*codeVal)(rHome, CON_COMMA  element);
 	    } 
 	} else {
 	    for (; index < nIndex; index++) {
 		if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-		el = _InstPtr(self)->i_instvars[index];
-		if (el != nil) el = __WEAK_READ__(self, el);
-		(*codeVal)(home, CON_COMMA  el);
+		element = _InstPtr(self)->i_instvars[index];
+		if (element != nil) element = __WEAK_READ__(self, element);
+		(*codeVal)(home, CON_COMMA  element);
 	    } 
 	} 
 #endif
@@ -336,16 +335,15 @@
 	for (; index < nIndex; index++) {
 	    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-	    el = _InstPtr(self)->i_instvars[index];
-	    if (el != nil) el = __WEAK_READ__(self, el);
+	    element = _InstPtr(self)->i_instvars[index];
+	    if (element != nil) element = __WEAK_READ__(self, element);
 	    (*val.ilc_func)(aBlock, 
 			    @symbol(value:), 
 			    CON_COMMA  nil, &val, 
-			    el);
+			    element);
 	} 
     }
-%}
-.
+%}.
     ^ self
 !
 
@@ -354,7 +352,7 @@
      up to (and including) stop in the collection.
      - reimplemented for IGC readBarrier. You dont have to understand this."
 
-    |home|
+    |home element|
 %{
     REGISTER OBJFUNC codeVal;
     REGISTER int index;
@@ -362,7 +360,6 @@
     int nIndex, nInsts;
     static struct inlineCache val = _ILC1;
     int indexLow, indexHigh;
-    OBJ el;
     extern OBJ __WEAK_READ__();
 
     if (__bothSmallInteger(start, stop)) {
@@ -382,9 +379,9 @@
 #ifdef NEW_BLOCK_CALL
 		    for (index=indexLow; index <= indexHigh; index++) {
 			if (InterruptPending != nil) __interruptL(@line COMMA_CON);
-			el = _InstPtr(self)->i_instvars[index];
-			if (el != nil) el = __WEAK_READ__(self, el);
-			(*codeVal)(aBlock, CON_COMMA  el);
+			element = _InstPtr(self)->i_instvars[index];
+			if (element != nil) element = __WEAK_READ__(self, element);
+			(*codeVal)(aBlock, CON_COMMA  element);
 		    } 
 #else
 		    home = _BlockInstPtr(aBlock)->b_home;
@@ -393,28 +390,28 @@
 			index = indexLow;
 			for (; index <= indexHigh; index++) {
 			    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
-			    el = _InstPtr(self)->i_instvars[index];
-			    if (el != nil) el = __WEAK_READ__(self, el);
-			    (*codeVal)(rHome, CON_COMMA  el);
+			    element = _InstPtr(self)->i_instvars[index];
+			    if (element != nil) element = __WEAK_READ__(self, element);
+			    (*codeVal)(rHome, CON_COMMA  element);
 			} 
 		    } else {
 			for (index=indexLow; index <= indexHigh; index++) {
 			    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
-			    el = _InstPtr(self)->i_instvars[index];
-			    if (el != nil) el = __WEAK_READ__(self, el);
-			    (*codeVal)(home, CON_COMMA  el);
+			    element = _InstPtr(self)->i_instvars[index];
+			    if (element != nil) element = __WEAK_READ__(self, element);
+			    (*codeVal)(home, CON_COMMA  element);
 			} 
 		    }
 #endif
 		} else {
 		    for (index=indexLow; index <= indexHigh; index++) {
 			if (InterruptPending != nil) __interruptL(@line COMMA_CON);
-			el = _InstPtr(self)->i_instvars[index];
-			if (el != nil) el = __WEAK_READ__(self, el);
+			element = _InstPtr(self)->i_instvars[index];
+			if (element != nil) element = __WEAK_READ__(self, element);
 			(*val.ilc_func) (aBlock, 
 					 @symbol(value:), 
 					 CON_COMMA  nil, &val, 
-					 el);
+					 element);
 		    } 
 		}
 	    }
@@ -431,14 +428,13 @@
      Pass both index and element to the block.
      - reimplemented for speed"
 
-    |home|
+    |home element|
 %{
     REGISTER OBJFUNC codeVal;
     REGISTER int index;
     unsigned int nIndex;
     static struct inlineCache val2 = _ILC2;
     REGISTER OBJ rHome;
-    OBJ el;
     extern OBJ __WEAK_READ__();
 
     index = _intVal(_ClassInstPtr(__qClass(self))->c_ninstvars);
@@ -450,9 +446,9 @@
 	for (; index < nIndex; index++) {
 	    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-	    el = _InstPtr(self)->i_instvars[index];
-	    if (el != nil) el = __WEAK_READ__(self, el);
-	    (*codeVal)(aBlock, CON_COMMA  __MKSMALLINT(index+1), el);
+	    element = _InstPtr(self)->i_instvars[index];
+	    if (element != nil) element = __WEAK_READ__(self, element);
+	    (*codeVal)(aBlock, CON_COMMA  __MKSMALLINT(index+1), element);
 	} 
 #else
 	home = _BlockInstPtr(aBlock)->b_home;
@@ -464,19 +460,19 @@
 	    while (index < nIndex) {
 		if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-		el = _InstPtr(self)->i_instvars[index];
-		if (el != nil) el = __WEAK_READ__(self, el);
+		element = _InstPtr(self)->i_instvars[index];
+		if (element != nil) element = __WEAK_READ__(self, element);
 		index++;
-		(*codeVal)(rHome, CON_COMMA  __MKSMALLINT(index), el);
+		(*codeVal)(rHome, CON_COMMA  __MKSMALLINT(index), element);
 	    } 
 	} else {
 	    while (index < nIndex) {
 		if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-		el = _InstPtr(self)->i_instvars[index];
-		if (el != nil) el = __WEAK_READ__(self, el);
+		element = _InstPtr(self)->i_instvars[index];
+		if (element != nil) element = __WEAK_READ__(self, element);
 		index++;
-		(*codeVal)(home, CON_COMMA  __MKSMALLINT(index), el);
+		(*codeVal)(home, CON_COMMA  __MKSMALLINT(index), element);
 	    } 
 	} 
 #endif
@@ -484,14 +480,14 @@
 	while (index < nIndex) {
 	    if (InterruptPending != nil) __interruptL(@line COMMA_CON);
 
-	    el = _InstPtr(self)->i_instvars[index];
-	    if (el != nil) el = __WEAK_READ__(self, el);
+	    element = _InstPtr(self)->i_instvars[index];
+	    if (element != nil) element = __WEAK_READ__(self, element);
 	    index++;
 	    (*val2.ilc_func)(aBlock, 
 			    @symbol(value:value:), 
 			    CON_COMMA  nil, &val2,
 			    __MKSMALLINT(index),
-			    el);
+			    element);
 	} 
     }
 %}.
@@ -501,14 +497,13 @@
 nonNilElementsDo:aBlock
     "evaluate the argument, aBlock for each non-nil element"
 
-    |home|
+    |home element|
 %{
     REGISTER OBJFUNC codeVal;
     REGISTER int index;
     int nIndex;
     static struct inlineCache val = _ILC1;
     REGISTER OBJ rHome;
-    REGISTER OBJ element;
     extern OBJ __WEAK_READ__();
 
     index = _intVal(_ClassInstPtr(__qClass(self))->c_ninstvars);
@@ -597,6 +592,6 @@
 !WeakArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.24 1996-01-04 01:24:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.25 1996-02-20 23:43:41 cg Exp $'
 ! !
 WeakArray initialize!