Changeset 182 for trunk/thune/eval.c
- Timestamp:
- 06/11/06 04:56:12 (3 years ago)
- Files:
-
- 1 modified
-
trunk/thune/eval.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/thune/eval.c
r179 r182 528 528 case CC_EVAL: 529 529 case CC_EVAL_RUNNING: 530 case CC_FOREVER: 530 531 case CC_REDUCE: 531 532 toc -= CC_LEN_EVAL; … … 783 784 break; 784 785 786 case OP_FOREVER: // (block! -- ) 787 PUSHC_EVAL( blkN, start, pc + 1 ); 788 UR_TOC->eval.code = CC_FOREVER; 789 UR_TOC->eval.n = UR_TOS->series.n; 790 UR_TOC->eval.it = UR_TOS->series.it; 791 UR_C_GROW; 792 UR_S_DROP; 793 goto control; 794 785 795 //case OP_END: 786 796 // goto finish; … … 987 997 goto control; 988 998 999 case CC_FOREVER: 1000 SET_BLK_PC( UR_TOC->eval.n, UR_TOC->eval.it ); 1001 UR_C_GROW; 1002 goto execute; 1003 989 1004 case CC_REDUCE: 990 1005 { … … 1079 1094 break; 1080 1095 1096 case CC_FOREVER: 1097 UR_C_DECN( CC_LEN_FOREVER ); 1098 check_break: 1099 if( ur_is(UR_TOS, UT_LITWORD) && 1100 ur_atom(UR_TOS) == UR_ATOM_BREAK ) 1101 { 1102 UR_S_DROP; 1103 goto control; 1104 } 1105 break; 1106 1081 1107 case CC_ITER: 1082 1108 UR_C_DECN( CC_LEN_ITER ); 1083 break;1109 goto check_break; 1084 1110 1085 1111 case CC_CATCH:
