Changes between Initial Version and Version 11 of Ticket #15113


Ignore:
Timestamp:
Dec 21, 2018 11:55:27 AM (10 months ago)
Author:
simonpj
Comment:

Looking at #16014, I like alternative (2) from the Description better and better. If we spot

x = unpackCString# "blah"#

in the code generator, we could allocate a top-level closure with

  • Info-pointer: rtsUnpackString_info
  • One word of payload, a pointer to the literal string "blah"#.

Now we can hand-write the single blob of code (plus info table) rtsUnpackString_info to unpack the string. Easy! And the overhead per string is only two words (for the closure) rather than all the stuff described in #16014.

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #15113

    • Property Status changed from new to patch
    • Property Cc osa1 MikolajKonarski added
    • Property Differential Rev(s) changed from to Phab:D4717
    • Property Related Tickets changed from to #16014
    • Property Milestone changed from 8.6.1 to 8.10.1
    • Property Keywords CAFs added
  • Ticket #15113 – Description

    initial v11  
    2525What to do?
    2626
    27 * Somehow refrain from floating `unpackCSTring# lit` to top level, even if you could otherwise do so. But that seems very ad-hoc, and it make the function bigger and less inlinable.
     271. Somehow refrain from floating `unpackCSTring# lit` to top level, even if you could otherwise do so. But that seems very ad-hoc, and it make the function bigger and less inlinable.
    2828
    29 * Treat a top level definition
     292. Treat a top level definition
    3030{{{
    3131x :: [Char]