Improve accuracy of get/setAllocationCounter
authorSimon Marlow <marlowsd@gmail.com>
Fri, 5 Jan 2018 16:12:49 +0000 (16:12 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Mon, 8 Jan 2018 08:41:35 +0000 (08:41 +0000)
commita1a689dda48113f3735834350fb562bb1927a633
tree0931516152cc40f0481bb2fad35274f225bcd76c
parent303106d55d75a9c796e58867cb541ad136bb217f
Improve accuracy of get/setAllocationCounter

Summary:
get/setAllocationCounter didn't take into account allocations in the
current block. This was known at the time, but it turns out to be
important to have more accuracy when using these in a fine-grained
way.

Test Plan:
New unit test to test incrementally larger allocaitons.  Before I got
results like this:

```
+0
+0
+0
+0
+0
+4096
+0
+0
+0
+0
+0
+4064
+0
+0
+4088
+4056
+0
+0
+0
+4088
+4096
+4056
+4096
```

Notice how the results aren't always monotonically increasing.  After
this patch:

```
+344
+416
+488
+560
+632
+704
+776
+848
+920
+992
+1064
+1136
+1208
+1280
+1352
+1424
+1496
+1568
+1640
+1712
+1784
+1856
+1928
+2000
+2072
+2144
```

Reviewers: niteria, bgamari, hvr, erikd

Subscribers: rwbarton, thomie, carter

Differential Revision: https://phabricator.haskell.org/D4288
compiler/codeGen/StgCmmForeign.hs
compiler/prelude/primops.txt.pp
includes/rts/Threads.h
includes/stg/MiscClosures.h
libraries/base/GHC/Conc/Sync.hs
rts/PrimOps.cmm
rts/RtsSymbols.c
rts/Threads.c
testsuite/tests/rts/all.T
testsuite/tests/rts/alloccounter1.hs [new file with mode: 0644]
testsuite/tests/rts/alloccounter1.stdout [new file with mode: 0644]