| ... |
... |
@@ -193,10 +193,7 @@ tag functions as tag inference currently doesn't rely on those being properly ta |
|
193
|
193
|
In practice we're unlikely to have interpreted frames that low on the stack.
|
|
194
|
194
|
*/
|
|
195
|
195
|
#define IS_UNDERFLOW_FRAME(info) \
|
|
196
|
|
- ((info) == &stg_stack_underflow_frame_d_info || \
|
|
197
|
|
- (info) == &stg_stack_underflow_frame_v16_info || \
|
|
198
|
|
- (info) == &stg_stack_underflow_frame_v32_info || \
|
|
199
|
|
- (info) == &stg_stack_underflow_frame_v64_info)
|
|
|
196
|
+ ((info) == &stg_stack_underflow_frame_info)
|
|
200
|
197
|
|
|
201
|
198
|
#define W64_TO_WDS(n) ((n * sizeof(StgWord64) / sizeof(StgWord)))
|
|
202
|
199
|
|
| ... |
... |
@@ -436,8 +433,6 @@ slow_spw(void *Sp, StgStack *cur_stack, StgWord offset_words){ |
|
436
|
433
|
if( IS_UNDERFLOW_FRAME(frame->info) )
|
|
437
|
434
|
{
|
|
438
|
435
|
|
|
439
|
|
- INTERP_TICK(it_underflow_lookups);
|
|
440
|
|
-
|
|
441
|
436
|
new_stack = (StgStack*)frame->next_chunk;
|
|
442
|
437
|
|
|
443
|
438
|
// How many words were on the stack
|
| ... |
... |
@@ -450,7 +445,7 @@ slow_spw(void *Sp, StgStack *cur_stack, StgWord offset_words){ |
|
450
|
445
|
}
|
|
451
|
446
|
// 2b. Access the element if there is no underflow frame, it must be right
|
|
452
|
447
|
// at the top of the stack.
|
|
453
|
|
- else if(Sp_plusW(offset_words) < (StgPtr)(cur_stack->stack + cur_stack->stack_size)) {
|
|
|
448
|
+ else if((StgPtr) Sp_plusW(offset_words) < (StgPtr)(cur_stack->stack + cur_stack->stack_size)) {
|
|
454
|
449
|
// Still inside the stack chunk
|
|
455
|
450
|
return Sp_plusW(offset_words);
|
|
456
|
451
|
} else {
|
| ... |
... |
@@ -572,7 +567,6 @@ eval: |
|
572
|
567
|
|
|
573
|
568
|
eval_obj:
|
|
574
|
569
|
obj = UNTAG_CLOSURE(tagged_obj);
|
|
575
|
|
- INTERP_TICK(it_total_evals);
|
|
576
|
570
|
|
|
577
|
571
|
IF_DEBUG(interpreter,
|
|
578
|
572
|
debugBelch(
|
| ... |
... |
@@ -1811,7 +1805,7 @@ run_BCO: |
|
1811
|
1805
|
threadStackUnderflow(cap, cap->r.rCurrentTSO);
|
|
1812
|
1806
|
LOAD_STACK_POINTERS;
|
|
1813
|
1807
|
by -= sp_to_uf;
|
|
1814
|
|
- } else if (Sp_plusW(by) < (StgPtr)(stk->stack + stk->stack_size)) {
|
|
|
1808
|
+ } else if ((StgPtr) Sp_plusW(by) < (StgPtr)(stk->stack + stk->stack_size)) {
|
|
1815
|
1809
|
// we're within the first stack chunk, this chunk has
|
|
1816
|
1810
|
// no underflow frame
|
|
1817
|
1811
|
break;
|
| ... |
... |
@@ -1937,7 +1931,7 @@ run_BCO: |
|
1937
|
1931
|
itbl->layout.payload.nptrs );
|
|
1938
|
1932
|
StgClosure* con = (StgClosure*)allocate_NONUPD(cap,request);
|
|
1939
|
1933
|
ASSERT( itbl->layout.payload.ptrs + itbl->layout.payload.nptrs > 0);
|
|
1940
|
|
- for (W_ i = 0; i < n_words; i++) {
|
|
|
1934
|
+ for (i = 0; i < n_words; i++) {
|
|
1941
|
1935
|
con->payload[i] = (StgClosure*)SpW(i);
|
|
1942
|
1936
|
}
|
|
1943
|
1937
|
Sp_addW(n_words);
|