Commit b3ff8a4e authored by Simon Marlow's avatar Simon Marlow
Browse files

don't shrink the stack smaller than the value set by +RTS -k<size>

parent 5bf014af
......@@ -258,5 +258,14 @@ round_to_mblocks(StgWord words)
return words;
}
INLINE_HEADER StgWord
round_up_to_mblocks(StgWord words)
{
words += FIRST_BLOCK_OFF/sizeof(W_);
words = ((words / MBLOCK_SIZE_W) + 1) * MBLOCK_SIZE_W;
words -= FIRST_BLOCK_OFF/sizeof(W_);
return words;
}
#endif /* !CMINUSMINUS */
#endif /* BLOCK_H */
......@@ -2442,6 +2442,8 @@ threadStackUnderflow (Task *task STG_UNUSED, StgTSO *tso)
(tso_size_w - BLOCKS_PER_MBLOCK*BLOCK_SIZE_W) % MBLOCK_SIZE_W != 0 ||
// or TSO is not a whole number of megablocks (ensuring
// precondition of splitLargeBlock() below)
(tso_size_w <= round_up_to_mblocks(RtsFlags.GcFlags.initialStkSize)) ||
// or TSO is smaller than the minimum stack size (rounded up)
(nat)(tso->stack + tso->stack_size - tso->sp) > tso->stack_size / 4)
// or stack is using more than 1/4 of the available space
{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment