Opened 7 years ago

Last modified 9 months ago

#3462 new task

New codegen: allocate large objects using allocateLocal()

Reported by: simonmar Owned by: simonmar
Priority: low Milestone:
Component: Runtime System Version: 6.11
Keywords: Cc: simonmar
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: Runtime performance bug Test Case:
Blocked By: #4258 Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:


See #3424.

In the new code generator, we should allocate large objects (larger than F * block size, for some suitable fraction F) using the RTS allocateLocal() API rather than from the nursery. It works to allocate them from the nursery -- this is what GHC 6.12 does after the fix in #3424 -- but then they will not be treated as large objects and will be copied during GC. Also, the allocation is likely to fail, requiring a trip through the RTS to put a large enough block in the nursery to satisfy the allocation.

Change History (8)

comment:1 Changed 6 years ago by igloo

  • Blocked By 4258 added
  • Milestone changed from 6.14.1 to 6.16.1
  • Type of failure set to None/Unknown

comment:2 Changed 5 years ago by igloo

  • Milestone changed from 7.4.1 to 7.6.1
  • Priority changed from normal to low

comment:3 Changed 4 years ago by igloo

  • Milestone changed from 7.6.1 to 7.6.2

comment:4 Changed 2 years ago by thoughtpolice

  • Milestone changed from 7.6.2 to 7.10.1

Moving to 7.10.1.

comment:5 Changed 23 months ago by thomie

  • Cc simonmar added
  • Component changed from Compiler to Runtime System
  • Owner set to simonmar
  • Type of failure changed from None/Unknown to Runtime performance bug

Commit 5270423a6afe69f1dc57e5e5a474812182718d40:

Author: Simon Marlow <>
Date:   Tue Dec 1 16:03:21 2009 +0000


      - allocateLocal() now allocates large objects into the local
        nursery, rather than taking a global lock and allocating
        then in gen 0 step 0.
      - I removed the global allocate() function, and renamed
        allocateLocal() to allocate().


comment:6 Changed 22 months ago by thoughtpolice

  • Milestone changed from 7.10.1 to 7.12.1

Moving to 7.12.1 milestone; if you feel this is an error and should be addressed sooner, please move it back to the 7.10.1 milestone.

comment:7 Changed 14 months ago by thoughtpolice

  • Milestone changed from 7.12.1 to 8.0.1

Milestone renamed

comment:8 Changed 9 months ago by thomie

  • Milestone 8.0.1 deleted
Note: See TracTickets for help on using tickets.