1. 05 May, 2022 1 commit
  2. 11 Jan, 2021 1 commit
  3. 07 Oct, 2019 1 commit
    • Joey Gouly's avatar
      [tests] Fix subobject-linkage error when building with GCC · 8ca191b6
      Joey Gouly authored
      Placing these tests in anonymous namespaces, is the suggested fix
      according to the GCC documentation.
      
      The GCC documentation states: "If a type A depends on a type B with no or
       internal linkage, defining it in multiple translation units would be an
      ODR violation because the meaning of B is different in each translation unit.
      If A only appears in a single translation unit, the best way to silence the
      warning is to give it internal linkage by putting it in an anonymous namespace as well."
      
      Change-Id: I69a1e9b5f1789e9a7a62c762cd499809a72e0ea5
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1836255
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64128}
      8ca191b6
  4. 18 Feb, 2019 1 commit
  5. 17 Sep, 2018 1 commit
  6. 02 Mar, 2018 1 commit
  7. 28 Sep, 2017 1 commit
  8. 27 Feb, 2017 1 commit
  9. 02 Nov, 2016 2 commits
    • danno's avatar
      [turbofan] Support variable size argument removal in TF-generated functions · fe552636
      danno authored
      This is preparation for using TF to create builtins that handle variable number of
      arguments and have to remove these arguments dynamically from the stack upon
      return.
      
      The gist of the changes:
      - Added a second argument to the Return node which specifies the number of stack
        slots to pop upon return in addition to those specified by the Linkage of the
        compiled function.
      - Removed Tail -> Non-Tail fallback in the instruction selector. Since TF now should
        handles all tail-call cases except where the return value type differs, this fallback
        was not really useful and in fact caused unexpected behavior with variable
        sized argument popping, since it wasn't possible to materialize a Return node
        with the right pop count from the TailCall without additional context.
      - Modified existing Return generation to pass a constant zero as the additional
        pop argument since the variable pop functionality
      
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2446543002
      Cr-Commit-Position: refs/heads/master@{#40699}
      fe552636
    • machenbach's avatar
      Revert of [turbofan] Support variable size argument popping in TF-generated... · c61902e0
      machenbach authored
      Revert of [turbofan] Support variable size argument popping in TF-generated functions (patchset #13 id:240001 of https://codereview.chromium.org/2446543002/ )
      
      Reason for revert:
      Seems to break arm64 sim debug and blocks roll:
      https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20debug/builds/3294
      
      Original issue's description:
      > [turbofan] Support variable size argument removal in TF-generated functions
      >
      > This is preparation for using TF to create builtins that handle variable number of
      > arguments and have to remove these arguments dynamically from the stack upon
      > return.
      >
      > The gist of the changes:
      > - Added a second argument to the Return node which specifies the number of stack
      >   slots to pop upon return in addition to those specified by the Linkage of the
      >   compiled function.
      > - Removed Tail -> Non-Tail fallback in the instruction selector. Since TF now should
      >   handles all tail-call cases except where the return value type differs, this fallback
      >   was not really useful and in fact caused unexpected behavior with variable
      >   sized argument popping, since it wasn't possible to materialize a Return node
      >   with the right pop count from the TailCall without additional context.
      > - Modified existing Return generation to pass a constant zero as the additional
      >   pop argument since the variable pop functionality
      >
      > LOG=N
      
      TBR=bmeurer@chromium.org,mstarzinger@chromium.org,epertoso@chromium.org,danno@chromium.org
      # Not skipping CQ checks because original CL landed more than 1 days ago.
      NOPRESUBMIT=true
      
      Review-Url: https://codereview.chromium.org/2473643002
      Cr-Commit-Position: refs/heads/master@{#40691}
      c61902e0
  10. 31 Oct, 2016 1 commit
    • danno's avatar
      [turbofan] Support variable size argument removal in TF-generated functions · 5319b50c
      danno authored
      This is preparation for using TF to create builtins that handle variable number of
      arguments and have to remove these arguments dynamically from the stack upon
      return.
      
      The gist of the changes:
      - Added a second argument to the Return node which specifies the number of stack
        slots to pop upon return in addition to those specified by the Linkage of the
        compiled function.
      - Removed Tail -> Non-Tail fallback in the instruction selector. Since TF now should
        handles all tail-call cases except where the return value type differs, this fallback
        was not really useful and in fact caused unexpected behavior with variable
        sized argument popping, since it wasn't possible to materialize a Return node
        with the right pop count from the TailCall without additional context.
      - Modified existing Return generation to pass a constant zero as the additional
        pop argument since the variable pop functionality
      
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2446543002
      Cr-Commit-Position: refs/heads/master@{#40678}
      5319b50c
  11. 02 Aug, 2016 1 commit
  12. 21 Jun, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Address the useless overflow bit materialization. · 00889cc2
      bmeurer authored
      Add control dependencies to Projection and Int32Add/SubWithOverflow
      operators, to prevent the scheduler from moving the Projection nodes
      into the wrong place. This way the instruction selection can combine
      the Int32Add/SubWithOverflow operations with the DeoptimizeIf and/or
      DeoptimizeUnless nodes. This needs new operators CheckedInt32Add and
      CheckedInt32Sub so that we can delay the actual lowering until the
      effect/control linearizer.
      
      This also makes CheckIf operator obsolete, so we can drop it.
      
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2082993002
      Cr-Commit-Position: refs/heads/master@{#37148}
      00889cc2
  13. 20 Jun, 2016 1 commit
  14. 10 Dec, 2015 1 commit
    • jarin's avatar
      [turbofan] Make MachineType a pair of enums. · bb2a830d
      jarin authored
      MachineType is now a class with two enum fields:
      - MachineRepresentation
      - MachineSemantic
      
      Both enums are usable on their own, and this change switches some places from using MachineType to use just MachineRepresentation. Most notably:
      - register allocator now uses just the representation.
      - Phi and Select nodes only refer to representations.
      
      Review URL: https://codereview.chromium.org/1513543003
      
      Cr-Commit-Position: refs/heads/master@{#32738}
      bb2a830d
  15. 14 Oct, 2015 1 commit
    • jarin's avatar
      [turbofan] Introduce node regions for protection from scheduling. · 59c616cc
      jarin authored
      This CL re-purposes ValueEffect and Finish as delimiters for regions
      that are scheduled atomically (renamed to BeginRegion, FinishRegion).
      
      The BeginRegion node takes and produces an effect. For the uses that do
      not care about the placement in the effect chain, it is ok to feed
      graph->start() as an effect input.
      
      The FinishRegion takes a value and an effect and produces a value and
      an effect. It is important that any value or effect produced inside the
      region is not used outside the region. The FinishRegion node is the only
      way to smuggle an effect and a value out.
      
      At the moment, this does not support control flow inside the region. Control flow would be hard.
      
      During scheduling we do some sanity check, but the checks are not exhaustive. Here is what we check:
      - the effect chain between begin and finish is linear (no splitting,
        single effect input and output).
      - any value produced is consumed by the FinishRegion node.
      - no control flow outputs.
      
      Review URL: https://codereview.chromium.org/1399423002
      
      Cr-Commit-Position: refs/heads/master@{#31265}
      59c616cc
  16. 09 Oct, 2015 1 commit
  17. 08 Oct, 2015 1 commit
  18. 31 Aug, 2015 1 commit
  19. 19 Jun, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Proper dead code elimination as regular reducer. · 733a2463
      bmeurer authored
      The three different concerns that the ControlReducer used to deal with
      are now properly separated into
      
        a.) DeadCodeElimination, which is a regular AdvancedReducer, that
            propagates Dead via control edges,
        b.) CommonOperatorReducer, which does strength reduction on common
            operators (i.e. Branch, Phi, and friends), and
        c.) GraphTrimming, which removes dead->live edges from the graph.
      
      This will make it possible to run the DeadCodeElimination together with
      other passes that actually introduce Dead nodes, i.e. typed lowering;
      and it opens the door for general inlining without two stage fix point
      iteration.
      
      To make the DeadCodeElimination easier and more uniform, we basically
      reverted the introduction of DeadValue and DeadEffect, and changed the
      Dead operator to produce control, value and effect. Note however that
      this is not a requirement, but merely a way to make dead propagation
      easier and more uniform. We could always go back and decide to have
      different Dead operators if some other change requires that.
      
      Note that there are several additional opportunities for cleanup now,
      i.e. OSR deconstruction could be a regular reducer now, and we don't
      need to use TheHole as dead value marker in the GraphReducer. And we can
      actually run the dead code elimination together with the other passes
      instead of using separate passes over the graph.  We will do this in
      follow up CLs.
      
      R=jarin@chromium.org, mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/1193833002
      
      Cr-Commit-Position: refs/heads/master@{#29146}
      733a2463
  20. 18 Jun, 2015 1 commit
  21. 11 Jun, 2015 1 commit
  22. 04 Jun, 2015 1 commit
  23. 28 May, 2015 1 commit
    • mstarzinger's avatar
      [turbofan] Introduce prediction for exception handlers. · d8b94f34
      mstarzinger authored
      This introduces a conservative prediction for each exception handler
      whether it will locally catch an exception or re-throw it to outside
      the code bondaries. It will allow for a more intuitive prediction of
      whether an exception is considered "caught" or "uncaught".
      
      R=bmeurer@chromium.org,yangguo@chromium.org
      BUG=chromium:492522
      LOG=N
      
      Review URL: https://codereview.chromium.org/1158563008
      
      Cr-Commit-Position: refs/heads/master@{#28681}
      d8b94f34
  24. 26 May, 2015 2 commits
  25. 06 May, 2015 1 commit
  26. 20 Apr, 2015 1 commit
  27. 31 Mar, 2015 2 commits
  28. 20 Feb, 2015 1 commit
  29. 17 Feb, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Optimize certain chains of Branch into a Switch. · acd9c46c
      bmeurer authored
      This adds a new ControlFlowOptimizer that - for now - recognizes chains
      of Branches generated by the SwitchBuilder for a subset of javascript
      switches into Switch nodes. Those Switch nodes are then lowered to
      either table or lookup switches.
      
      Also rename Case to IfValue (and introduce IfDefault) for consistency.
      
      BUG=v8:3872
      LOG=n
      
      Review URL: https://codereview.chromium.org/931623002
      
      Cr-Commit-Position: refs/heads/master@{#26691}
      acd9c46c
  30. 11 Feb, 2015 1 commit
  31. 09 Feb, 2015 1 commit
  32. 27 Jan, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Ensure that NTLs are always properly connected to the end. · 59a02ebd
      bmeurer authored
      Up until now we used a special Terminate node to artifically connect non
      terminating loops to the End node, but this was kind of adhoc and didn't
      work for the CFG. So without all kinds of weird hacks, the end block in
      the CFG will not be connected to NTLs, which makes it impossible to
      compute post dominance / control dependence in the current setting.
      
      So instead of Terminate, we add a special Branch to NTLs, whose
      condition is the special Always node, which corresponds to True, except
      that it cannot be folded away. This way we don't need any special
      machinery in the scheduler, since it's just a regular Branch.
      
      R=titzer@chromium.org
      
      Review URL: https://codereview.chromium.org/875263004
      
      Cr-Commit-Position: refs/heads/master@{#26294}
      59a02ebd
  33. 23 Dec, 2014 1 commit
  34. 22 Dec, 2014 1 commit
  35. 29 Oct, 2014 3 commits