1. 05 Oct, 2020 1 commit
    • Seth Brenith's avatar
      [torque] Add C++ backend for Torque compiler · c7c5d50d
      Seth Brenith authored
      This change adds a new code generator, which supports a subset of the
      instructions supported by the existing CSAGenerator, and instead of
      generating CSA it generates runtime C++ code. The new generator is used
      to generate a set of Torque macros that return slices to indexed fields.
      These new macros should be sufficient to eventually support
      Torque-generated field accessors, BodyDescriptors, verifier functions,
      and postmortem field inspection in debug_helper.
      
      Bug: v8:7793
      Change-Id: Ife2d25cfd55a08238c625a8b04aca3ff2a0f4c63
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2429566Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Cr-Commit-Position: refs/heads/master@{#70313}
      c7c5d50d
  2. 11 Feb, 2020 1 commit
    • Nico Hartmann's avatar
      [torque] Reduce generated CSA variables and labels · 89b248b6
      Nico Hartmann authored
      This CL significantly reduces the size of CSA files generated from
      torque by introducing only those Phis at block entry that are
      required and otherwise uses defined values directly.
      
      To do so it does:
      - Define a DefinitionLocation that represents where a value is
        defined.
      - For each block compute all the definitions that reach that
        block and introduce a phi iff the reaching definitions for a value
        are not the same for all predecessor blocks.
      - In CSAGenerator map all DefinitionLocations to variables, such that
        if the same value is used in multiple blocks, it is mapped to the
        same variable without the need to pass it along the jump. This
        reduces both the arguments passed to Goto, Branch, ... and the
        variables that need to be passed to Bind when the block's label is
        bound. This reduces the number of temporary variables
        significantly. Temporaries are declared outside of blocks now
        in order to be accessible from other blocks.
      
      Drive-by changes:
      - Sequences of SetSourcePosition calls are merged if no output is
        generated between them.
      - Dead blocks are no longer generated in release builds.
      
      Bug: v8:9861
      Change-Id: I5c30e5376e93c424c3ebfc5144a08592d77ae61f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2037444
      Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66225}
      89b248b6
  3. 18 Feb, 2019 1 commit
    • Mike Stanton's avatar
      Reland "[Torque] Add source positions for Torque files" · b08c6947
      Mike Stanton authored
      Reason for revert/reland: UBSan complained of unaligned reads.
      
      To improve the Torque debugging experience, we can add source positions
      for each line. This information is carried through the generated
      CSA code (in <output directory>/gen/torque-generated/*.cc) and
      embedded as SourcePositions in the Code object.
      
      At snapshot time, these SourcePositions are stripped from the Code
      object and turned into platform-appropriate line number debug
      information.
      
      At this time on Linux, you'll need to build with "is_clang=false"
      in order to use GCC, because crucial steps are missing in Clang's
      ability to convey the information into the binary successfully.
      
      This CL also introduces a flag to control the existing source
      information in CSA code. --enable-source-at-csa-bind is now set
      to false by default because it's a bit confusing to "hop" between
      source lines in .TQ files and in .CC files. I expect to continue
      making adjustments there, as I want to provide helpful
      debugging aids at the CSA level as well as the Torque level.
      The current configuration prioritizes Torque.
      
      TBR=tebbi@chromium.org
      
      Bug: v8:8418
      Change-Id: Idb80467d3679ec2361386fe9b67597b93d7f72cf
      Reviewed-on: https://chromium-review.googlesource.com/c/1475763Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59657}
      b08c6947
  4. 15 Feb, 2019 2 commits
    • Michael Stanton's avatar
      Revert "[Torque] Add source positions for Torque files" · 9542fd8f
      Michael Stanton authored
      This reverts commit 0a24e67a.
      
      Reason for revert: Broke Linux 64 UBSan build with unaligned read in the snapshot. Will investigate...
      
      Original change's description:
      > [Torque] Add source positions for Torque files
      > 
      > To improve the Torque debugging experience, we can add source positions
      > for each line. This information is carried through the generated
      > CSA code (in <output directory>/gen/torque-generated/*.cc) and
      > embedded as SourcePositions in the Code object.
      > 
      > At snapshot time, these SourcePositions are stripped from the Code
      > object and turned into platform-appropriate line number debug
      > information.
      > 
      > At this time on Linux, you'll need to build with "is_clang=false"
      > in order to use GCC, because crucial steps are missing in Clang's
      > ability to convey the information into the binary successfully.
      > 
      > This CL also introduces a flag to control the existing source
      > information in CSA code. --enable-source-at-csa-bind is now set
      > to false by default because it's a bit confusing to "hop" between
      > source lines in .TQ files and in .CC files. I expect to continue
      > making adjustments there, as I want to provide helpful
      > debugging aids at the CSA level as well as the Torque level.
      > The current configuration prioritizes Torque.
      > 
      > A detailed guide on usage to follow (also on v8.dev).
      > 
      > Bug: v8:8418
      > Change-Id: Ib4226877ce4cae451bb4d0c546927e89f4e66b58
      > Reviewed-on: https://chromium-review.googlesource.com/c/1475473
      > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#59636}
      
      TBR=mvstanton@chromium.org,tebbi@chromium.org
      
      Change-Id: I4ccf94dfdb8b2ba238a60db9ecc8e3ceebef2699
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:8418
      Reviewed-on: https://chromium-review.googlesource.com/c/1475757Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59637}
      9542fd8f
    • Mike Stanton's avatar
      [Torque] Add source positions for Torque files · 0a24e67a
      Mike Stanton authored
      To improve the Torque debugging experience, we can add source positions
      for each line. This information is carried through the generated
      CSA code (in <output directory>/gen/torque-generated/*.cc) and
      embedded as SourcePositions in the Code object.
      
      At snapshot time, these SourcePositions are stripped from the Code
      object and turned into platform-appropriate line number debug
      information.
      
      At this time on Linux, you'll need to build with "is_clang=false"
      in order to use GCC, because crucial steps are missing in Clang's
      ability to convey the information into the binary successfully.
      
      This CL also introduces a flag to control the existing source
      information in CSA code. --enable-source-at-csa-bind is now set
      to false by default because it's a bit confusing to "hop" between
      source lines in .TQ files and in .CC files. I expect to continue
      making adjustments there, as I want to provide helpful
      debugging aids at the CSA level as well as the Torque level.
      The current configuration prioritizes Torque.
      
      A detailed guide on usage to follow (also on v8.dev).
      
      Bug: v8:8418
      Change-Id: Ib4226877ce4cae451bb4d0c546927e89f4e66b58
      Reviewed-on: https://chromium-review.googlesource.com/c/1475473Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59636}
      0a24e67a
  5. 22 Nov, 2018 1 commit
  6. 21 Nov, 2018 2 commits
  7. 31 Oct, 2018 3 commits
  8. 04 Oct, 2018 1 commit