Block.st
changeset 1672 1b56d6e95c9e
parent 1626 b3b69b572627
child 1773 442d1b73ecb9
equal deleted inserted replaced
1671:cceee8a44757 1672:1b56d6e95c9e
   480 	    /* compiled machine code */
   480 	    /* compiled machine code */
   481 	    RETURN ( (*thecode)(self, COMMA_SND) );
   481 	    RETURN ( (*thecode)(self, COMMA_SND) );
   482 	}
   482 	}
   483 	/* interpreted code */
   483 	/* interpreted code */
   484 # ifdef PASS_ARG_POINTER
   484 # ifdef PASS_ARG_POINTER
   485 	RETURN ( __interpret(self, 0, nil, nil COMMA_SND, nil) );
   485 	RETURN ( __interpret(self, 0, nil, nil COMMA_SND, nil, nil) );
   486 # else
   486 # else
   487 	RETURN ( __interpret(self, 0, nil, nil COMMA_SND, nil) );
   487 	RETURN ( __interpret(self, 0, nil, nil COMMA_SND, nil, nil) );
   488 # endif
   488 # endif
   489 #else
   489 #else
   490 	home = __BlockInstPtr(self)->b_home;
   490 	home = __BlockInstPtr(self)->b_home;
   491 	if (thecode != (OBJFUNC)nil) {
   491 	if (thecode != (OBJFUNC)nil) {
   492 	    /* compiled machine code */
   492 	    /* compiled machine code */
   493 	    RETURN ( (*thecode)(home COMMA_SND) );
   493 	    RETURN ( (*thecode)(home COMMA_SND) );
   494 	}
   494 	}
   495 	/* interpreted code */
   495 	/* interpreted code */
   496 # ifdef PASS_ARG_POINTER
   496 # ifdef PASS_ARG_POINTER
   497 	RETURN ( __interpret(self, 0, nil, home COMMA_SND, nil) );
   497 	RETURN ( __interpret(self, 0, nil, home COMMA_SND, nil, nil) );
   498 # else
   498 # else
   499 	RETURN ( __interpret(self, 0, nil, home COMMA_SND, nil) );
   499 	RETURN ( __interpret(self, 0, nil, home COMMA_SND, nil, nil) );
   500 # endif
   500 # endif
   501 #endif
   501 #endif
   502     }
   502     }
   503 %}.
   503 %}.
   504     ^ self wrongNumberOfArguments:0
   504     ^ self wrongNumberOfArguments:0
   523 	if (thecode != (OBJFUNC)nil) {
   523 	if (thecode != (OBJFUNC)nil) {
   524 	    RETURN ( (*thecode)(self COMMA_SND, arg) );
   524 	    RETURN ( (*thecode)(self COMMA_SND, arg) );
   525 	}
   525 	}
   526 	/* interpreted code */
   526 	/* interpreted code */
   527 # ifdef PASS_ARG_POINTER
   527 # ifdef PASS_ARG_POINTER
   528 	RETURN ( __interpret(self, 1, nil, nil COMMA_SND, nil, &arg) );
   528 	RETURN ( __interpret(self, 1, nil, nil COMMA_SND, nil, nil, &arg) );
   529 # else
   529 # else
   530 	RETURN ( __interpret(self, 1, nil, nil COMMA_SND, nil, arg) );
   530 	RETURN ( __interpret(self, 1, nil, nil COMMA_SND, nil, nil, arg) );
   531 # endif
   531 # endif
   532 #else
   532 #else
   533 	home = __BlockInstPtr(self)->b_home;
   533 	home = __BlockInstPtr(self)->b_home;
   534 	if (thecode != (OBJFUNC)nil) {
   534 	if (thecode != (OBJFUNC)nil) {
   535 	    RETURN ( (*thecode)(home COMMA_SND, arg) );
   535 	    RETURN ( (*thecode)(home COMMA_SND, arg) );
   536 	}
   536 	}
   537 	/* interpreted code */
   537 	/* interpreted code */
   538 # ifdef PASS_ARG_POINTER
   538 # ifdef PASS_ARG_POINTER
   539 	RETURN ( __interpret(self, 1, nil, home COMMA_SND, nil, &arg) );
   539 	RETURN ( __interpret(self, 1, nil, home COMMA_SND, nil, nil, &arg) );
   540 # else
   540 # else
   541 	RETURN ( __interpret(self, 1, nil, home COMMA_SND, nil, arg) );
   541 	RETURN ( __interpret(self, 1, nil, home COMMA_SND, nil, nil, arg) );
   542 # endif
   542 # endif
   543 #endif
   543 #endif
   544     }
   544     }
   545 %}.
   545 %}.
   546     ^ self wrongNumberOfArguments:1
   546     ^ self wrongNumberOfArguments:1
   564 #ifdef NEW_BLOCK_CALL
   564 #ifdef NEW_BLOCK_CALL
   565 	if (thecode != (OBJFUNC)nil) {
   565 	if (thecode != (OBJFUNC)nil) {
   566 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2) );
   566 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2) );
   567 	}
   567 	}
   568 # ifdef PASS_ARG_POINTER
   568 # ifdef PASS_ARG_POINTER
   569 	RETURN ( __interpret(self, 2, nil, nil COMMA_SND, nil, &arg1) );
   569 	RETURN ( __interpret(self, 2, nil, nil COMMA_SND, nil, nil, &arg1) );
   570 # else
   570 # else
   571 	RETURN ( __interpret(self, 2, nil, nil COMMA_SND, nil, arg1, arg2) );
   571 	RETURN ( __interpret(self, 2, nil, nil COMMA_SND, nil, nil, arg1, arg2) );
   572 # endif
   572 # endif
   573 #else
   573 #else
   574 	home = __BlockInstPtr(self)->b_home;
   574 	home = __BlockInstPtr(self)->b_home;
   575 	if (thecode != (OBJFUNC)nil) {
   575 	if (thecode != (OBJFUNC)nil) {
   576 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2) );
   576 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2) );
   577 	}
   577 	}
   578 # ifdef PASS_ARG_POINTER
   578 # ifdef PASS_ARG_POINTER
   579 	RETURN ( __interpret(self, 2, nil, home COMMA_SND, nil, &arg1) );
   579 	RETURN ( __interpret(self, 2, nil, home COMMA_SND, nil, nil, &arg1) );
   580 # else
   580 # else
   581 	RETURN ( __interpret(self, 2, nil, home COMMA_SND, nil, arg1, arg2) );
   581 	RETURN ( __interpret(self, 2, nil, home COMMA_SND, nil, nil, arg1, arg2) );
   582 # endif
   582 # endif
   583 #endif
   583 #endif
   584     }
   584     }
   585 %}.
   585 %}.
   586     ^ self wrongNumberOfArguments:2
   586     ^ self wrongNumberOfArguments:2
   604 #ifdef NEW_BLOCK_CALL
   604 #ifdef NEW_BLOCK_CALL
   605 	if (thecode != (OBJFUNC)nil) {
   605 	if (thecode != (OBJFUNC)nil) {
   606 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3) );
   606 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3) );
   607 	}
   607 	}
   608 # ifdef PASS_ARG_POINTER
   608 # ifdef PASS_ARG_POINTER
   609 	RETURN ( __interpret(self, 3, nil, nil COMMA_SND, nil, &arg1) );
   609 	RETURN ( __interpret(self, 3, nil, nil COMMA_SND, nil, nil, &arg1) );
   610 # else
   610 # else
   611 	RETURN ( __interpret(self, 3, nil, nil COMMA_SND, nil, arg1, arg2, arg3) );
   611 	RETURN ( __interpret(self, 3, nil, nil COMMA_SND, nil, nil, arg1, arg2, arg3) );
   612 # endif
   612 # endif
   613 #else
   613 #else
   614 	home = __BlockInstPtr(self)->b_home;
   614 	home = __BlockInstPtr(self)->b_home;
   615 	if (thecode != (OBJFUNC)nil) {
   615 	if (thecode != (OBJFUNC)nil) {
   616 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3) );
   616 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3) );
   617 	}
   617 	}
   618 # ifdef PASS_ARG_POINTER
   618 # ifdef PASS_ARG_POINTER
   619 	RETURN ( __interpret(self, 3, nil, home COMMA_SND, nil, &arg1) );
   619 	RETURN ( __interpret(self, 3, nil, home COMMA_SND, nil, nil, &arg1) );
   620 # else
   620 # else
   621 	RETURN ( __interpret(self, 3, nil, home COMMA_SND, nil, arg1, arg2, arg3) );
   621 	RETURN ( __interpret(self, 3, nil, home COMMA_SND, nil, nil, arg1, arg2, arg3) );
   622 # endif
   622 # endif
   623 #endif
   623 #endif
   624     }
   624     }
   625 %}.
   625 %}.
   626     ^ self wrongNumberOfArguments:3
   626     ^ self wrongNumberOfArguments:3
   644 #ifdef NEW_BLOCK_CALL
   644 #ifdef NEW_BLOCK_CALL
   645 	if (thecode != (OBJFUNC)nil) {
   645 	if (thecode != (OBJFUNC)nil) {
   646 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4) );
   646 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4) );
   647 	}
   647 	}
   648 # ifdef PASS_ARG_POINTER
   648 # ifdef PASS_ARG_POINTER
   649 	RETURN ( __interpret(self, 4, nil, nil COMMA_SND, nil, &arg1) );
   649 	RETURN ( __interpret(self, 4, nil, nil COMMA_SND, nil, nil, &arg1) );
   650 # else
   650 # else
   651 	RETURN ( __interpret(self, 4, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4) );
   651 	RETURN ( __interpret(self, 4, nil, nil COMMA_SND, nil, nil, arg1, arg2, arg3, arg4) );
   652 # endif
   652 # endif
   653 #else
   653 #else
   654 	home = __BlockInstPtr(self)->b_home;
   654 	home = __BlockInstPtr(self)->b_home;
   655 	if (thecode != (OBJFUNC)nil) {
   655 	if (thecode != (OBJFUNC)nil) {
   656 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4) );
   656 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4) );
   657 	}
   657 	}
   658 # ifdef PASS_ARG_POINTER
   658 # ifdef PASS_ARG_POINTER
   659 	RETURN ( __interpret(self, 4, nil, home COMMA_SND, nil, &arg1) );
   659 	RETURN ( __interpret(self, 4, nil, home COMMA_SND, nil, nil, &arg1) );
   660 # else
   660 # else
   661 	RETURN ( __interpret(self, 4, nil, home COMMA_SND, nil, arg1, arg2, arg3, arg4) );
   661 	RETURN ( __interpret(self, 4, nil, home COMMA_SND, nil, nil, arg1, arg2, arg3, arg4) );
   662 # endif
   662 # endif
   663 #endif
   663 #endif
   664     }
   664     }
   665 %}.
   665 %}.
   666     ^ self wrongNumberOfArguments:4
   666     ^ self wrongNumberOfArguments:4
   684 #ifdef NEW_BLOCK_CALL
   684 #ifdef NEW_BLOCK_CALL
   685 	if (thecode != (OBJFUNC)nil) {
   685 	if (thecode != (OBJFUNC)nil) {
   686 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5) );
   686 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5) );
   687 	}
   687 	}
   688 # ifdef PASS_ARG_POINTER
   688 # ifdef PASS_ARG_POINTER
   689 	RETURN ( __interpret(self, 5, nil, nil COMMA_SND, nil, &arg1) );
   689 	RETURN ( __interpret(self, 5, nil, nil COMMA_SND, nil, nil, &arg1) );
   690 # else
   690 # else
   691 	RETURN ( __interpret(self, 5, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5) );
   691 	RETURN ( __interpret(self, 5, nil, nil COMMA_SND, nil, nil, arg1, arg2, arg3, arg4, arg5) );
   692 # endif
   692 # endif
   693 #else
   693 #else
   694 	home = __BlockInstPtr(self)->b_home;
   694 	home = __BlockInstPtr(self)->b_home;
   695 	if (thecode != (OBJFUNC)nil) {
   695 	if (thecode != (OBJFUNC)nil) {
   696 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5) );
   696 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5) );
   697 	}
   697 	}
   698 # ifdef PASS_ARG_POINTER
   698 # ifdef PASS_ARG_POINTER
   699 	RETURN ( __interpret(self, 5, nil, home COMMA_SND, nil, &arg1) );
   699 	RETURN ( __interpret(self, 5, nil, home COMMA_SND, nil, nil, &arg1) );
   700 # else
   700 # else
   701 	RETURN ( __interpret(self, 5, nil, home COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5) );
   701 	RETURN ( __interpret(self, 5, nil, home COMMA_SND, nil, nil, arg1, arg2, arg3, arg4, arg5) );
   702 # endif
   702 # endif
   703 #endif
   703 #endif
   704     }
   704     }
   705 %}.
   705 %}.
   706     ^ self wrongNumberOfArguments:5
   706     ^ self wrongNumberOfArguments:5
   724 #ifdef NEW_BLOCK_CALL
   724 #ifdef NEW_BLOCK_CALL
   725 	if (thecode != (OBJFUNC)nil) {
   725 	if (thecode != (OBJFUNC)nil) {
   726 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6) );
   726 	    RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6) );
   727 	}
   727 	}
   728 # ifdef PASS_ARG_POINTER
   728 # ifdef PASS_ARG_POINTER
   729 	RETURN ( __interpret(self, 6, nil, nil COMMA_SND, nil, &arg1) );
   729 	RETURN ( __interpret(self, 6, nil, nil COMMA_SND, nil, nil, &arg1) );
   730 # else
   730 # else
   731 	RETURN ( __interpret(self, 6, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6) );
   731 	RETURN ( __interpret(self, 6, nil, nil COMMA_SND, nil, nil, arg1, arg2, arg3, arg4, arg5, arg6) );
   732 # endif
   732 # endif
   733 #else
   733 #else
   734 	home = __BlockInstPtr(self)->b_home;
   734 	home = __BlockInstPtr(self)->b_home;
   735 	if (thecode != (OBJFUNC)nil) {
   735 	if (thecode != (OBJFUNC)nil) {
   736 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6) );
   736 	    RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6) );
   737 	}
   737 	}
   738 # ifdef PASS_ARG_POINTER
   738 # ifdef PASS_ARG_POINTER
   739 	RETURN ( __interpret(self, 6, nil, home COMMA_SND, nil, &arg1) );
   739 	RETURN ( __interpret(self, 6, nil, home COMMA_SND, nil, nil, &arg1) );
   740 # else
   740 # else
   741 	RETURN ( __interpret(self, 6, nil, home COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6) );
   741 	RETURN ( __interpret(self, 6, nil, home COMMA_SND, nil, nil, arg1, arg2, arg3, arg4, arg5, arg6) );
   742 # endif
   742 # endif
   743 #endif
   743 #endif
   744     }
   744     }
   745 %}.
   745 %}.
   746     ^ self wrongNumberOfArguments:6
   746     ^ self wrongNumberOfArguments:6
   764 #ifdef NEW_BLOCK_CALL
   764 #ifdef NEW_BLOCK_CALL
   765         if (thecode != (OBJFUNC)nil) {
   765         if (thecode != (OBJFUNC)nil) {
   766             RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6, arg7) );
   766             RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6, arg7) );
   767         }
   767         }
   768 # ifdef PASS_ARG_POINTER
   768 # ifdef PASS_ARG_POINTER
   769         RETURN ( __interpret(self, 7, nil, nil COMMA_SND, nil, &arg1) );
   769         RETURN ( __interpret(self, 7, nil, nil COMMA_SND, nil, nil, &arg1) );
   770 # else
   770 # else
   771         RETURN ( __interpret(self, 7, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6, arg7) );
   771         RETURN ( __interpret(self, 7, nil, nil COMMA_SND, nil, nil, arg1, arg2, arg3, arg4, arg5, arg6, arg7) );
   772 # endif
   772 # endif
   773 #else
   773 #else
   774         home = __BlockInstPtr(self)->b_home;
   774         home = __BlockInstPtr(self)->b_home;
   775         if (thecode != (OBJFUNC)nil) {
   775         if (thecode != (OBJFUNC)nil) {
   776             RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6, arg7) );
   776             RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6, arg7) );
   777         }
   777         }
   778 # ifdef PASS_ARG_POINTER
   778 # ifdef PASS_ARG_POINTER
   779         RETURN ( __interpret(self, 7, nil, home COMMA_SND, nil, &arg1) );
   779         RETURN ( __interpret(self, 7, nil, home COMMA_SND, nil, nil, &arg1) );
   780 # else
   780 # else
   781         RETURN ( __interpret(self, 7, nil, home COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6, arg7) );
   781         RETURN ( __interpret(self, 7, nil, home COMMA_SND, nil, nil, arg1, arg2, arg3, arg4, arg5, arg6, arg7) );
   782 # endif
   782 # endif
   783 #endif
   783 #endif
   784     }
   784     }
   785 %}.
   785 %}.
   786     ^ self wrongNumberOfArguments:7
   786     ^ self wrongNumberOfArguments:7
   804 #ifdef NEW_BLOCK_CALL
   804 #ifdef NEW_BLOCK_CALL
   805         if (thecode != (OBJFUNC)nil) {
   805         if (thecode != (OBJFUNC)nil) {
   806             RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) );
   806             RETURN ( (*thecode)(self COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) );
   807         }
   807         }
   808 # ifdef PASS_ARG_POINTER
   808 # ifdef PASS_ARG_POINTER
   809         RETURN ( __interpret(self, 8, nil, nil COMMA_SND, nil, &arg1) );
   809         RETURN ( __interpret(self, 8, nil, nil COMMA_SND, nil, nil, &arg1) );
   810 # else
   810 # else
   811         RETURN ( __interpret(self, 8, nil, nil COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) );
   811         RETURN ( __interpret(self, 8, nil, nil COMMA_SND, nil, nil, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) );
   812 # endif
   812 # endif
   813 #else
   813 #else
   814         home = __BlockInstPtr(self)->b_home;
   814         home = __BlockInstPtr(self)->b_home;
   815         if (thecode != (OBJFUNC)nil) {
   815         if (thecode != (OBJFUNC)nil) {
   816             RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) );
   816             RETURN ( (*thecode)(home COMMA_SND, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) );
   817         }
   817         }
   818 # ifdef PASS_ARG_POINTER
   818 # ifdef PASS_ARG_POINTER
   819         RETURN ( __interpret(self, 8, nil, home COMMA_SND, nil, &arg1) );
   819         RETURN ( __interpret(self, 8, nil, home COMMA_SND, nil, nil, &arg1) );
   820 # else
   820 # else
   821         RETURN ( __interpret(self, 8, nil, home COMMA_SND, nil, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) );
   821         RETURN ( __interpret(self, 8, nil, home COMMA_SND, nil, nil, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) );
   822 # endif
   822 # endif
   823 #endif
   823 #endif
   824     }
   824     }
   825 %}.
   825 %}.
   826     ^ self wrongNumberOfArguments:8
   826     ^ self wrongNumberOfArguments:8
   914 #ifdef NEW_BLOCK_CALL
   914 #ifdef NEW_BLOCK_CALL
   915     if (thecode != (OBJFUNC)nil) {
   915     if (thecode != (OBJFUNC)nil) {
   916 	RETURN ( (*thecode)(self COMMA_SND, a1, a2, a3, a4, a5, a6, a7, a8) );
   916 	RETURN ( (*thecode)(self COMMA_SND, a1, a2, a3, a4, a5, a6, a7, a8) );
   917     }
   917     }
   918 # ifdef PASS_ARG_POINTER
   918 # ifdef PASS_ARG_POINTER
   919     RETURN ( __interpret(self, nargs, nil, nil COMMA_SND, nil, &a1) );
   919     RETURN ( __interpret(self, nargs, nil, nil COMMA_SND, nil, nil, &a1) );
   920 # else
   920 # else
   921     RETURN ( __interpret(self, nargs, nil, nil COMMA_SND, nil, a1, a2, a3, a4, a5, a6, a7, a8) );
   921     RETURN ( __interpret(self, nargs, nil, nil COMMA_SND, nil, nil, a1, a2, a3, a4, a5, a6, a7, a8) );
   922 # endif
   922 # endif
   923 
   923 
   924 #else
   924 #else
   925 
   925 
   926 # ifdef PASS_ARG_POINTER
   926 # ifdef PASS_ARG_POINTER
   927     RETURN ( __interpret(self, nargs, nil, home COMMA_SND, nil, &a1) );
   927     RETURN ( __interpret(self, nargs, nil, home COMMA_SND, nil, nil, &a1) );
   928 # else
   928 # else
   929     RETURN ( __interpret(self, nargs, nil, home COMMA_SND, nil, a1, a2, a3, a4, a5, a6, a7, a8) );
   929     RETURN ( __interpret(self, nargs, nil, home COMMA_SND, nil, nil, a1, a2, a3, a4, a5, a6, a7, a8) );
   930 # endif
   930 # endif
   931 
   931 
   932 #endif
   932 #endif
   933 
   933 
   934 error: ;
   934 error: ;
  1373 ! !
  1373 ! !
  1374 
  1374 
  1375 !Block  class methodsFor:'documentation'!
  1375 !Block  class methodsFor:'documentation'!
  1376 
  1376 
  1377 version
  1377 version
  1378     ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.60 1996-08-02 18:13:14 cg Exp $'
  1378     ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.61 1996-09-22 13:01:02 cg Exp $'
  1379 ! !
  1379 ! !
  1380 Block initialize!
  1380 Block initialize!