1. 01 Feb, 2018 1 commit
  2. 31 Jan, 2018 3 commits
    • Michal Majewski's avatar
      [test] Move options to test config · d3083b46
      Michal Majewski authored
      Bug: v8:6917
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: I254d2e545709029346f585b02a9edf91d3f27893
      Reviewed-on: https://chromium-review.googlesource.com/893321Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michał Majewski <majeski@google.com>
      Cr-Commit-Position: refs/heads/master@{#50996}
      d3083b46
    • Benedikt Meurer's avatar
      [builtins] Refactor promises to reduce GC overhead. · 8e7737cb
      Benedikt Meurer authored
      This implements the ideas outlined in the section "Microtask queue"
      of the exploration document "Promise and async/await performance" (at
      https://goo.gl/WHRar2), except that the microtask queue stays a linear
      FixedArray for now, to avoid running into trouble with the parallel
      scavenger. This way we can already save a significant amount of
      allocations, thereby reducing the GC frequency quite a bit.
      
      All items on the microtask queue are now proper structs that subclass
      Microtask, i.e. we also wrap JSFunction and MicrotaskCallback jobs
      into structs. We also consistently remember the context for every
      microtask (except for MicrotaskCallback where we don't have a
      context), and execute it later in exactly that context (as required
      by the spec anyways for the Promise related jobs). Particularly
      interesting is the PromiseReactionJobTask and its subclasses, since
      they are designed to have the same size as the PromiseReaction. When
      we resolve a JSPromise we just take the existing PromiseReaction
      instances and morph them into PromiseFulfillReactionJobTask or
      PromiseRejectReactionJobTask (depending whether you "Fulfill" or
      "Reject"). That way the JSPromise class is now only 6 words instead
      of 10 words.
      
      Also the PromiseReaction and the reaction tasks can either carry a
      JSPromise (for the fast native case) or a PromiseCapability (for the
      generic case), which means we don't always pay the overhead of having
      to also remember the "deferred resolve" and "deferred reject" handlers
      that are only relevant for the generic case anyways.
      
      It also fixes a spec violation where we called "then" before we actually
      enqueued the PromiseResolveThenableJob, which is observably wrong.
      Calling it later has the advantage that it should be fairly
      straight-forward now to completely avoid it for native Promise
      instances.
      
      This seems to save around 10-20% on the various Promise benchmarks and
      micro-benchmarks. We expect to gain even more as we're now able to
      inline various operations into TurboFan optimized code easily.
      
      Bug: v8:7253
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I893d24ca5bb046974b4f5826a8f6dd22f1210b6a
      Reviewed-on: https://chromium-review.googlesource.com/892819
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50980}
      8e7737cb
    • Michal Majewski's avatar
      Reland "[test] Random seed processor" · 5ede3cb5
      Michal Majewski authored
      This is a reland of 0db74d49.
      
      Original change's description:
      > [test] Random seed processor
      > 
      > 1. --total-timeout-sec now available for ./run-tests.py. It can be
      > useful with infinite seed stressing
      > 2. random seed dropped from the context. Now JSON progress indicator
      > gets it from the list of command args.
      > 
      > Bug: v8:6917
      > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      > Change-Id: I73e535bc8face9b913c696b8d5e3a246fa231004
      > Reviewed-on: https://chromium-review.googlesource.com/888524
      > Commit-Queue: Michał Majewski <majeski@google.com>
      > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#50964}
      
      Bug: v8:6917
      Change-Id: I1ea376a4abffce5ab65f4834ea7e6d6011765ffa
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/894204Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michał Majewski <majeski@google.com>
      Cr-Commit-Position: refs/heads/master@{#50978}
      5ede3cb5
  3. 30 Jan, 2018 3 commits
  4. 23 Jan, 2018 1 commit
  5. 19 Jan, 2018 2 commits
  6. 11 Jan, 2018 1 commit
  7. 04 Jan, 2018 2 commits
    • Michal Majewski's avatar
      [test] Check output on the worker process. · 9f7d440e
      Michal Majewski authored
      I added additional exception logging in the execution.py since
      errors in processing results were really difficult to debug.
      
      There is a problem on Windows with class serialization when
      it comes from dynamically loaded module. To fix it I moved all
      output processors to the tools/testrunner/outproc/ and import
      them in test/*/testcfg.py.
      
      Bug: v8:6917
      Change-Id: Ida604641d659b006e91faf1d56a37769ec47f5f3
      Reviewed-on: https://chromium-review.googlesource.com/842784
      Commit-Queue: Michał Majewski <majeski@google.com>
      Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50361}
      9f7d440e
    • Michael Achenbach's avatar
      Revert "Revert "[test] Move has unexpected output to outproc."" · c1e9bc02
      Michael Achenbach authored
      This reverts commit 1685b5d2.
      
      Reason for revert: Was probably caused by infra change:
      https://crrev.com/c/845781
      
      Original change's description:
      > Revert "[test] Move has unexpected output to outproc."
      > 
      > This reverts commit 71605b3e.
      > 
      > Reason for revert: Seems to break static-initializers step:
      > https://build.chromium.org/p/client.v8/builders/V8%20Linux64/builds/22156
      > 
      > Original change's description:
      > > [test] Move has unexpected output to outproc.
      > > 
      > > Expected outcomes optimized to serialize [PASS] as None.
      > > 
      > > Keeping expected outcomes inside output processors should be
      > > optimized in the future. Few possible optimizations:
      > > - separate classes for tests that are expected to PASS - done as
      > > an example in mozilla test suite.
      > > - cache output processors inside testcase.
      > > - share output processors between copies of the same test - needs
      > > some updates to the create_variant to update outproc only if
      > > expected outcomes changed.
      > > 
      > > Bug: v8:6917
      > > Change-Id: Ie73f1dcdf17fdfc65bce27228f818b1dd1e420c9
      > > Reviewed-on: https://chromium-review.googlesource.com/843025
      > > Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      > > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#50347}
      > 
      > TBR=machenbach@chromium.org,sergiyb@chromium.org,majeski@google.com
      > 
      > Change-Id: Ice1f3aee0a26f7f38996459d38fd6e0bd964113d
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: v8:6917
      > Reviewed-on: https://chromium-review.googlesource.com/849572
      > Reviewed-by: Bill Budge <bbudge@chromium.org>
      > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#50348}
      
      TBR=bbudge@chromium.org,machenbach@chromium.org,sergiyb@chromium.org,majeski@google.com
      
      Change-Id: I7a522b6487de6e96985d223524533493eb9171f0
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6917
      Reviewed-on: https://chromium-review.googlesource.com/848975Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50350}
      c1e9bc02
  8. 03 Jan, 2018 2 commits
    • Bill Budge's avatar
      Revert "[test] Move has unexpected output to outproc." · 1685b5d2
      Bill Budge authored
      This reverts commit 71605b3e.
      
      Reason for revert: Seems to break static-initializers step:
      https://build.chromium.org/p/client.v8/builders/V8%20Linux64/builds/22156
      
      Original change's description:
      > [test] Move has unexpected output to outproc.
      > 
      > Expected outcomes optimized to serialize [PASS] as None.
      > 
      > Keeping expected outcomes inside output processors should be
      > optimized in the future. Few possible optimizations:
      > - separate classes for tests that are expected to PASS - done as
      > an example in mozilla test suite.
      > - cache output processors inside testcase.
      > - share output processors between copies of the same test - needs
      > some updates to the create_variant to update outproc only if
      > expected outcomes changed.
      > 
      > Bug: v8:6917
      > Change-Id: Ie73f1dcdf17fdfc65bce27228f818b1dd1e420c9
      > Reviewed-on: https://chromium-review.googlesource.com/843025
      > Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#50347}
      
      TBR=machenbach@chromium.org,sergiyb@chromium.org,majeski@google.com
      
      Change-Id: Ice1f3aee0a26f7f38996459d38fd6e0bd964113d
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6917
      Reviewed-on: https://chromium-review.googlesource.com/849572Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50348}
      1685b5d2
    • Michal Majewski's avatar
      [test] Move has unexpected output to outproc. · 71605b3e
      Michal Majewski authored
      Expected outcomes optimized to serialize [PASS] as None.
      
      Keeping expected outcomes inside output processors should be
      optimized in the future. Few possible optimizations:
      - separate classes for tests that are expected to PASS - done as
      an example in mozilla test suite.
      - cache output processors inside testcase.
      - share output processors between copies of the same test - needs
      some updates to the create_variant to update outproc only if
      expected outcomes changed.
      
      Bug: v8:6917
      Change-Id: Ie73f1dcdf17fdfc65bce27228f818b1dd1e420c9
      Reviewed-on: https://chromium-review.googlesource.com/843025
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50347}
      71605b3e
  9. 21 Dec, 2017 2 commits
  10. 18 Dec, 2017 1 commit
  11. 13 Dec, 2017 3 commits
  12. 12 Dec, 2017 1 commit
  13. 28 Nov, 2017 2 commits
  14. 16 Nov, 2017 1 commit
  15. 15 Nov, 2017 1 commit
  16. 10 Nov, 2017 1 commit
  17. 27 Oct, 2017 1 commit
  18. 20 Oct, 2017 1 commit
    • Mathias Bynens's avatar
      [js] Remove CHECK_OBJECT_COERCIBLE for Array methods · 35b6aa38
      Mathias Bynens authored
      The spec got rid of `CheckObjectCoercible` a while back, and so should
      we. This change is not observable in most of the affected cases since
      `ToObject` is up near the top of most Array method algorithms. An
      example of an observable effect of this change occurs for the following
      input:
      
          Array.prototype.sort.call(null, 1);
      
      Behavior before applying the patch (incorrect message):
      
          TypeError: Array.prototype.sort called on null or undefined
      
      Expected behavior:
      
          TypeError: The comparison function must be either a function or
                     undefined
      
      This patch removes `CheckObjectCoercible` and adds tests to ensure the
      few observable cases are addressed correctly.
      
      The patch also adds a missing `ToObject(this)` to
      `Array.prototype.lastIndexOf` which would otherwise become observable
      as a result of `CheckObjectCoercible` being removed.
      
      BUG=v8:3577,v8:6921
      
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Ia086095076c4bf4d8d58dab26bc28df02994ed01
      Reviewed-on: https://chromium-review.googlesource.com/718577Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48800}
      35b6aa38
  19. 29 Sep, 2017 1 commit
  20. 28 Sep, 2017 2 commits
  21. 07 Sep, 2017 1 commit
    • Adam Klein's avatar
      [parser] Inline ParseStatemantAsUnlabelled into its only useful caller · 59798cc8
      Adam Klein authored
      Tracking labels for most of these statements made no difference: only
      try-statements require the special treatment of being wrapped in a
      block. The previous code existed to support strong mode, which is
      long gone.
      
      This also results in a tiny regression of the error message for
      a labelled `continue` statement targeting itself, but I'm not
      convinced that anyone would ever intend to label a continue
      statement (and Chakra and SpiderMonkey give similarly inaccurate
      error messages for this case).
      
      This is effectively a revert of d8bccfe9.
      
      Bug: v8:6092
      Change-Id: I25b62e10f6a20597e9686f08df76ba9724249618
      Reviewed-on: https://chromium-review.googlesource.com/653380Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Commit-Queue: Adam Klein <adamk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47904}
      59798cc8
  22. 02 Aug, 2017 1 commit
  23. 27 Jul, 2017 1 commit
  24. 20 Jul, 2017 1 commit
  25. 18 Jul, 2017 1 commit
  26. 10 Jul, 2017 1 commit
  27. 06 Jul, 2017 1 commit
  28. 28 Jun, 2017 1 commit