Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[NFC] Walk module to update names in binary parser #6959

Open
wants to merge 9 commits into
base: main
Choose a base branch
from

Commits on Sep 19, 2024

  1. [NFC-ish] Eagerly create Functions in binary parser

    In preparation for using IRBuilder in the binary parser, eagerly create
    Functions when parsing the function section so that they are already
    created once we parse the code section. IRBuilder will require the
    functions to exist when parsing calls so it can figure out what type
    each call should have, even when there is a call to a function whose
    body has not been parsed yet.
    
    NFC except that some error messages change to include the new empty
    functions.
    tlively committed Sep 19, 2024
    Configuration menu
    Copy the full SHA
    8543f16 View commit details
    Browse the repository at this point in the history
  2. [NFC] Eagerly create segments when parsing datacount

    The purpose of the datacount section is to pre-declare how many data
    segments there will be so that engines can allocate space for them
    and not have to back patch subsequent instructions in the code section
    that refer to them. Once we use IRBuilder in the binary parser, we will
    have to have the data segments available by the time we parse
    instructions that use them, so eagerly construct the data segments when
    parsing the datacount section.
    tlively committed Sep 19, 2024
    Configuration menu
    Copy the full SHA
    b83bec4 View commit details
    Browse the repository at this point in the history
  3. [NFC] Walk module to update names in binary parser

    The binary parser generally does not know the final names of module
    elements when it parses them, or even when it parses instructions that
    refer to them, since the name section comes at the end of a binary. The
    parser previously kept a list of pointers to locations where each module
    element's name would have to be used, then it patched those locations
    after parsing the names section to discover the final names.
    
    When the binary parser starts using IRBuilder, the parsed expressions
    will be constructed and managed by IRBuilder rather than by the parser
    itself. This means that the parser will no longer be able to collect
    pointers to places where module element names are used; it won't have
    access to the instructions at all.
    
    Since the strategy of collecting locations to patch will no longer work,
    switch to a strategy of traversing the module to find and update names
    instead. This is generally less efficient because the locations have to
    be found before they can be updated, but on the other hand it only
    happens when preserving debug info and it is parallelizable anyway.
    tlively committed Sep 19, 2024
    Configuration menu
    Copy the full SHA
    a124292 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    8f4ca9f View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    8d8eb13 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    945a807 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    4d0deb1 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    70585fc View commit details
    Browse the repository at this point in the history

Commits on Sep 21, 2024

  1. Configuration menu
    Copy the full SHA
    098bd4f View commit details
    Browse the repository at this point in the history