修订版 | 1091 (tree) |
---|---|
时间 | 2021-01-28 03:30:55 |
作者 | jakobthomsen |
test return-from-block
@@ -13213,8 +13213,8 @@ | ||
13213 | 13213 | } |
13214 | 13214 | case 837LLU: // completed if-then-else |
13215 | 13215 | { |
13216 | -//#define copy 36 | |
13217 | - stack[base + 36/*copy*/] = 0; // init | |
13216 | +//#define copy 37 | |
13217 | + stack[base + 37/*copy*/] = 0; // init | |
13218 | 13218 | uint64_t *newstack = (uint64_t *)Calloc(13LLU + 1, sizeof(uint64_t)); |
13219 | 13219 | newstack[13LLU] = 9876543210LLU; // overflow-marker |
13220 | 13220 | // call copytype from PROCCALL |
@@ -13234,7 +13234,7 @@ | ||
13234 | 13234 | uint64_t *oldstack = (uint64_t *)stack[0]; |
13235 | 13235 | // copy mutable arguments back from call to copytype |
13236 | 13236 | // copy back results provided by call to copytype |
13237 | - oldstack[base + 36] = stack[3LLU]; | |
13237 | + oldstack[base + 37] = stack[3LLU]; | |
13238 | 13238 | if(stack[13LLU] != 9876543210LLU) |
13239 | 13239 | { |
13240 | 13240 | fprintf(stderr, "INTERNAL ERROR - OVERFLOW (in recursive call to copytype)!"); |
@@ -13242,13 +13242,11 @@ | ||
13242 | 13242 | } |
13243 | 13243 | Free(13LLU + 1, sizeof(uint64_t), stack); |
13244 | 13244 | stack = oldstack; |
13245 | -//#define typeidx 37 | |
13246 | - stack[base + 37/*typeidx*/] = 0; // init | |
13247 | 13245 | // call mktypeidx from PROCCALL |
13248 | 13246 | stack[base + 38LLU] = base; |
13249 | 13247 | stack[base + 39LLU] = 847LLU; |
13250 | 13248 | // arguments for call to mktypeidx |
13251 | - stack[base + 41LLU] = stack[base + 36]/*copy*/; | |
13249 | + stack[base + 41LLU] = stack[base + 37]/*copy*/; | |
13252 | 13250 | stack[base + 42LLU] = stack[base + 34]/*INDEX*/; |
13253 | 13251 | // set stack-base & callee-address |
13254 | 13252 | base += 40LLU; |
@@ -13259,12 +13257,12 @@ | ||
13259 | 13257 | { |
13260 | 13258 | // copy mutable arguments back from call to mktypeidx |
13261 | 13259 | // copy back results provided by call to mktypeidx |
13262 | - stack[base + 37] = stack[base + 40LLU]; | |
13260 | + stack[base + 36] = stack[base + 40LLU]; | |
13263 | 13261 | { |
13264 | 13262 | struct listnode *list = (struct listnode *)Calloc(1, sizeof(struct listnode)); |
13265 | 13263 | list->next = (struct listnode *)stack[base + 14]/*dsttypeidx*/; |
13266 | 13264 | stack[base + 14]/*dsttypeidx*/ = (uint64_t)list; |
13267 | - list->data = stack[base + 37]/*typeidx*/; | |
13265 | + list->data = stack[base + 36]/*typeidx*/; | |
13268 | 13266 | } |
13269 | 13267 | // releasing RESULT |
13270 | 13268 | Free(4, sizeof(uint64_t), ((uint64_t **)stack[base + 27]/*RESULT*/)[1]); |
@@ -2950,10 +2950,17 @@ | ||
2950 | 2950 | { |
2951 | 2951 | } |
2952 | 2952 | |
2953 | - NEW mut type copy | |
2954 | - (copy) = copytype(type) | |
2955 | - NEW mut typeidx typeidx | |
2956 | - (typeidx) = mktypeidx(copy, INDEX) | |
2953 | + //NEW mut type copy | |
2954 | + //(copy) = copytype(type) | |
2955 | + //NEW mut typeidx typeidx | |
2956 | + //(typeidx) = mktypeidx(copy, INDEX) | |
2957 | + //push(dsttypeidx, typeidx) | |
2958 | + let (mut typeidx typeidx) = | |
2959 | + { | |
2960 | + NEW mut type copy | |
2961 | + (copy) = copytype(type) | |
2962 | + return mktypeidx(copy, INDEX) | |
2963 | + } | |
2957 | 2964 | push(dsttypeidx, typeidx) |
2958 | 2965 | } |
2959 | 2966 | else |