1. 31 Oct, 2018 1 commit
  2. 19 Oct, 2018 3 commits
  3. 28 Sep, 2018 1 commit
    • Daniel Clifford's avatar
      Clean up common argument objects that share length property · 64e8a948
      Daniel Clifford authored
      This CL adds a bit more rigor to the handling of length properties
      in JSObject-derived classes that explicitly contain that property
      inline.
      
      This involves:
      - Introducing a new superclass of JSArgumentsObject called
        JSArgumentsObjectWithLength that is shared with other object
        instances that also have a fixed length property.
      - Adding JSArgumentsObjectWithLength to the type hierarchy in Torque,
        including adding fast-cases for leading the length property for all
        classes deriving from JSObjectWithLength.
      - Adding more rigor to Context and NativeContext handling in base.tq.
        This is useful for the map checks required to verify objects are
        argument object types derived from JSArgumentsObjectWithLength.
      
      Change-Id: I2f0a20601ffcb90b3767cbaeb766e9998d3462ec
      Reviewed-on: https://chromium-review.googlesource.com/1248661
      Commit-Queue: Daniel Clifford <danno@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56289}
      64e8a948
  4. 24 Sep, 2018 1 commit
    • Daniel Clifford's avatar
      [torque] Improve formatting in format-torque · f088840a
      Daniel Clifford authored
      Issues/problems addressed:
      
      - Fix line-wrapping and indenting for long declarations including strings,
        e.g. generates and constexpr clauses.
      - Implement proper formatting for typeswitch statements
      - Fix formatting of operator declarations
      - Fix formatting of constexpr if-clauses (the constexpr is now included on the
        same line as the if and it doesn't mess up the formatting that
      - Fix formatting of label declarations on callables, the "label" keyword now
        always starts a new line with indentation.
      - Remove space after identifier name in generic parameter declarations, e.g.
        "<a : T>" is now "<a: T>" which is consistent with type specification
        formatting elsewhere.
      - Indent "otherwise" clauses that have been pushed to the next line.
      
      Also ran the formatter over all existing .tq files.
      
      Bug: v8:7793
      Change-Id: I5adbb2ffa3d573deed062f9a5c1da57348c8fc71
      Reviewed-on: https://chromium-review.googlesource.com/1238580
      Commit-Queue: Daniel Clifford <danno@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56158}
      f088840a
  5. 11 Sep, 2018 1 commit
  6. 06 Sep, 2018 2 commits
  7. 04 Sep, 2018 1 commit
    • Mike Stanton's avatar
      [builtins] Enable Torque Array.prototype.splice · fd334b32
      Mike Stanton authored
      Before, splice was implemented with a C++ fast path and a
      comprehensive JavaScript version.
      
      This impl. is entirely in Torque with a fastpath for SMI,
      DOUBLE and OBJECT arrays, and a comprehensive slow path.
      The same level of "sparse" array support as given by the
      array.js implementation is included.
      
      This reland addresses several issues:
      
      * Removed "sparse" array support from splice.
      * Addressed ClusterFuzz issue 876443:
        The test and code that uses the fix is in this CL.
        The fix in isolation can be seen here:
        https://chromium-review.googlesource.com/c/v8/v8/+/1199403
      * Removed dead code in elements.cc
      
      BUG=chromium:876443, v8:8131, v8:1956, v8:7221
      
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: I2d4a66c24ba1edabeca34e27e6ff8ee6136ed5f1
      Reviewed-on: https://chromium-review.googlesource.com/1201783
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55610}
      fd334b32
  8. 03 Sep, 2018 1 commit
  9. 24 Aug, 2018 1 commit
  10. 22 Aug, 2018 1 commit
    • Tobias Tebbi's avatar
      Revert "[builtins] Reland Array.prototype.splice() Torque implementation." · e99a1092
      Tobias Tebbi authored
      This reverts commit cdaaa311.
      
      Reason for revert: chromium:876445 chromium:876453 chromium:876443
      
      Original change's description:
      > [builtins] Reland Array.prototype.splice() Torque implementation.
      > 
      > Before, splice was implemented with a C++ fast path and a
      > comprehensive JavaScript version.
      > 
      > This impl. is entirely in Torque with a fastpath for SMI,
      > DOUBLE and OBJECT arrays, and a comprehensive slow path.
      > The same level of "sparse" array support as given by the
      > array.js implementation is included.
      > 
      > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      > Change-Id: Ia7334a30b401988309e9909cfa0069da0bb6fb9f
      > Reviewed-on: https://chromium-review.googlesource.com/1169466
      > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#55263}
      
      TBR=mvstanton@chromium.org,jgruber@chromium.org,tebbi@chromium.org
      
      Change-Id: I5b750a98e671b7284474ffcabc6b4d37a9d1219e
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/1184741Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55289}
      e99a1092
  11. 21 Aug, 2018 1 commit
  12. 10 Aug, 2018 1 commit
  13. 09 Aug, 2018 2 commits
  14. 08 Aug, 2018 1 commit
  15. 07 Aug, 2018 1 commit
  16. 02 Jul, 2018 1 commit
  17. 18 Jun, 2018 1 commit
  18. 13 Jun, 2018 2 commits
  19. 12 Jun, 2018 1 commit
    • Daniel Clifford's avatar
      [torque] Turn implicit converts/unsafe_casts into generics · bbbfd81c
      Daniel Clifford authored
      In the process:
        - Add strict ordering of Types so that name mangling is consistent
          and build time. Previously, the UnionType stored the union's
          types in a std::set<const Type*>, which did not have a consistent
          ordering of the types in the set.
        - Add a int31 type to enable consistency and correctness of
          handling of 'constexpr int31' values on the C++ side.
        - By removing the "implicit" keyword for operators, there is now
          one less difference between operators and calls, another
          incremental step in unifying operators and calls.
        - Enable external (i.e. C++-defined) generic specializations
        - Add CSA support for checking double ElementsKinds, including
          tests.
        - Clean up some constexpr/non-constexpr handling of ElementsKinds.
      
      Bug: v8:7793
      Change-Id: I27699aba70b98ebf5466e5b62b045d7b1dad62c8
      Reviewed-on: https://chromium-review.googlesource.com/1091155
      Commit-Queue: Daniel Clifford <danno@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53664}
      bbbfd81c
  20. 07 Jun, 2018 1 commit
    • Simon Zünd's avatar
      Reland "[array] Use random middle element to determine pivot during sorting" · 3896cdc2
      Simon Zünd authored
      This is a reland of 91bab558
      
      This CL contains two major changes w.r.t to the original CL:
      
      The random state is removed from the Smi root list and we pre-seed the RNG
      on each sort with the length of the array.
      
      To cut down on the length of the arguments list and to keep track of the
      random state across recursive calls, we move most of the sort arguments into
      a FixedArray and reload from the array for each recursion.
      
      Original change's description:
      > [array] Use random middle element to determine pivot during sorting
      >
      > This CL adds a "random state" to the Smi Root list and implements a
      > basic Linear congruential pseudo random number generator in Torque.
      >
      > The RNG is used to determine the pivot element for sorting. This will
      > prevent the worst cases for certain data layouts.
      >
      > Drive-by-fix: Make sorting of ranges and execution pauses for profviz
      > deterministic by adding a secondary sorting criteria.
      >
      > Bug: v8:7382
      > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      > Change-Id: Ieb871e98e74bdb803f821b0cd35d2f67ee0f2868
      > Reviewed-on: https://chromium-review.googlesource.com/1082193
      > Reviewed-by: Hannes Payer <hpayer@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Camillo Bruni <cbruni@chromium.org>
      > Commit-Queue: Simon Zünd <szuend@google.com>
      > Cr-Commit-Position: refs/heads/master@{#53524}
      
      Bug: v8:7382
      Change-Id: Ia7bef7ed1c0e904ffe43bc428e702f64f9c6a60b
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/1087888Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Simon Zünd <szuend@google.com>
      Cr-Commit-Position: refs/heads/master@{#53583}
      3896cdc2
  21. 06 Jun, 2018 1 commit
  22. 05 Jun, 2018 2 commits
  23. 04 Jun, 2018 2 commits
    • Jakob Gruber's avatar
      Revert "[array] Implement Array.p.sort in Torque" · 3348ed0b
      Jakob Gruber authored
      This reverts commit df1676e6.
      
      Reason for revert: https://crbug.com/v8/7382#c26
      
      Original change's description:
      > [array] Implement Array.p.sort in Torque
      > 
      > This CL implements a generic baseline version and 3 fastpaths, for
      > various elements kinds, of Array.p.sort in Torque. Details can be found
      > in the Design Doc: https://goo.gl/Ge321G.
      > 
      > Performance impact on micro benchmarks depends on the element kind
      > and whether the user provides a comparison function.
      > For HoleySmi/HoleyElement we have a speedup between 1.5-1.8 across
      > the board. For Dictionary we are slower in all micro benchmarks (0.7).
      > For PackedSmi it depends on the call site and whether or not a
      > comparison function is used.
      > 
      > Detailed numbers: https://goo.gl/mTyPSb
      > 
      > Bug: v8:7382
      > Change-Id: I50acabd2032af0bc01d36b0de0f555d66be56a7e
      > Reviewed-on: https://chromium-review.googlesource.com/1061523
      > Commit-Queue: Simon Zünd <szuend@google.com>
      > Reviewed-by: Camillo Bruni <cbruni@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#53481}
      
      TBR=cbruni@chromium.org,jgruber@chromium.org,szuend@google.com
      
      Change-Id: I4c1b32a434d49caba67c80bccb068390607f90a2
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7382
      Reviewed-on: https://chromium-review.googlesource.com/1085407Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53494}
      3348ed0b
    • Simon Zünd's avatar
      [array] Implement Array.p.sort in Torque · df1676e6
      Simon Zünd authored
      This CL implements a generic baseline version and 3 fastpaths, for
      various elements kinds, of Array.p.sort in Torque. Details can be found
      in the Design Doc: https://goo.gl/Ge321G.
      
      Performance impact on micro benchmarks depends on the element kind
      and whether the user provides a comparison function.
      For HoleySmi/HoleyElement we have a speedup between 1.5-1.8 across
      the board. For Dictionary we are slower in all micro benchmarks (0.7).
      For PackedSmi it depends on the call site and whether or not a
      comparison function is used.
      
      Detailed numbers: https://goo.gl/mTyPSb
      
      Bug: v8:7382
      Change-Id: I50acabd2032af0bc01d36b0de0f555d66be56a7e
      Reviewed-on: https://chromium-review.googlesource.com/1061523
      Commit-Queue: Simon Zünd <szuend@google.com>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53481}
      df1676e6
  24. 29 May, 2018 1 commit
  25. 24 May, 2018 1 commit
  26. 18 May, 2018 1 commit
  27. 09 May, 2018 1 commit
  28. 07 May, 2018 1 commit
    • Daniel Clifford's avatar
      [torque] 'bool' is now 'true|false' not 'yes|no' · dd5cdcee
      Daniel Clifford authored
      In the process, rename Boolean constants (i.e. JavaScript constants),
      to 'True' and 'False'. This uncovered a bug in the internal handling
      of True/False labels was fixed (they shouldn't be Values and Torque
      shouldn't conflate Labels with other Declarables, throwing exceptions
      when they're improperly used in the wrong context). Furthermore,
      the internal labels used for True and False for if statements
      have been renamed so that they can't be aliased from user Torque code.
      
      Change-Id: I09dbd2241d2bc2f1daff53862dee1b601810060c
      Reviewed-on: https://chromium-review.googlesource.com/1044370Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53026}
      dd5cdcee
  29. 04 May, 2018 2 commits
    • Daniel Clifford's avatar
      [torque]: Add constexpr keyword/types for compile-time evaluation · aeb86d57
      Daniel Clifford authored
      Torque expressions of type constexpr are evaluated at compile-time
      rather than runtime. They are backed by C++ types rather than
      TNode<X> types, so the macro functions that are called by generated
      C++ code expect values to be computed when the snapshot is generated
      rather than by TurboFan-generated code.
      
      Specifically, "if" statements can have a constexpr modifier. With this
      modifier, a type of "constexpr bool" is expected rather than "bool",
      and in that case instead of generating a CSA BranchIf, it generates
      a C++ "if (<bool expression>)" that generates code for only the true or
      false path based on the bool value at torque-execution (compile time)
      rather than generating both paths (including inserting phi nodes
      for variables modified on either branch at the re-merge at the end
      of the if) and dynamically dispatching to the true or false path
      during d8/Chrome/node.js execution (runtime) using a CSA BranchIf.
      
      Change-Id: I8238e25aaadbfc618847e04556e96a3949ea5a8d
      Reviewed-on: https://chromium-review.googlesource.com/1042085
      Commit-Queue: Daniel Clifford <danno@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53001}
      aeb86d57
    • Daniel Clifford's avatar
      [Torque]: add assert(), unreachable and debug statements · 9cd8995f
      Daniel Clifford authored
      - In debug builds, 'assert(<expr>)' evaluates and aborts execution
        if the provided Torque expression is false at runtime.
        assert(<expr>) supports the same set of expressions protocols
        as Toruqe's if statement, i.e. both bool values and BranchIf-
        style tests. Upon failure, the assertion prints the Torque
        source code of the failed expression, not the generated CSA
        code.
      - 'unreachable' calls CSA's Unreachable() and signals to Torque
        that code execution cannot continue (i.e. its statement
        returns the 'never' type). In debug builds, the line number
        and position of the statement are printed before breaking.
      - 'debug' calls CSA's DebugBreak(). In debug builds, the line
        number and position of the 'debug' are printed before breaking.
      
      Change-Id: I4efd052536bb402c097a0d5f7be56e154b5b3676
      Reviewed-on: https://chromium-review.googlesource.com/1042570
      Commit-Queue: Daniel Clifford <danno@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52984}
      9cd8995f
  30. 23 Apr, 2018 3 commits