1. 04 Feb, 2019 1 commit
  2. 01 Feb, 2019 1 commit
  3. 30 Jan, 2019 2 commits
    • Jakob Gruber's avatar
      Explicitly store the code layout in CodeDesc · ad3546ab
      Jakob Gruber authored
      This is an initial step towards clarifying the layout of the
      instruction area. As follow-ups, we should remove additional
      safepoint and handler table offset parameters, and perhaps alter
      Code::safepoint_table_offset (handler_table) semantics to always
      contain a real offset and avoid the magic 0 signifying nonexistent
      tables.
      
      Bug: v8:8758
      Change-Id: I9f54629ff3ddad69904b0e1ce2a58e047397aa15
      Reviewed-on: https://chromium-review.googlesource.com/c/1434036
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59202}
      ad3546ab
    • Stephan Herhut's avatar
      [regalloc] Land control flow aware allocation · 66771f42
      Stephan Herhut authored
      This change lands a change to the register allocator. Other than
      classical linear scan, we now take control flow events into account
      when deciding spill descisions.
      
      The basic idea is to restore the state of a predecessor on entry
      of a successor. In the case of multiple predecessors, we use
      heuristics to compute the new state based on the predecessors.
      
      The main addition to the machinery is to support unspilling
      live ranges and to undo live range splitting in certain cases.
      
      Currently, disabled behind a flag.
      
      Change-Id: I37a70c948be826a90d8b806a52856ad81f475573
      Reviewed-on: https://chromium-review.googlesource.com/c/1426129
      Commit-Queue: Stephan Herhut <herhut@chromium.org>
      Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59195}
      66771f42
  4. 29 Jan, 2019 3 commits
  5. 25 Jan, 2019 1 commit
    • Andreas Haas's avatar
      [wasm][anyref] Support anyref stack parameters · 258371bd
      Andreas Haas authored
      Anyref parameters can exist across GC runs. Therefore the GC has to
      know where anyref parameters are on the stack so that it can mark them
      in its marking phase, and update them in the compaction phase.
      
      Already in a previous CL we grouped all anyref parameters so that they
      can be found more easily in a stack frame, see
      https://crrev.com/c/1371827. In this CL we implement the stack scanning
      itself.
      
      Note that anyref parameters are not scanned while iterating over the
      caller's frame (to which they actually belong), but while iterating
      over the callee's frame. The reason is that with tail-calls, only the
      callee knows how many tagged stack parameters (aka anyref parameters)
      there are.
      
      R=mstarzinger@chromium.org
      also-by=mstarzinger@chromium.org
      
      Bug: v8:7581
      Change-Id: I7a41ce11d06c0d420146fdb0bb8d5606f28824d7
      Reviewed-on: https://chromium-review.googlesource.com/c/1424955
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59099}
      258371bd
  6. 22 Jan, 2019 2 commits
  7. 21 Jan, 2019 1 commit
    • Clemens Hammacher's avatar
      Reland "[wasm] Split compilation in three stages" · 6c2e35b9
      Clemens Hammacher authored
      This is a reland of 4e1d7c87.
      Failure on arm and arm64 is fixed by https://crrev.com/c/1411885.
      
      Original change's description:
      > [wasm] Split compilation in three stages
      >
      > In order to refactor ownership between objects in wasm compilation, the
      > compilation (executed by background tasks) is split in three stages:
      > getting a compilation unit (while holding a mutex), executing the work
      > (without any mutex and without keeping the NativeModule alive), and
      > submitting the work (with a mutex again).
      >
      > This CL prepares this design by splitting compilation from submission.
      > Both steps are still executed right after each other. This will be
      > changed in a follow-up CL.
      >
      > R=titzer@chromium.org
      > CC=mstarzinger@chromium.org
      >
      > Bug: v8:8689
      > Change-Id: I2f92aee8e2f2d45470d8c63314ed026341630902
      > Reviewed-on: https://chromium-review.googlesource.com/c/1414920
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58929}
      
      TBR=titzer@chromium.org
      
      Bug: v8:8689
      Change-Id: I58ff07d0e0ac8df0f6ee23c416f992954f4673d2
      Reviewed-on: https://chromium-review.googlesource.com/c/1422748Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58959}
      6c2e35b9
  8. 18 Jan, 2019 2 commits
    • Michael Achenbach's avatar
      Revert "[wasm] Split compilation in three stages" · b7cc4f7a
      Michael Achenbach authored
      This reverts commit 4e1d7c87.
      
      Reason for revert:
      https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20arm%20-%20sim%20-%20debug/14986
      
      Original change's description:
      > [wasm] Split compilation in three stages
      > 
      > In order to refactor ownership between objects in wasm compilation, the
      > compilation (executed by background tasks) is split in three stages:
      > getting a compilation unit (while holding a mutex), executing the work
      > (without any mutex and without keeping the NativeModule alive), and
      > submitting the work (with a mutex again).
      > 
      > This CL prepares this design by splitting compilation from submission.
      > Both steps are still executed right after each other. This will be
      > changed in a follow-up CL.
      > 
      > R=​titzer@chromium.org
      > CC=​mstarzinger@chromium.org
      > 
      > Bug: v8:8689
      > Change-Id: I2f92aee8e2f2d45470d8c63314ed026341630902
      > Reviewed-on: https://chromium-review.googlesource.com/c/1414920
      > Reviewed-by: Ben Titzer <titzer@chromium.org>
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58929}
      
      TBR=titzer@chromium.org,clemensh@chromium.org
      
      Change-Id: Ic3d0287b354ef5f834b76bc2cdc096d2231f4477
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:8689
      Reviewed-on: https://chromium-review.googlesource.com/c/1422917Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58932}
      b7cc4f7a
    • Clemens Hammacher's avatar
      [wasm] Split compilation in three stages · 4e1d7c87
      Clemens Hammacher authored
      In order to refactor ownership between objects in wasm compilation, the
      compilation (executed by background tasks) is split in three stages:
      getting a compilation unit (while holding a mutex), executing the work
      (without any mutex and without keeping the NativeModule alive), and
      submitting the work (with a mutex again).
      
      This CL prepares this design by splitting compilation from submission.
      Both steps are still executed right after each other. This will be
      changed in a follow-up CL.
      
      R=titzer@chromium.org
      CC=mstarzinger@chromium.org
      
      Bug: v8:8689
      Change-Id: I2f92aee8e2f2d45470d8c63314ed026341630902
      Reviewed-on: https://chromium-review.googlesource.com/c/1414920Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58929}
      4e1d7c87
  9. 16 Jan, 2019 1 commit
  10. 15 Jan, 2019 1 commit
  11. 10 Jan, 2019 3 commits
  12. 08 Jan, 2019 1 commit
    • Ross McIlroy's avatar
      [Deopt] Remove jump table in prologue of deopt entries. · 4ab96a9a
      Ross McIlroy authored
      Remove the use of a jump table in the prologue of the deopt entries
      and instead pass the bailout id explicitly in a register when calling
      the deopt entry routine from optimized code. This unifies the logic
      with the way the Arm64 code works. It saves the following amount of
      memory in code stubs:
      
       - arm:  384KB
       - ia32: 480KB
       - x64:  240KB
      
      This could be offset by a slight increase in the size of optimized code
      for loading the immediate, however this impact should be minimal and
      will scale with the maximum number of bailout ids (e.g., the size of
      code will increase by one instruction per bailout id on Arm, therefore
      ~98,000 bailouts will be needed before the overhead is greater than
      the current fixed table size).
      
      Change-Id: I838604b48fa04cbd45320c7b9dac0de08fd8eb25
      Reviewed-on: https://chromium-review.googlesource.com/c/1398224
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58636}
      4ab96a9a
  13. 07 Jan, 2019 1 commit
  14. 26 Dec, 2018 1 commit
  15. 13 Dec, 2018 1 commit
  16. 12 Dec, 2018 1 commit
  17. 11 Dec, 2018 1 commit
  18. 07 Dec, 2018 3 commits
  19. 04 Dec, 2018 1 commit
  20. 27 Nov, 2018 1 commit
  21. 26 Nov, 2018 1 commit
    • Ben L. Titzer's avatar
      [wasm] Intrinsify math imports · 99484e23
      Ben L. Titzer authored
      This CL adds new Wasm import call kinds that correspond to various
      math functions that can be imported from JavaScript, such as trigonometry.
      Instead of calling a special import wrapper that converts arguments
      to tagged values by boxing, we can now generate calls to little WASM
      stubs that contain a single WASM bytecode each.
      
      R=mstarzinger@chromium.org
      BUG=v8:8423
      
      Change-Id: I59b1be2dd36d190a8b6c98b88c86cecc0ca7f4a2
      Reviewed-on: https://chromium-review.googlesource.com/c/1349279
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57835}
      99484e23
  22. 23 Nov, 2018 1 commit
  23. 22 Nov, 2018 3 commits
  24. 21 Nov, 2018 1 commit
  25. 20 Nov, 2018 1 commit
  26. 15 Nov, 2018 4 commits
    • Jakob Gruber's avatar
      Reland "[builtins] Support embedded builtins in nosnapshot builds" · e1044d10
      Jakob Gruber authored
      This is a reland of bf2f0a02
      
      Original change's description:
      > [builtins] Support embedded builtins in nosnapshot builds
      >
      > This CL adds support for embedded builtins in nosnap builds by creating
      > and setting an 'embedded blob' after builtin generation. Unlike
      > snapshot builds, the blob is not embedded into the .text section but
      > located on the C++ heap.
      >
      > This makes nosnap builds more consistent with mksnapshot, and allows us
      > to simplify there and in serializer cctests.
      >
      > Complications arise from the different workflows we need to support:
      >
      > 1. the standard mksnapshot build process,
      > 2. nosnap builds (which reuse the blob created by the first Isolate),
      > 2. and tests with various complicated serialization workflows.
      >
      > To cover all of these cases, this CL introduces two knobs to twiddle:
      >
      > 1. A 'sticky' embedded blob which overrides compiled-in default
      >    embedded blobs at Isolate setup.
      > 2. The blob lifecycle can be managed manually or through refcounting.
      >
      > These are described in more detail in isolate.cc.
      >
      > Tbr: ulan@chromium.org
      > Bug: v8:6666, v8:8350
      > Change-Id: I3842e40cdaf45d2cadd05c6eb1ec2f5e3d83568d
      > Reviewed-on: https://chromium-review.googlesource.com/c/1310195
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#57523}
      
      Tbr: ulan@chromium.org,yangguo@chromium.org
      Bug: v8:6666, v8:8350
      Change-Id: I13b523c9e7406b39a3cd28465c06f17f1744a738
      Reviewed-on: https://chromium-review.googlesource.com/c/1337578
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57540}
      e1044d10
    • Ross McIlroy's avatar
      [Compiler] Ensure TurboFan holds onto BytecodeArray to keep it alive. · fed1364a
      Ross McIlroy authored
      With Bytecode flushing, the a SharedFunctionInfo's bytecode might be flushed
      while the compiler is expecting it to still exist. Rather than continually
      getting the bytecode from the SFI, instead bottleneck the points where we get
      BytecodeArray from SFIs and maintain an explicit strong reference to the
      BytecodeArray from that point onwards to prevent flushing.
      
      BUG=v8:8395
      
      Change-Id: I6a18adec99402838690971eb37ee0617cdc15920
      Reviewed-on: https://chromium-review.googlesource.com/c/1309763
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57536}
      fed1364a
    • Michael Starzinger's avatar
      [wasm] Slightly simplify {PipelineData} class. · 5eef6886
      Michael Starzinger authored
      R=clemensh@chromium.org
      
      Change-Id: I57183c306a4b0b38822ae3136a8c49ab94992010
      Reviewed-on: https://chromium-review.googlesource.com/c/1337575Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57530}
      5eef6886
    • Jakob Gruber's avatar
      Revert "[builtins] Support embedded builtins in nosnapshot builds" · 856be9c2
      Jakob Gruber authored
      This reverts commit bf2f0a02.
      
      Reason for revert: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20nosnap%20-%20debug/21753
      
      Original change's description:
      > [builtins] Support embedded builtins in nosnapshot builds
      > 
      > This CL adds support for embedded builtins in nosnap builds by creating
      > and setting an 'embedded blob' after builtin generation. Unlike
      > snapshot builds, the blob is not embedded into the .text section but
      > located on the C++ heap.
      > 
      > This makes nosnap builds more consistent with mksnapshot, and allows us
      > to simplify there and in serializer cctests.
      > 
      > Complications arise from the different workflows we need to support:
      > 
      > 1. the standard mksnapshot build process,
      > 2. nosnap builds (which reuse the blob created by the first Isolate),
      > 2. and tests with various complicated serialization workflows.
      > 
      > To cover all of these cases, this CL introduces two knobs to twiddle:
      > 
      > 1. A 'sticky' embedded blob which overrides compiled-in default
      >    embedded blobs at Isolate setup.
      > 2. The blob lifecycle can be managed manually or through refcounting.
      > 
      > These are described in more detail in isolate.cc.
      > 
      > Tbr: ulan@chromium.org
      > Bug: v8:6666, v8:8350
      > Change-Id: I3842e40cdaf45d2cadd05c6eb1ec2f5e3d83568d
      > Reviewed-on: https://chromium-review.googlesource.com/c/1310195
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#57523}
      
      TBR=ulan@chromium.org,yangguo@chromium.org,jgruber@chromium.org
      
      Change-Id: I6e35a0cb7186fb50f1012f5c618fb8b48b24a813
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6666, v8:8350
      Reviewed-on: https://chromium-review.googlesource.com/c/1337577Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57529}
      856be9c2