Skip to content
Snippets Groups Projects
  1. Jun 21, 2024
  2. Jun 12, 2024
  3. Jun 10, 2024
    • Duncan Coutts's avatar
      Fix isByteArrayPinned# for the !HEAP_ALLOCATED case · be9e4975
      Duncan Coutts authored
      The isByteArrayPinned# primop works by looking up the block descriptor
      for the byte array to see if it lives in a pinned area or not. This of
      course cannot work for byte arrays that are not HEAP_ALLOCATED since
      they don't have block descriptors.
      
      The solution is to check if it is HEAP_ALLOCATED first. Since this is
      done in CMM code we make use of the new HEAP_ALLOCATED support for CMM.
      It is a bit awkward since it does not have a uniform interface.
      be9e4975
    • Duncan Coutts's avatar
      Define HEAP_ALLOCED for CMM code · 4d4bddb4
      Duncan Coutts authored
      Allow rts/sm/HeapAlloc.h to be #included by CMM code and have it provide
      a suitable implementation of HEAP_ALLOCED.
      
      The HEAP_ALLOCED system has three implementations, the large address
      space case, two fallbakc impls, one for 32bit and one for 64bit. The
      first two are simple enough that we can provide a HEAP_ALLOCED macro
      that can be used in a CMM expression context.
      
      The 64bit fallback case is rather more tricky. We provide a different
      interface to HEAP_ALLOCED for this case, which has to be called in a
      statement/"callish" style.
      4d4bddb4
    • Duncan Coutts's avatar
      Add new primop placeByteArray# · 438dc732
      Duncan Coutts authored
      It places a byte array heap object header at the given address, which
      must be outside the heap. It also sets the byte array size.
      438dc732
    • Duncan Coutts's avatar
      Permit ARR_WORDS closures outside HEAP_ALLOCED space · 43e7531b
      Duncan Coutts authored
      In the GC, evacuate() is prepared to deal with some heap objects that
      are not in the HEAP_ALLOCED() memory space. These are mainly the heap
      objects that GHC puts into the data sections of object files.
      
      It is also useful however to allow ByteArray# and MutableByteArray#
      heap objects to appear outside of the HEAP_ALLOCED() memory space. These
      have the ARR_WORDS closure type and contain no pointer should be easy to
      deal with. Indeed evacuate() already deals with closure types for
      constructors containing no pointers by doing nothing.
      
      So we just tack the ARR_WORDS case into this group of closure types that
      are permitted outside the HEAP_ALLOCED area but otherwise ignored.
      43e7531b
    • Cheng Shao's avatar
      rts: replace ad-hoc MYTASK_USE_TLV with proper CC_SUPPORTS_TLS · f3017dd3
      Cheng Shao authored and Marge Bot's avatar Marge Bot committed
      This patch replaces the ad-hoc `MYTASK_USE_TLV` with the
      `CC_SUPPORTS_TLS` macro. If TLS support is detected by autoconf, then
      we should use that for managing `myTask` in the threaded RTS.
      f3017dd3
    • jeffrey young's avatar
      JS: establish single source of truth for symbols · 6bd850e8
      jeffrey young authored and Marge Bot's avatar Marge Bot committed
      In pursuit of: #22736.
      
      This MR moves ad-hoc symbols used throughout the js backend into a
      single symbols file. Why? First, this cleans up the code by removing
      ad-hoc strings created on the fly and therefore makes the code more
      maintainable. Second, it makes it much easier to eventually type these
      identifiers.
      6bd850e8
  4. Jun 09, 2024
  5. Jun 08, 2024
  6. Jun 07, 2024
  7. Jun 06, 2024
  8. Jun 05, 2024
Loading