Block.st
changeset 1037 4488f834cb6b
parent 864 9d034b442868
child 1041 12e2524284e2
--- a/Block.st	Thu Feb 29 00:21:11 1996 +0100
+++ b/Block.st	Thu Feb 29 00:25:38 1996 +0100
@@ -81,7 +81,7 @@
 !
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.44 1996-01-15 21:43:12 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.45 1996-02-28 23:25:38 cg Exp $'
 ! !
 
 !Block class methodsFor:'initialization'!
@@ -247,7 +247,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 0, nil, nil COMMA_SND, nil) );
 # else
-	RETURN ( interpret(self, 0, nil, nil COMMA_SND, nil) );
+	RETURN ( __interpret(self, 0, nil, nil COMMA_SND, nil) );
 # endif
 #else
 	home = _BlockInstPtr(self)->b_home;
@@ -259,7 +259,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 0, nil, home COMMA_SND, nil) );
 # else
-	RETURN ( interpret(self, 0, nil, home COMMA_SND, nil) );
+	RETURN ( __interpret(self, 0, nil, home COMMA_SND, nil) );
 # endif
 #endif
     }
@@ -290,7 +290,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 1, nil, nil COMMA_SND, nil, &arg) );
 # else
-	RETURN ( interpret(self, 1, nil, nil COMMA_SND, nil, arg) );
+	RETURN ( __interpret(self, 1, nil, nil COMMA_SND, nil, arg) );
 # endif
 #else
 	home = _BlockInstPtr(self)->b_home;
@@ -301,7 +301,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 1, nil, home COMMA_SND, nil, &arg) );
 # else
-	RETURN ( interpret(self, 1, nil, home COMMA_SND, nil, arg) );
+	RETURN ( __interpret(self, 1, nil, home COMMA_SND, nil, arg) );
 # endif
 #endif
     }
@@ -331,7 +331,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 2, nil, nil COMMA_SND, nil, &arg1) );
 # else
-	RETURN ( interpret(self, 2, nil, nil COMMA_SND, nil, arg1, arg2) );
+	RETURN ( __interpret(self, 2, nil, nil COMMA_SND, nil, arg1, arg2) );
 # endif
 #else
 	home = _BlockInstPtr(self)->b_home;
@@ -341,7 +341,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 2, nil, home COMMA_SND, nil, &arg1) );
 # else
-	RETURN ( interpret(self, 2, nil, home COMMA_SND, nil, arg1, arg2) );
+	RETURN ( __interpret(self, 2, nil, home COMMA_SND, nil, arg1, arg2) );
 # endif
 #endif
     }
@@ -371,7 +371,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 3, nil, nil COMMA_SND, nil, &arg1) );
 # else
-	RETURN ( interpret(self, 3, nil, nil COMMA_SND, nil, arg1, arg2, arg3) );
+	RETURN ( __interpret(self, 3, nil, nil COMMA_SND, nil, arg1, arg2, arg3) );
 # endif
 #else
 	home = _BlockInstPtr(self)->b_home;
@@ -381,7 +381,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 3, nil, home COMMA_SND, nil, &arg1) );
 # else
-	RETURN ( interpret(self, 3, nil, home COMMA_SND, nil, arg1, arg2, arg3) );
+	RETURN ( __interpret(self, 3, nil, home COMMA_SND, nil, arg1, arg2, arg3) );
 # endif
 #endif
     }
@@ -411,7 +411,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 4, nil, nil COMMA_SND, nil, &arg1) );
 # else
-	RETURN ( interpret(self, 4, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4) );
+	RETURN ( __interpret(self, 4, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4) );
 # endif
 #else
 	home = _BlockInstPtr(self)->b_home;
@@ -421,7 +421,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 4, nil, home COMMA_SND, nil, &arg1) );
 # else
-	RETURN ( interpret(self, 4, nil, home COMMA_SND, nil, arg1, arg2, arg3, arg4) );
+	RETURN ( __interpret(self, 4, nil, home COMMA_SND, nil, arg1, arg2, arg3, arg4) );
 # endif
 #endif
     }
@@ -451,7 +451,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 5, nil, nil COMMA_SND, nil, &arg1) );
 # else
-	RETURN ( interpret(self, 5, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5) );
+	RETURN ( __interpret(self, 5, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5) );
 # endif
 #else
 	home = _BlockInstPtr(self)->b_home;
@@ -461,7 +461,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 5, nil, home COMMA_SND, nil, &arg1) );
 # else
-	RETURN ( interpret(self, 5, nil, home COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5) );
+	RETURN ( __interpret(self, 5, nil, home COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5) );
 # endif
 #endif
     }
@@ -491,7 +491,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 6, nil, nil COMMA_SND, nil, &arg1) );
 # else
-	RETURN ( interpret(self, 6, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6) );
+	RETURN ( __interpret(self, 6, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6) );
 # endif
 #else
 	home = _BlockInstPtr(self)->b_home;
@@ -501,7 +501,7 @@
 # ifdef PASS_ARG_POINTER
 	RETURN ( __interpret(self, 6, nil, home COMMA_SND, nil, &arg1) );
 # else
-	RETURN ( interpret(self, 6, nil, home COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6) );
+	RETURN ( __interpret(self, 6, nil, home COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6) );
 # endif
 #endif
     }
@@ -515,7 +515,7 @@
      ArgArray must be either an Array or nil.
      The size of the argArray must match the number of arguments the receiver expects."
 
-    |a1 a2 a3 a4 a5 a6 a7|
+    |a1 a2 a3 a4 a5 a6 a7 a8|
 
     (argArray notNil and:[argArray class ~~ Array]) ifTrue:[
 	^ self badArgumentArry
@@ -534,9 +534,49 @@
     if (__ISVALID_ILC_LNO(__pilc))
 	    _ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
 #endif
+    thecode = _BlockInstPtr(self)->b_code;
+
+#ifndef NEW_BLOCK_CALL
+    home = _BlockInstPtr(self)->b_home;
+    if (thecode != (OBJFUNC)nil) {
+        switch (nargs = _intVal(_INST(nargs))) {
+            default:
+                goto error;
+            case 8:
+                ap = _ArrayInstPtr(argArray)->a_element;
+	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7]) );
+            case 7:
+                ap = _ArrayInstPtr(argArray)->a_element;
+	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6]) );
+            case 6:
+                ap = _ArrayInstPtr(argArray)->a_element;
+	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4], ap[5]) );
+            case 5:
+                ap = _ArrayInstPtr(argArray)->a_element;
+	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4]) );
+            case 4:
+                ap = _ArrayInstPtr(argArray)->a_element;
+	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3]) );
+            case 3:
+                ap = _ArrayInstPtr(argArray)->a_element;
+	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2]) );
+            case 2:
+                ap = _ArrayInstPtr(argArray)->a_element;
+	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1]) );
+            case 1:
+	        RETURN ( (*thecode)(home COMMA_SND, _ArrayInstPtr(argArray)->a_element[0]) );
+            case 0:
+	        RETURN ( (*thecode)(home COMMA_SND) );
+                break;
+	}
+    }
+#endif
+
     switch (nargs = _intVal(_INST(nargs))) {
 	default:
 	    goto error;
+	case 8:
+	    a8 = _ArrayInstPtr(argArray)->a_element[7];
 	case 7:
 	    a7 = _ArrayInstPtr(argArray)->a_element[6];
 	case 6:
@@ -554,28 +594,24 @@
 	case 0:
 	    break;
     }
-    thecode = _BlockInstPtr(self)->b_code;
 #ifdef NEW_BLOCK_CALL
     if (thecode != (OBJFUNC)nil) {
-	RETURN ( (*thecode)(self COMMA_SND, a1, a2, a3, a4, a5, a6, a7) );
+	RETURN ( (*thecode)(self COMMA_SND, a1, a2, a3, a4, a5, a6, a7, a8) );
     }
 # ifdef PASS_ARG_POINTER
     RETURN ( __interpret(self, nargs, nil, nil COMMA_SND, nil, &a1) );
 # else
-    RETURN ( interpret(self, nargs, nil, nil COMMA_SND, nil, 
-		       a1, a2, a3, a4, a5, a6, a7) );
+    RETURN ( __interpret(self, nargs, nil, nil COMMA_SND, nil, a1, a2, a3, a4, a5, a6, a7, a8) );
 # endif
+
 #else
-    home = _BlockInstPtr(self)->b_home;
-    if (thecode != (OBJFUNC)nil) {
-	RETURN ( (*thecode)(home COMMA_SND, a1, a2, a3, a4, a5, a6, a7) );
-    }
+
 # ifdef PASS_ARG_POINTER
     RETURN ( __interpret(self, nargs, nil, home COMMA_SND, nil, &a1) );
 # else
-    RETURN ( interpret(self, nargs, nil, home COMMA_SND, nil, 
-		       a1, a2, a3, a4, a5, a6, a7) );
+    RETURN ( __interpret(self, nargs, nil, home COMMA_SND, nil, a1, a2, a3, a4, a5, a6, a7, a8) );
 # endif
+
 #endif
 
 error: ;