1. 27 Mar, 2019 4 commits
  2. 26 Mar, 2019 27 commits
  3. 25 Mar, 2019 9 commits
    • Cliff Smolinsky's avatar
      Replace shlwapi call with STL. · 31d7e1d3
      Cliff Smolinsky authored
      The only use of shlwapi is for a single method which can be easily
      replaced by simple wstring calls. This change makes that swap and
      removes the reference to shlwapi completely.
      
      Bug: v8:9031
      Change-Id: Ia8f2c44e8166d93e309016896b26a84bdb90d720
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1534960Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Cliff Smolinsky <cliffsmo@microsoft.com>
      Cr-Commit-Position: refs/heads/master@{#60451}
      31d7e1d3
    • Mythri's avatar
      [lite] Allocate feedback vectors lazily · 7629afdb
      Mythri authored
      Allocate feedback vectors lazily when the function's interrupt budget has
      reached a specified threshold. This cl introduces a new field in the
      ClosureFeedbackCellArray to track the interrupt budget for allocating
      feedback vectors. Using the interrupt budget on the bytecode array could
      cause problems when there are closures across native contexts and we may
      delay allocating feedback vectors in one of them causing unexpected
      performance cliffs. In the long term we may want to remove interrupt budget
      from bytecode array and use context specific budget for tiering up decisions
      as well.
      
      Bug: v8:8394
      Change-Id: Ia8fbb71f5e8543a92f14c44aa762973da82d445c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1520719
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60450}
      7629afdb
    • Igor Sheludko's avatar
      [classes] Properly handle static length computed property · 26ffe82e
      Igor Sheludko authored
      Bug: chromium:913943
      Change-Id: I2f7774ca1ea0a7855620a99d7e26cd764260129b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538124
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60449}
      26ffe82e
    • Benedikt Meurer's avatar
      [tracing] Improve tracing signals for compilation/optimization. · a2af7e11
      Benedikt Meurer authored
      This adds OBJECT/SNAPSHOT trace events for Script and SharedFunctionInfo
      objects, logging their creation with appropriate information to make
      sense of them.
      
      Based on that we introduces five flow events to model the optimized
      compilation via tracing in the "disabled-by-default-v8.compile" category:
      
        - "v8.optimizingCompile.start" logs the creation of the
          PipelineCompilationJob (for TurboFan JavaScript optimization)
          with the "function" argument referring to the trace event
          object created for the SharedFunctionInfo.
        - "v8.optimzingCompile.prepare" logs the preparation of the
          PipelineCompilationJob on the main thread, also carrying the
          "function" argument. This connects the flow event to the actual
          tracing duration event associated with the preparation phases.
        - "v8.optimizingCompile.execute" logs the (usually concurrent)
          optimization of the TurboFan graph (again with "function").
        - "v8.optimizingCompile.finalize" logs the main thread phase which
          finalizes the optimized code and eventually installs it (in case
          of success).
        - "v8.optimizingCompile.end" signals the end of the
          PipelineCompilationJob, which carries the "compilationInfo",
          that contains the interesting bits of the OptimizedCompilationInfo,
          specifically whether the compile was successfull and which functions
          were inlined for example.
      
      This also adds two instant events "V8.AbortOptimization" and
      "V8.RetryOptimization" in "disabled-by-default-v8.compile" category
      that are emitted when TurboFan cannot optimize a certain function.
      In case of "V8.RetryOptimization", TurboFan might be able to optimize
      it later, whereas "V8.AbortOptimization" permanently disables the
      optimization of a given function. The JSON representation of this is
      
      ```js
      {
        "pid": 256639,
        "tid": 256639,
        "ts": 6935411377801,
        "tts": 159116,
        "ph": "I",
        "cat": "disabled-by-default-v8.compile",
        "name": "V8.AbortOptimization",
        "dur": 0,
        "tdur": 0,
        "args": {
          "reason": "Function is too big to be optimized",
          "function": {
            "id_ref": "0x600000001",
            "scope": "v8::internal::SharedFunctionInfo"
          }
        }
      },
      ```
      
      where the "function" refers to a previously emitted SNAPSHOT for the
      function in question. In the trace viewer it will show up as instant
      event under "v8.optimizingCompile.prepare" in case of the relevant
      example where optimization is disabled due to reaching the bytecode
      limit (as in the JSON above), i.e. it'll look something like this
      
        https://i.paste.pics/aafc2de9df10ea8f5acc1a761d80f07b.png
      
      for the example highlighted in the recent blog post
      
        https://ponyfoo.com/articles/javascript-performance-pitfalls-v8
      
      that describes the optimization limit. The "v8.optimizingCompile.end"
      duration event will also carry this information as part of the
      "compilationInfo" object, but specifically for CI tools, etc. it might
      be a whole lot easier to just look for the "V8.AbortOptimization"
      instant event.
      
      Bug: v8:8598, v8:9039
      Tbr: ulan@chromium.org
      Doc: bit.ly/v8-tracing-signals
      Change-Id: Ic87ac336004690c65b6b15ad73bc6fbd4b5f12c4
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1511483
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60448}
      a2af7e11
    • Sigurd Schneider's avatar
      Revert "[heap] Clean-up keys of oldspace weakmaps during scavenge" · 24038b93
      Sigurd Schneider authored
      This reverts commit 6604f182.
      
      Bug: chromium:945341
      
      Original change's description:
      > [heap] Clean-up keys of oldspace weakmaps during scavenge
      > 
      > This CL adds handling for cleaning up weakmap (EphemeronHashTable)
      > keys during scavenge, even if the weakmap resides in oldspace.
      > 
      > Change-Id: If8d711c050ddbcae4dd6e8da549e0c0d08ba47b2
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1523787
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#60432}
      
      TBR=ulan@chromium.org,jarin@chromium.org,sigurds@chromium.org,leszeks@chromium.org
      
      Change-Id: I9dd9b11990a262a457fd1bedc2b45b4a786a81f7
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538133Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60447}
      24038b93
    • Milad Farazmand's avatar
      PPC/S390: [heap] Clean-up keys of oldspace weakmaps during scavenge · dd07cbcf
      Milad Farazmand authored
      Port 6604f182
      
      Original Commit Message:
      
           This CL adds handling for cleaning up weakmap (EphemeronHashTable)
           keys during scavenge, even if the weakmap resides in oldspace.
      
      Change-Id: Idf8b6115e57b1229864afefe6ffee85acb5e7547
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538320Reviewed-by: 's avatarMilad Farazmand <miladfar@ca.ibm.com>
      Reviewed-by: 's avatarJunliang Yan <jyan@ca.ibm.com>
      Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
      Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
      Cr-Commit-Position: refs/heads/master@{#60446}
      dd07cbcf
    • Michael Starzinger's avatar
      [asm.js] Fix break depth calculation for named blocks. · 080fa871
      Michael Starzinger authored
      The target of a 'break' statement without a provided label must be a
      regular block belonging to a surrounding loop or switch statement, named
      blocks (i.e. the one that just define a label) on the other hand must be
      targeted specifically with the provided label (and not implicitly). This
      fixes the behavior by introducing a dedicated {BlockKind::kNamed} for
      this purpose.
      
      R=clemensh@chromium.org
      TEST=mjsunit/regress/regress-9022
      BUG=v8:9022
      
      Change-Id: I94c3d5b1196ed94b8b1b31f6eb3b68070cf324e8
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538126
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60445}
      080fa871
    • Sigurd Schneider's avatar
      Revert "[debug] Mark toLocaleString and TA#join builtins as side-effect free." · 368d04bd
      Sigurd Schneider authored
      This reverts commit 660d8287.
      
      Reason for revert: breaks no-i18n build:
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20noi18n%20-%20debug/25919
      
      Original change's description:
      > [debug] Mark toLocaleString and TA#join builtins as side-effect free.
      > 
      > Bug: chromium:940373
      > Change-Id: If5f90ff5f873f0687c6a6a4063e0d09d6bbbd556
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1533157
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Commit-Queue: Peter Wong <peter.wm.wong@gmail.com>
      > Cr-Commit-Position: refs/heads/master@{#60440}
      
      TBR=yangguo@chromium.org,peter.wm.wong@gmail.com,petermarshall@chromium.org,szuend@chromium.org
      
      Change-Id: I5ee52f8f37bea83e80c53838d232332cb3486640
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:940373
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538132Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60444}
      368d04bd
    • Peter Marshall's avatar
      [cleanup] Clean up trace event tests by removing macros · bad7b827
      Peter Marshall authored
      The macros take implicit local arguments and make the tests harder to
      read. Remove the macros and add a helper to get size directly given
      this is the only use of the helper that returns the whole list.
      
      Remove the typedef of vector of trace events, because it is only used
      in two places now and is also called 'list' not vector.
      
      Use unique pointers for the ownership of MockTraceObject.
      
      Change-Id: Iec495c436cf7326224137321a84035c817622eaa
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538131Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60443}
      bad7b827