[commit: ghc] master: fix comment on allocate() (#8254) (68c0d86)

git at git.haskell.org git at git.haskell.org
Thu Feb 27 15:37:27 UTC 2014


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/68c0d8689dd93cb0ce74a288e82f2ed997c31acc/ghc

>---------------------------------------------------------------

commit 68c0d8689dd93cb0ce74a288e82f2ed997c31acc
Author: Simon Marlow <marlowsd at gmail.com>
Date:   Thu Feb 27 12:37:32 2014 +0000

    fix comment on allocate() (#8254)


>---------------------------------------------------------------

68c0d8689dd93cb0ce74a288e82f2ed997c31acc
 rts/sm/Storage.c |   26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/rts/sm/Storage.c b/rts/sm/Storage.c
index df5f4b3..86bd1c2 100644
--- a/rts/sm/Storage.c
+++ b/rts/sm/Storage.c
@@ -662,20 +662,22 @@ move_STACK (StgStack *src, StgStack *dest)
 }
 
 /* -----------------------------------------------------------------------------
-   allocate()
-
-   This allocates memory in the current thread - it is intended for
-   use primarily from STG-land where we have a Capability.  It is
-   better than allocate() because it doesn't require taking the
-   sm_mutex lock in the common case.
-
-   Memory is allocated directly from the nursery if possible (but not
-   from the current nursery block, so as not to interfere with
-   Hp/HpLim).
+   StgPtr allocate (Capability *cap, W_ n)
+
+   Allocates an area of memory n *words* large, from the nursery of
+   the supplied Capability, or from the global block pool if the area
+   requested is larger than LARGE_OBJECT_THRESHOLD.  Memory is not
+   allocated from the current nursery block, so as not to interfere
+   with Hp/HpLim.
+
+   The address of the allocated memory is returned. allocate() never
+   fails; if it returns, the returned value is a valid address.  If
+   the nursery is already full, then another block is allocated from
+   the global block pool.  If we need to get memory from the OS and
+   that operation fails, then the whole process will be killed.
    -------------------------------------------------------------------------- */
 
-StgPtr
-allocate (Capability *cap, W_ n)
+StgPtr allocate (Capability *cap, W_ n)
 {
     bdescr *bd;
     StgPtr p;



More information about the ghc-commits mailing list