I think this should fix the problem. It certainly doesn't break anything on a 64 bit machine, and should fix the problem on a 32 bit machine (although I can't test that)
On 3 May 2014 06:31, Mateusz Kowalczyk <[email protected]> wrote: > On 05/02/2014 03:50 PM, [email protected] wrote: > > Repository : ssh://[email protected]/ghc > > > > On branch : master > > Link : > http://ghc.haskell.org/trac/ghc/changeset/b0534f78a73f972e279eed4447a5687bd6a8308e/ghc > > > >> --------------------------------------------------------------- > > > > commit b0534f78a73f972e279eed4447a5687bd6a8308e > > Author: Simon Marlow <[email protected]> > > Date: Mon Apr 28 16:55:47 2014 +0100 > > > > Per-thread allocation counters and limits > > > > This tracks the amount of memory allocation by each thread in a > > counter stored in the TSO. Optionally, when the counter drops below > > zero (it counts down), the thread can be sent an asynchronous > > exception: AllocationLimitExceeded. When this happens, given a small > > additional limit so that it can handle the exception. See > > documentation in GHC.Conc for more details. > > > > Allocation limits are similar to timeouts, but > > > > - timeouts use real time, not CPU time. Allocation limits do not > > count anything while the thread is blocked or in foreign code. > > > > - timeouts don't re-trigger if the thread catches the exception, > > allocation limits do. > > > > - timeouts can catch non-allocating loops, if you use > > -fno-omit-yields. This doesn't work for allocation limits. > > > > I couldn't measure any impact on benchmarks with these changes, even > > for nofib/smp. > > > > > >> --------------------------------------------------------------- > > > > b0534f78a73f972e279eed4447a5687bd6a8308e > > compiler/cmm/CmmLayoutStack.hs | 9 +- > > compiler/codeGen/StgCmmForeign.hs | 268 > ++++++++++++++------ > > includes/CodeGen.Platform.hs | 4 +- > > includes/rts/Constants.h | 6 + > > includes/rts/Flags.h | 8 + > > includes/rts/Threads.h | 8 +- > > includes/rts/storage/TSO.h | 31 ++- > > libraries/base/Control/Exception.hs | 1 + > > libraries/base/Control/Exception/Base.hs | 1 + > > libraries/base/GHC/Conc.lhs | 6 + > > libraries/base/GHC/Conc/Sync.lhs | 92 ++++++- > > libraries/base/GHC/IO/Exception.hs | 21 +- > > rts/HeapStackCheck.cmm | 4 +- > > rts/Linker.c | 4 + > > rts/Prelude.h | 2 + > > rts/RaiseAsync.c | 54 ++++ > > rts/RaiseAsync.h | 4 + > > rts/RtsFlags.c | 10 + > > rts/RtsStartup.c | 1 + > > rts/Schedule.c | 19 ++ > > rts/Threads.c | 77 +++--- > > rts/package.conf.in | 2 + > > rts/sm/Storage.c | 6 + > > testsuite/tests/concurrent/should_run/all.T | 7 + > > .../tests/concurrent/should_run/allocLimit1.hs | 9 + > > .../tests/concurrent/should_run/allocLimit1.stderr | 1 + > > .../tests/concurrent/should_run/allocLimit2.hs | 17 ++ > > .../tests/concurrent/should_run/allocLimit3.hs | 15 ++ > > .../tests/concurrent/should_run/allocLimit3.stderr | 1 + > > .../should_run/allocLimit3.stdout} | 1 - > > .../tests/concurrent/should_run/allocLimit4.hs | 31 +++ > > utils/deriveConstants/DeriveConstants.hs | 1 + > > 32 files changed, 576 insertions(+), 145 deletions(-) > > > > Diff suppressed because of size. To see it, use: > > > > git diff-tree --root --patch-with-stat --no-color > --find-copies-harder --ignore-space-at-eol --cc > b0534f78a73f972e279eed4447a5687bd6a8308e > > _______________________________________________ > > ghc-commits mailing list > > [email protected] > > http://www.haskell.org/mailman/listinfo/ghc-commits > > > > I just tried to compile a snapshot involving this commit and got a > compile failure: > > http://lpaste.net/103540 > > I was compiling with GHC 7.8.2 on a 32-bit machine. > > -- > Mateusz K. > _______________________________________________ > ghc-devs mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/ghc-devs >
From 988ff210fe62d9a62396177891b9dcccd7f63ce0 Mon Sep 17 00:00:00 2001 From: William Kenyon <[email protected]> Date: Sat, 3 May 2014 11:16:54 +0000 Subject: [PATCH][BUILD] Fixed inconsistent word widths for an addition and subtraction This was causing build failures on 32 bit machines Signed-off-by: William Kenyon <[email protected]> --- compiler/codeGen/StgCmmForeign.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/compiler/codeGen/StgCmmForeign.hs b/compiler/codeGen/StgCmmForeign.hs index 2730275..b33161b 100644 --- a/compiler/codeGen/StgCmmForeign.hs +++ b/compiler/codeGen/StgCmmForeign.hs @@ -335,9 +335,9 @@ closeNursery df tso cn = in -- tso->alloc_limit += alloc - mkStore alloc_limit (CmmMachOp (mo_wordSub df) + mkStore alloc_limit (CmmMachOp (MO_Sub W64) [ CmmLoad alloc_limit b64 - , alloc ]), + , CmmMachOp (MO_SS_Conv (wordWidth df) W64) [alloc] ]), -- CurrentNursery->free = Hp+1; mkStore (nursery_bdescr_free df cnreg) (cmmOffsetW df stgHp 1) @@ -441,9 +441,9 @@ openNursery df tso cn bdfree bdstart = in -- tso->alloc_limit += alloc - mkStore alloc_limit (CmmMachOp (mo_wordAdd df) + mkStore alloc_limit (CmmMachOp (MO_Add W64) [ CmmLoad alloc_limit b64 - , alloc ]), + , CmmMachOp (MO_SS_Conv (wordWidth df) W64) [alloc] ]), -- Hp = CurrentNursery->free - 1; mkAssign hp (cmmOffsetW df (CmmReg bdfreereg) (-1)), -- 1.9.0
_______________________________________________ ghc-devs mailing list [email protected] http://www.haskell.org/mailman/listinfo/ghc-devs
