Block.st
changeset 1133 961f2b095c22
parent 1041 12e2524284e2
child 1181 6637fee79d7b
equal deleted inserted replaced
1132:b09ce8542506 1133:961f2b095c22
    79     NOTICE: layout known by runtime system and compiler - do not change
    79     NOTICE: layout known by runtime system and compiler - do not change
    80 "
    80 "
    81 !
    81 !
    82 
    82 
    83 version
    83 version
    84     ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.46 1996-02-29 02:23:23 cg Exp $'
    84     ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.47 1996-04-02 21:59:04 cg Exp $'
    85 ! !
    85 ! !
    86 
    86 
    87 !Block class methodsFor:'initialization'!
    87 !Block class methodsFor:'initialization'!
    88 
    88 
    89 initialize
    89 initialize
   229 %{  /* NOCONTEXT */
   229 %{  /* NOCONTEXT */
   230 
   230 
   231     REGISTER OBJFUNC thecode;
   231     REGISTER OBJFUNC thecode;
   232     OBJ home;
   232     OBJ home;
   233 
   233 
   234     if (_INST(nargs) == _MKSMALLINT(0)) {
   234     if (__INST(nargs) == __MKSMALLINT(0)) {
   235 #if defined(THIS_CONTEXT)
   235 #if defined(THIS_CONTEXT)
   236 	if (__ISVALID_ILC_LNO(__pilc))
   236 	if (__ISVALID_ILC_LNO(__pilc))
   237 	    _ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   237 	    __ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   238 #endif
   238 #endif
   239 
   239 
   240 	thecode = _BlockInstPtr(self)->b_code;
   240 	thecode = __BlockInstPtr(self)->b_code;
   241 #ifdef NEW_BLOCK_CALL
   241 #ifdef NEW_BLOCK_CALL
   242 	if (thecode != (OBJFUNC)nil) {
   242 	if (thecode != (OBJFUNC)nil) {
   243 	    /* compiled machine code */
   243 	    /* compiled machine code */
   244 	    RETURN ( (*thecode)(self, COMMA_SND) );
   244 	    RETURN ( (*thecode)(self, COMMA_SND) );
   245 	}
   245 	}
   248 	RETURN ( __interpret(self, 0, nil, nil COMMA_SND, nil) );
   248 	RETURN ( __interpret(self, 0, nil, nil COMMA_SND, nil) );
   249 # else
   249 # else
   250 	RETURN ( __interpret(self, 0, nil, nil COMMA_SND, nil) );
   250 	RETURN ( __interpret(self, 0, nil, nil COMMA_SND, nil) );
   251 # endif
   251 # endif
   252 #else
   252 #else
   253 	home = _BlockInstPtr(self)->b_home;
   253 	home = __BlockInstPtr(self)->b_home;
   254 	if (thecode != (OBJFUNC)nil) {
   254 	if (thecode != (OBJFUNC)nil) {
   255 	    /* compiled machine code */
   255 	    /* compiled machine code */
   256 	    RETURN ( (*thecode)(home COMMA_SND) );
   256 	    RETURN ( (*thecode)(home COMMA_SND) );
   257 	}
   257 	}
   258 	/* interpreted code */
   258 	/* interpreted code */
   274 %{  /* NOCONTEXT */
   274 %{  /* NOCONTEXT */
   275 
   275 
   276     REGISTER OBJFUNC thecode;
   276     REGISTER OBJFUNC thecode;
   277     OBJ home;
   277     OBJ home;
   278 
   278 
   279     if (_INST(nargs) == _MKSMALLINT(1)) {
   279     if (__INST(nargs) == __MKSMALLINT(1)) {
   280 #if defined(THIS_CONTEXT)
   280 #if defined(THIS_CONTEXT)
   281 	if (__ISVALID_ILC_LNO(__pilc))
   281 	if (__ISVALID_ILC_LNO(__pilc))
   282 	    _ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   282 	    __ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   283 #endif
   283 #endif
   284 	thecode = _BlockInstPtr(self)->b_code;
   284 	thecode = __BlockInstPtr(self)->b_code;
   285 #ifdef NEW_BLOCK_CALL
   285 #ifdef NEW_BLOCK_CALL
   286 	if (thecode != (OBJFUNC)nil) {
   286 	if (thecode != (OBJFUNC)nil) {
   287 	    RETURN ( (*thecode)(self COMMA_SND, arg) );
   287 	    RETURN ( (*thecode)(self COMMA_SND, arg) );
   288 	}
   288 	}
   289 	/* interpreted code */
   289 	/* interpreted code */
   291 	RETURN ( __interpret(self, 1, nil, nil COMMA_SND, nil, &arg) );
   291 	RETURN ( __interpret(self, 1, nil, nil COMMA_SND, nil, &arg) );
   292 # else
   292 # else
   293 	RETURN ( __interpret(self, 1, nil, nil COMMA_SND, nil, arg) );
   293 	RETURN ( __interpret(self, 1, nil, nil COMMA_SND, nil, arg) );
   294 # endif
   294 # endif
   295 #else
   295 #else
   296 	home = _BlockInstPtr(self)->b_home;
   296 	home = __BlockInstPtr(self)->b_home;
   297 	if (thecode != (OBJFUNC)nil) {
   297 	if (thecode != (OBJFUNC)nil) {
   298 	    RETURN ( (*thecode)(home COMMA_SND, arg) );
   298 	    RETURN ( (*thecode)(home COMMA_SND, arg) );
   299 	}
   299 	}
   300 	/* interpreted code */
   300 	/* interpreted code */
   301 # ifdef PASS_ARG_POINTER
   301 # ifdef PASS_ARG_POINTER
   316 %{  /* NOCONTEXT */
   316 %{  /* NOCONTEXT */
   317 
   317 
   318     REGISTER OBJFUNC thecode;
   318     REGISTER OBJFUNC thecode;
   319     OBJ home;
   319     OBJ home;
   320 
   320 
   321     if (_INST(nargs) == _MKSMALLINT(2)) {
   321     if (__INST(nargs) == __MKSMALLINT(2)) {
   322 #if defined(THIS_CONTEXT)
   322 #if defined(THIS_CONTEXT)
   323 	if (__ISVALID_ILC_LNO(__pilc))
   323 	if (__ISVALID_ILC_LNO(__pilc))
   324 	    _ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   324 	    __ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   325 #endif
   325 #endif
   326 	thecode = _BlockInstPtr(self)->b_code;
   326 	thecode = __BlockInstPtr(self)->b_code;
   327 #ifdef NEW_BLOCK_CALL
   327 #ifdef NEW_BLOCK_CALL
   328 	if (thecode != (OBJFUNC)nil) {
   328 	if (thecode != (OBJFUNC)nil) {
   329 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2) );
   329 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2) );
   330 	}
   330 	}
   331 # ifdef PASS_ARG_POINTER
   331 # ifdef PASS_ARG_POINTER
   332 	RETURN ( __interpret(self, 2, nil, nil COMMA_SND, nil, &arg1) );
   332 	RETURN ( __interpret(self, 2, nil, nil COMMA_SND, nil, &arg1) );
   333 # else
   333 # else
   334 	RETURN ( __interpret(self, 2, nil, nil COMMA_SND, nil, arg1, arg2) );
   334 	RETURN ( __interpret(self, 2, nil, nil COMMA_SND, nil, arg1, arg2) );
   335 # endif
   335 # endif
   336 #else
   336 #else
   337 	home = _BlockInstPtr(self)->b_home;
   337 	home = __BlockInstPtr(self)->b_home;
   338 	if (thecode != (OBJFUNC)nil) {
   338 	if (thecode != (OBJFUNC)nil) {
   339 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2) );
   339 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2) );
   340 	}
   340 	}
   341 # ifdef PASS_ARG_POINTER
   341 # ifdef PASS_ARG_POINTER
   342 	RETURN ( __interpret(self, 2, nil, home COMMA_SND, nil, &arg1) );
   342 	RETURN ( __interpret(self, 2, nil, home COMMA_SND, nil, &arg1) );
   356 %{  /* NOCONTEXT */
   356 %{  /* NOCONTEXT */
   357 
   357 
   358     REGISTER OBJFUNC thecode;
   358     REGISTER OBJFUNC thecode;
   359     OBJ home;
   359     OBJ home;
   360 
   360 
   361     if (_INST(nargs) == _MKSMALLINT(3)) {
   361     if (__INST(nargs) == __MKSMALLINT(3)) {
   362 #if defined(THIS_CONTEXT)
   362 #if defined(THIS_CONTEXT)
   363 	if (__ISVALID_ILC_LNO(__pilc))
   363 	if (__ISVALID_ILC_LNO(__pilc))
   364 	    _ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   364 	    __ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   365 #endif
   365 #endif
   366 	thecode = _BlockInstPtr(self)->b_code;
   366 	thecode = __BlockInstPtr(self)->b_code;
   367 #ifdef NEW_BLOCK_CALL
   367 #ifdef NEW_BLOCK_CALL
   368 	if (thecode != (OBJFUNC)nil) {
   368 	if (thecode != (OBJFUNC)nil) {
   369 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3) );
   369 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3) );
   370 	}
   370 	}
   371 # ifdef PASS_ARG_POINTER
   371 # ifdef PASS_ARG_POINTER
   372 	RETURN ( __interpret(self, 3, nil, nil COMMA_SND, nil, &arg1) );
   372 	RETURN ( __interpret(self, 3, nil, nil COMMA_SND, nil, &arg1) );
   373 # else
   373 # else
   374 	RETURN ( __interpret(self, 3, nil, nil COMMA_SND, nil, arg1, arg2, arg3) );
   374 	RETURN ( __interpret(self, 3, nil, nil COMMA_SND, nil, arg1, arg2, arg3) );
   375 # endif
   375 # endif
   376 #else
   376 #else
   377 	home = _BlockInstPtr(self)->b_home;
   377 	home = __BlockInstPtr(self)->b_home;
   378 	if (thecode != (OBJFUNC)nil) {
   378 	if (thecode != (OBJFUNC)nil) {
   379 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3) );
   379 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3) );
   380 	}
   380 	}
   381 # ifdef PASS_ARG_POINTER
   381 # ifdef PASS_ARG_POINTER
   382 	RETURN ( __interpret(self, 3, nil, home COMMA_SND, nil, &arg1) );
   382 	RETURN ( __interpret(self, 3, nil, home COMMA_SND, nil, &arg1) );
   396 %{  /* NOCONTEXT */
   396 %{  /* NOCONTEXT */
   397 
   397 
   398     REGISTER OBJFUNC thecode;
   398     REGISTER OBJFUNC thecode;
   399     OBJ home;
   399     OBJ home;
   400 
   400 
   401     if (_INST(nargs) == _MKSMALLINT(4)) {
   401     if (__INST(nargs) == __MKSMALLINT(4)) {
   402 #if defined(THIS_CONTEXT)
   402 #if defined(THIS_CONTEXT)
   403 	if (__ISVALID_ILC_LNO(__pilc))
   403 	if (__ISVALID_ILC_LNO(__pilc))
   404 	    _ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   404 	    __ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   405 #endif
   405 #endif
   406 	thecode = _BlockInstPtr(self)->b_code;
   406 	thecode = __BlockInstPtr(self)->b_code;
   407 #ifdef NEW_BLOCK_CALL
   407 #ifdef NEW_BLOCK_CALL
   408 	if (thecode != (OBJFUNC)nil) {
   408 	if (thecode != (OBJFUNC)nil) {
   409 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4) );
   409 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4) );
   410 	}
   410 	}
   411 # ifdef PASS_ARG_POINTER
   411 # ifdef PASS_ARG_POINTER
   412 	RETURN ( __interpret(self, 4, nil, nil COMMA_SND, nil, &arg1) );
   412 	RETURN ( __interpret(self, 4, nil, nil COMMA_SND, nil, &arg1) );
   413 # else
   413 # else
   414 	RETURN ( __interpret(self, 4, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4) );
   414 	RETURN ( __interpret(self, 4, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4) );
   415 # endif
   415 # endif
   416 #else
   416 #else
   417 	home = _BlockInstPtr(self)->b_home;
   417 	home = __BlockInstPtr(self)->b_home;
   418 	if (thecode != (OBJFUNC)nil) {
   418 	if (thecode != (OBJFUNC)nil) {
   419 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4) );
   419 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4) );
   420 	}
   420 	}
   421 # ifdef PASS_ARG_POINTER
   421 # ifdef PASS_ARG_POINTER
   422 	RETURN ( __interpret(self, 4, nil, home COMMA_SND, nil, &arg1) );
   422 	RETURN ( __interpret(self, 4, nil, home COMMA_SND, nil, &arg1) );
   436 %{  /* NOCONTEXT */
   436 %{  /* NOCONTEXT */
   437 
   437 
   438     REGISTER OBJFUNC thecode;
   438     REGISTER OBJFUNC thecode;
   439     OBJ home;
   439     OBJ home;
   440 
   440 
   441     if (_INST(nargs) == _MKSMALLINT(5)) {
   441     if (__INST(nargs) == __MKSMALLINT(5)) {
   442 #if defined(THIS_CONTEXT)
   442 #if defined(THIS_CONTEXT)
   443 	if (__ISVALID_ILC_LNO(__pilc))
   443 	if (__ISVALID_ILC_LNO(__pilc))
   444 	    _ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   444 	    __ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   445 #endif
   445 #endif
   446 	thecode = _BlockInstPtr(self)->b_code;
   446 	thecode = __BlockInstPtr(self)->b_code;
   447 #ifdef NEW_BLOCK_CALL
   447 #ifdef NEW_BLOCK_CALL
   448 	if (thecode != (OBJFUNC)nil) {
   448 	if (thecode != (OBJFUNC)nil) {
   449 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5) );
   449 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5) );
   450 	}
   450 	}
   451 # ifdef PASS_ARG_POINTER
   451 # ifdef PASS_ARG_POINTER
   452 	RETURN ( __interpret(self, 5, nil, nil COMMA_SND, nil, &arg1) );
   452 	RETURN ( __interpret(self, 5, nil, nil COMMA_SND, nil, &arg1) );
   453 # else
   453 # else
   454 	RETURN ( __interpret(self, 5, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5) );
   454 	RETURN ( __interpret(self, 5, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5) );
   455 # endif
   455 # endif
   456 #else
   456 #else
   457 	home = _BlockInstPtr(self)->b_home;
   457 	home = __BlockInstPtr(self)->b_home;
   458 	if (thecode != (OBJFUNC)nil) {
   458 	if (thecode != (OBJFUNC)nil) {
   459 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5) );
   459 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5) );
   460 	}
   460 	}
   461 # ifdef PASS_ARG_POINTER
   461 # ifdef PASS_ARG_POINTER
   462 	RETURN ( __interpret(self, 5, nil, home COMMA_SND, nil, &arg1) );
   462 	RETURN ( __interpret(self, 5, nil, home COMMA_SND, nil, &arg1) );
   476 %{  /* NOCONTEXT */
   476 %{  /* NOCONTEXT */
   477 
   477 
   478     REGISTER OBJFUNC thecode;
   478     REGISTER OBJFUNC thecode;
   479     OBJ home;
   479     OBJ home;
   480 
   480 
   481     if (_INST(nargs) == _MKSMALLINT(6)) {
   481     if (__INST(nargs) == __MKSMALLINT(6)) {
   482 #if defined(THIS_CONTEXT)
   482 #if defined(THIS_CONTEXT)
   483 	if (__ISVALID_ILC_LNO(__pilc))
   483 	if (__ISVALID_ILC_LNO(__pilc))
   484 	    _ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   484 	    __ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   485 #endif
   485 #endif
   486 	thecode = _BlockInstPtr(self)->b_code;
   486 	thecode = __BlockInstPtr(self)->b_code;
   487 #ifdef NEW_BLOCK_CALL
   487 #ifdef NEW_BLOCK_CALL
   488 	if (thecode != (OBJFUNC)nil) {
   488 	if (thecode != (OBJFUNC)nil) {
   489 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6) );
   489 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6) );
   490 	}
   490 	}
   491 # ifdef PASS_ARG_POINTER
   491 # ifdef PASS_ARG_POINTER
   492 	RETURN ( __interpret(self, 6, nil, nil COMMA_SND, nil, &arg1) );
   492 	RETURN ( __interpret(self, 6, nil, nil COMMA_SND, nil, &arg1) );
   493 # else
   493 # else
   494 	RETURN ( __interpret(self, 6, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6) );
   494 	RETURN ( __interpret(self, 6, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6) );
   495 # endif
   495 # endif
   496 #else
   496 #else
   497 	home = _BlockInstPtr(self)->b_home;
   497 	home = __BlockInstPtr(self)->b_home;
   498 	if (thecode != (OBJFUNC)nil) {
   498 	if (thecode != (OBJFUNC)nil) {
   499 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6) );
   499 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6) );
   500 	}
   500 	}
   501 # ifdef PASS_ARG_POINTER
   501 # ifdef PASS_ARG_POINTER
   502 	RETURN ( __interpret(self, 6, nil, home COMMA_SND, nil, &arg1) );
   502 	RETURN ( __interpret(self, 6, nil, home COMMA_SND, nil, &arg1) );
   530     REGISTER OBJ *ap;
   530     REGISTER OBJ *ap;
   531     int nargs;
   531     int nargs;
   532 
   532 
   533 #if defined(THIS_CONTEXT)
   533 #if defined(THIS_CONTEXT)
   534     if (__ISVALID_ILC_LNO(__pilc))
   534     if (__ISVALID_ILC_LNO(__pilc))
   535 	    _ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   535 	    __ContextInstPtr(__thisContext)->c_lineno = __ILC_LNO_AS_OBJ(__pilc);
   536 #endif
   536 #endif
   537     thecode = _BlockInstPtr(self)->b_code;
   537     thecode = __BlockInstPtr(self)->b_code;
   538 
   538 
   539 #ifndef NEW_BLOCK_CALL
   539 #ifndef NEW_BLOCK_CALL
   540     home = _BlockInstPtr(self)->b_home;
   540     home = __BlockInstPtr(self)->b_home;
   541     if (thecode != (OBJFUNC)nil) {
   541     if (thecode != (OBJFUNC)nil) {
   542         switch (nargs = _intVal(_INST(nargs))) {
   542         switch (nargs = __intVal(__INST(nargs))) {
   543             default:
   543             default:
   544                 goto error;
   544                 goto error;
   545             case 8:
   545             case 8:
   546                 ap = _ArrayInstPtr(argArray)->a_element;
   546                 ap = __ArrayInstPtr(argArray)->a_element;
   547 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7]) );
   547 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7]) );
   548             case 7:
   548             case 7:
   549                 ap = _ArrayInstPtr(argArray)->a_element;
   549                 ap = __ArrayInstPtr(argArray)->a_element;
   550 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6]) );
   550 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6]) );
   551             case 6:
   551             case 6:
   552                 ap = _ArrayInstPtr(argArray)->a_element;
   552                 ap = __ArrayInstPtr(argArray)->a_element;
   553 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4], ap[5]) );
   553 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4], ap[5]) );
   554             case 5:
   554             case 5:
   555                 ap = _ArrayInstPtr(argArray)->a_element;
   555                 ap = __ArrayInstPtr(argArray)->a_element;
   556 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4]) );
   556 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3], ap[4]) );
   557             case 4:
   557             case 4:
   558                 ap = _ArrayInstPtr(argArray)->a_element;
   558                 ap = __ArrayInstPtr(argArray)->a_element;
   559 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3]) );
   559 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2], ap[3]) );
   560             case 3:
   560             case 3:
   561                 ap = _ArrayInstPtr(argArray)->a_element;
   561                 ap = __ArrayInstPtr(argArray)->a_element;
   562 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2]) );
   562 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1], ap[2]) );
   563             case 2:
   563             case 2:
   564                 ap = _ArrayInstPtr(argArray)->a_element;
   564                 ap = __ArrayInstPtr(argArray)->a_element;
   565 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1]) );
   565 	        RETURN ( (*thecode)(home COMMA_SND, ap[0], ap[1]) );
   566             case 1:
   566             case 1:
   567 	        RETURN ( (*thecode)(home COMMA_SND, _ArrayInstPtr(argArray)->a_element[0]) );
   567 	        RETURN ( (*thecode)(home COMMA_SND, __ArrayInstPtr(argArray)->a_element[0]) );
   568             case 0:
   568             case 0:
   569 	        RETURN ( (*thecode)(home COMMA_SND) );
   569 	        RETURN ( (*thecode)(home COMMA_SND) );
   570                 break;
   570                 break;
   571 	}
   571 	}
   572     }
   572     }
   573 #endif
   573 #endif
   574 
   574 
   575     switch (nargs = _intVal(_INST(nargs))) {
   575     switch (nargs = __intVal(__INST(nargs))) {
   576 	default:
   576 	default:
   577 	    goto error;
   577 	    goto error;
   578 	case 8:
   578 	case 8:
   579 	    a8 = _ArrayInstPtr(argArray)->a_element[7];
   579 	    a8 = __ArrayInstPtr(argArray)->a_element[7];
   580 	case 7:
   580 	case 7:
   581 	    a7 = _ArrayInstPtr(argArray)->a_element[6];
   581 	    a7 = __ArrayInstPtr(argArray)->a_element[6];
   582 	case 6:
   582 	case 6:
   583 	    a6 = _ArrayInstPtr(argArray)->a_element[5];
   583 	    a6 = __ArrayInstPtr(argArray)->a_element[5];
   584 	case 5:
   584 	case 5:
   585 	    a5 = _ArrayInstPtr(argArray)->a_element[4];
   585 	    a5 = __ArrayInstPtr(argArray)->a_element[4];
   586 	case 4:
   586 	case 4:
   587 	    a4 = _ArrayInstPtr(argArray)->a_element[3];
   587 	    a4 = __ArrayInstPtr(argArray)->a_element[3];
   588 	case 3:
   588 	case 3:
   589 	    a3 = _ArrayInstPtr(argArray)->a_element[2];
   589 	    a3 = __ArrayInstPtr(argArray)->a_element[2];
   590 	case 2:
   590 	case 2:
   591 	    a2 = _ArrayInstPtr(argArray)->a_element[1];
   591 	    a2 = __ArrayInstPtr(argArray)->a_element[1];
   592 	case 1:
   592 	case 1:
   593 	    a1 = _ArrayInstPtr(argArray)->a_element[0];
   593 	    a1 = __ArrayInstPtr(argArray)->a_element[0];
   594 	case 0:
   594 	case 0:
   595 	    break;
   595 	    break;
   596     }
   596     }
       
   597 
   597 #ifdef NEW_BLOCK_CALL
   598 #ifdef NEW_BLOCK_CALL
   598     if (thecode != (OBJFUNC)nil) {
   599     if (thecode != (OBJFUNC)nil) {
   599 	RETURN ( (*thecode)(self COMMA_SND, a1, a2, a3, a4, a5, a6, a7, a8) );
   600 	RETURN ( (*thecode)(self COMMA_SND, a1, a2, a3, a4, a5, a6, a7, a8) );
   600     }
   601     }
   601 # ifdef PASS_ARG_POINTER
   602 # ifdef PASS_ARG_POINTER