--- a/Block.st Thu Aug 07 17:05:44 1997 +0200
+++ b/Block.st Thu Aug 07 17:33:00 1997 +0200
@@ -881,7 +881,7 @@
|a1 a2 a3 a4 a5 a6 a7 a8|
- (argArray notNil and:[argArray class ~~ Array]) ifTrue:[
+ (argArray notNil and:[(argArray class ~~ Array) and:[argArray isArray not]]) ifTrue:[
^ self badArgumentArry
].
(argArray size == nargs) ifFalse:[
@@ -892,7 +892,8 @@
REGISTER OBJFUNC thecode;
OBJ home;
REGISTER OBJ *ap;
- int nargs;
+ int __nargs;
+ OBJ nA;
#if defined(THIS_CONTEXT)
if (__ISVALID_ILC_LNO(__pilc))
@@ -903,7 +904,11 @@
#ifndef NEW_BLOCK_CALL
home = __BlockInstPtr(self)->b_home;
if (thecode != (OBJFUNC)nil) {
- switch (nargs = __intVal(__INST(nargs))) {
+ if ((nA = __INST(nargs)) == __MKSMALLINT(0)) {
+ RETURN ( (*thecode)(home) );
+ }
+
+ switch (__intVal(__INST(nargs))) {
default:
goto error;
case 8:
@@ -936,27 +941,30 @@
}
#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:
- a6 = __ArrayInstPtr(argArray)->a_element[5];
- case 5:
- a5 = __ArrayInstPtr(argArray)->a_element[4];
- case 4:
- a4 = __ArrayInstPtr(argArray)->a_element[3];
- case 3:
- a3 = __ArrayInstPtr(argArray)->a_element[2];
- case 2:
- a2 = __ArrayInstPtr(argArray)->a_element[1];
- case 1:
- a1 = __ArrayInstPtr(argArray)->a_element[0];
- case 0:
- break;
+ __nargs = __intVal(__INST(nargs));
+ if (__nargs) {
+ switch (__nargs) {
+ default:
+ goto error;
+ case 8:
+ a8 = __ArrayInstPtr(argArray)->a_element[7];
+ case 7:
+ a7 = __ArrayInstPtr(argArray)->a_element[6];
+ case 6:
+ a6 = __ArrayInstPtr(argArray)->a_element[5];
+ case 5:
+ a5 = __ArrayInstPtr(argArray)->a_element[4];
+ case 4:
+ a4 = __ArrayInstPtr(argArray)->a_element[3];
+ case 3:
+ a3 = __ArrayInstPtr(argArray)->a_element[2];
+ case 2:
+ a2 = __ArrayInstPtr(argArray)->a_element[1];
+ case 1:
+ a1 = __ArrayInstPtr(argArray)->a_element[0];
+ case 0:
+ break;
+ }
}
#ifdef NEW_BLOCK_CALL
@@ -964,24 +972,23 @@
RETURN ( (*thecode)(self, a1, a2, a3, a4, a5, a6, a7, a8) );
}
# ifdef PASS_ARG_POINTER
- RETURN ( __interpret(self, nargs, nil, nil, nil, nil, &a1) );
+ RETURN ( __interpret(self, __nargs, nil, nil, nil, nil, &a1) );
# else
- RETURN ( __interpret(self, nargs, nil, nil, nil, nil, a1, a2, a3, a4, a5, a6, a7, a8) );
+ RETURN ( __interpret(self, __nargs, nil, nil, nil, nil, a1, a2, a3, a4, a5, a6, a7, a8) );
# endif
#else
# ifdef PASS_ARG_POINTER
- RETURN ( __interpret(self, nargs, nil, home, nil, nil, &a1) );
+ RETURN ( __interpret(self, __nargs, nil, home, nil, nil, &a1) );
# else
- RETURN ( __interpret(self, nargs, nil, home, nil, nil, a1, a2, a3, a4, a5, a6, a7, a8) );
+ RETURN ( __interpret(self, __nargs, nil, home, nil, nil, a1, a2, a3, a4, a5, a6, a7, a8) );
# endif
#endif
error: ;
-%}
-.
+%}.
"
the above code only supports up-to 7 arguments
"
@@ -1217,17 +1224,18 @@
aStream nextPut:$-.
sel printOn:aStream.
-"
- aStream nextPutAll:'[] in '.
- homeClass := home containingClass.
- homeClass notNil ifTrue:[
- homeClass name printOn:aStream.
- aStream space.
- (homeClass selectorForMethod:home) printOn:aStream
- ] ifFalse:[
- aStream nextPutAll:' ???'
- ]
-"
+"/
+"/ aStream nextPutAll:'[] in '.
+"/ homeClass := home containingClass.
+"/ homeClass notNil ifTrue:[
+"/ homeClass name printOn:aStream.
+"/ aStream space.
+"/ (homeClass selectorForMethod:home) printOn:aStream
+"/ ] ifFalse:[
+"/ aStream nextPutAll:' ???'
+"/ ]
+"/
+
! !
!Block methodsFor:'private accessing'!
@@ -1441,6 +1449,6 @@
!Block class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.76 1997-07-31 22:32:08 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.77 1997-08-07 15:33:00 cg Exp $'
! !
Block initialize!