diff options
author | Simon Marlow <marlowsd@gmail.com> | 2014-10-15 00:03:15 +0100 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2014-11-12 15:11:10 +0000 |
commit | d70b19bfb5ed79b22c2ac31e22f46782fc47a117 (patch) | |
tree | d7bc2ad5a6d50bf351dfd97779030dae63e5d7cf /rts/HeapStackCheck.cmm | |
parent | c774b28f76ee4c220f7c1c9fd81585e0e3af0e8a (diff) | |
download | haskell-d70b19bfb5ed79b22c2ac31e22f46782fc47a117.tar.gz |
Per-thread allocation counters and limits
This reverts commit f0fcc41d755876a1b02d1c7c79f57515059f6417.
New changes: now works on 32-bit platforms too. I added some basic
support for 64-bit subtraction and comparison operations to the x86
NCG.
Diffstat (limited to 'rts/HeapStackCheck.cmm')
-rw-r--r-- | rts/HeapStackCheck.cmm | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/rts/HeapStackCheck.cmm b/rts/HeapStackCheck.cmm index 0659fed89f..a1fb5d446d 100644 --- a/rts/HeapStackCheck.cmm +++ b/rts/HeapStackCheck.cmm @@ -100,7 +100,9 @@ stg_gc_noregs CurrentNursery = bdescr_link(CurrentNursery); OPEN_NURSERY(); if (Capability_context_switch(MyCapability()) != 0 :: CInt || - Capability_interrupt(MyCapability()) != 0 :: CInt) { + Capability_interrupt(MyCapability()) != 0 :: CInt || + (StgTSO_alloc_limit(CurrentTSO) `lt` (0::I64) && + (TO_W_(StgTSO_flags(CurrentTSO)) & TSO_ALLOC_LIMIT) != 0)) { ret = ThreadYielding; goto sched; } else { |