1. 02 Dec, 2020 2 commits
  2. 17 Nov, 2020 1 commit
    • Jakob Gruber's avatar
      [nci] Share smi feedback and enable related optimizations · 3599cce1
      Jakob Gruber authored
      This CL enables a first batch of feedback-based optimizations in NCI
      code. Specifically, optimizations based on unary, binary, compare,
      for-in-next, and for-in-prepare feedback are now enabled.
      
      This has two main implications:
      
      1. NCI code can now deopt. Deoptimized code is currently thrown away
      permanently and cannot be reused. Now that shared/cached NCI code can
      deopt, this leads to an interesting question of what should happen
      with deoptimized NCI code. The answer in this CL is to remove the
      cache entry (it may later be re-added).
      
      2. Tiering up from NCI to TF still requires feedback; since NCI code,
      starting with this CL, no longer collects full feedback, feedback must
      be created in some other way. This is solved by sharing a
      context-independent encoding of feedback across native contexts.
      
      Feedback is shared through a new SerializedFeedback object type,
      essentially a byte array of serialized feedback. Currently, only
      smi-based feedback is shared, but map-based feedback will be added in
      the future.
      
      SerializedFeedback is kept in the NCI cache alongside NCI Code
      objects.  It is created on NCI cache insertion, and deserialized upon
      NCI cache hits.
      
      Bug: v8:8888
      Change-Id: Ic0d5fbea3aa4d3b0a165624dab9d0283b07dcee7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2531775Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71224}
      3599cce1
  3. 03 Nov, 2020 1 commit
  4. 15 Jul, 2020 1 commit
  5. 13 Jul, 2020 1 commit
  6. 08 Jul, 2020 1 commit
  7. 18 Sep, 2019 1 commit
  8. 23 May, 2019 1 commit
  9. 21 May, 2019 1 commit
  10. 04 Apr, 2019 1 commit
  11. 26 Dec, 2018 1 commit
  12. 20 Sep, 2018 1 commit
  13. 25 Jun, 2018 1 commit
    • Camillo Bruni's avatar
      Reland "[parser][log] Log script id during background compilation" · e7f5c5cc
      Camillo Bruni authored
      This reverts commit a800e050.
      
      Original change's description:
      > Revert "[parser][log] Log script id during background compilation"
      >
      > This reverts commit aafd5c52.
      >
      > Reason for revert: Tentative revert for
      >
      > https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Win64/24825
      > https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Win64%20-%20msvc/3242
      >
      > Original change's description:
      > > [parser][log] Log script id during background compilation
      > >
      > > - Add separate script-create, script-reserve-id and script-details log events
      > > - Add log events for CompilationCache hits and puts
      > > - Simplify function event logging by only pass along the script id
      > > - Explicitly create Scripts in parse-processor.js on script events only
      > > - Create a temporary script id in the ParseInfo for use during background
      > >   parsing and compilation
      > > - Clean up ParseInfo initialization to centralize creation and use of
      > >   script ids
      > > - Allow creating Scripts with predefined script ids
      > >
      > > Bug: chromium:757467, chromium:850038
      > > Change-Id: I02dfd1d5725795b9fe0ea94ef57b287b934a1efe
      > > Reviewed-on: https://chromium-review.googlesource.com/1097131
      > > Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
      > > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > > Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#53978}
      >
      > TBR=ulan@chromium.org,cbruni@chromium.org,gsathya@chromium.org,leszeks@chromium.org
      >
      > Change-Id: I629f72f51d5e086e2b54658c1fdd18cec268aab2
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: chromium:757467, chromium:850038
      > Reviewed-on: https://chromium-review.googlesource.com/1112538
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Commit-Queue: Yang Guo <yangguo@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#53984}
      
      TBR=ulan@chromium.org,yangguo@chromium.org,cbruni@chromium.org,gsathya@chromium.org,leszeks@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: chromium:757467, chromium:850038
      Change-Id: I3088c86362c06ee50464f1f14e25350b1b8048ad
      Reviewed-on: https://chromium-review.googlesource.com/1112539Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53994}
      e7f5c5cc
  14. 22 Jun, 2018 2 commits
  15. 03 May, 2018 1 commit
  16. 22 Feb, 2018 1 commit
    • Benedikt Meurer's avatar
      [cleanup] Introduce a dedicated FeedbackCell. · aff1f378
      Benedikt Meurer authored
      This is preparatory cleanup work for eventually tracking the functions
      (rather than concrete closures) in the CALL_IC, also for builtins like
      the default PromiseCapability [[Resolve]] and [[Reject]] functions. It
      adds a new FeedbackCell type, which is used by JSFunctions consistently
      now to reference the feedback vector (or undefined if not the function
      is not compiled yet or is a native/asm.js function).
      
      This also changes the calling convention for FastNewClosure builtin and
      the JSCreateClosure operator in TurboFan to carry the FeedbackCell here
      instead of the parent FeedbackVector and the slot index. In addition we
      eliminate the now unused %InterpreterNewClosure runtime function.
      
      Bug: v8:2206, v8:7253, v8:7310
      Change-Id: Ib4ce456e276e0273e57c163dcdd0b33abf863656
      Reviewed-on: https://chromium-review.googlesource.com/928403
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51474}
      aff1f378
  17. 21 Feb, 2018 1 commit
  18. 18 Oct, 2017 1 commit
  19. 05 Oct, 2017 1 commit
  20. 22 May, 2017 1 commit
  21. 25 Apr, 2017 1 commit
    • ulan's avatar
      Decouple root visitors from object visitors. · e671ed36
      ulan authored
      This patch adds a new interface called RootVisitor and changes the root
      iteration functions to accept a RootVisitor instead of an ObjectVisitor.
      
      Future CLs will change ObjectVisitor to provide the host object to all
      visiting functions, which will bring it in sync with static visitors.
      
      Having separate visitors for roots and objects removes ambiguity in
      VisitPointers and reduces chances of forgetting to record slots.
      
      This is intended as pure refactoring. All places that require behavior
      change are marked with TODO and will addressed in future CLs.
      
      BUG=chromium:709075
      
      Review-Url: https://codereview.chromium.org/2801073006
      Cr-Commit-Position: refs/heads/master@{#44852}
      e671ed36
  22. 06 Apr, 2017 1 commit
  23. 16 Feb, 2017 1 commit
    • jwolfe's avatar
      Implement new Function.prototype.toString --harmony-function-tostring · d1d4b9ce
      jwolfe authored
      For functions declared in source code, the .toString() representation
      will be an excerpt of the source code.
      * For functions declared with the "function" keyword, the excerpt
        starts at the "function" or "async" keyword and ends at the final "}".
        The previous behavior would start the excerpt at the "(" of the
        parameter list, and prepend a canonical `"function " + name` or
        similar, which would discard comments and formatting surrounding the
        function's name. Anonymous functions declared as function expressions
        no longer get the name "anonymous" in their toString representation.
      * For methods, the excerpt starts at the "get", "set", "*" (for
        generator methods), or property name, whichever comes first.
        Previously, the toString representation for methods would use a
        canonical prefix before the "(" of the parameter list. Note that any
        "static" keyword is omitted.
      * For arrow functions and class declarations, the excerpt is unchanged.
      
      For functions created with the Function, GeneratorFunction, or
      AsyncFunction constructors:
      * The string separating the parameter text and body text is now
        "\n) {\n", where previously it was "\n/*``*/) {\n" or ") {\n".
      * At one point, newline normalization was required by the spec here,
        but that was removed from the spec, and so this CL does not do it.
      
      Included in this CL is a fix for CreateDynamicFunction parsing. ')'
      and '`' characters in the parameter string are no longer disallowed,
      and Function("a=function(", "}){") is no longer allowed.
      
      BUG=v8:4958, v8:4230
      
      Review-Url: https://codereview.chromium.org/2156303002
      Cr-Commit-Position: refs/heads/master@{#43262}
      d1d4b9ce
  24. 06 Feb, 2017 1 commit
    • mvstanton's avatar
      [TypeFeedbackVector] Root feedback vectors at function literal site. · aea3ce3d
      mvstanton authored
      TypeFeedbackVectors are strongly rooted by a closure. However, in modern
      JavaScript closures are created and abandoned more freely. An important
      closure may not be present in the root-set at time of garbage collection,
      even though we've cached optimized code and use it regularly. For
      example, consider leaf functions in an event dispatching system. They may
      well be "hot," but tragically non-present when we collect the heap.
      
      Until now, we've relied on a weak root to cache the feedback vector in
      this case. Since there is no way to signal intent or relative importance,
      this weak root is as susceptible to clearing as any other weak root at
      garbage collection time.
      
      Meanwhile, the feedback vector has become more important. All of our
      ICs store their data there. Literal and regex boilerplates are stored there.
      If we lose the vector, then we not only lose optimized code built from
      it, we also lose the very feedback which allowed us to create that optimized
      code. Therefore it's vital to express that dependency through the root
      set.
      
      This CL does this by creating a strong link to a feedback
      vector at the instantiation site of the function closure.
      This instantiation site is in the code and feedback vector
      of the outer closure.
      
      BUG=v8:5456
      
      Review-Url: https://codereview.chromium.org/2674593003
      Cr-Commit-Position: refs/heads/master@{#42953}
      aea3ce3d
  25. 27 Jan, 2017 1 commit
  26. 09 Jun, 2016 1 commit
    • lpy's avatar
      Move hashmap into src/base. · 2fd55667
      lpy authored
      We ported hashmap.h into libsampler as a workaround before, so the main focus of
      this patch is to reduce code duplication. This patch moves the hashmap into
      src/base as well as creates DefaultAllocationPolicy using malloc and free.
      
      BUG=v8:5050
      LOG=n
      
      Review-Url: https://codereview.chromium.org/2010243003
      Cr-Commit-Position: refs/heads/master@{#36873}
      2fd55667
  27. 30 Sep, 2015 1 commit
  28. 20 Aug, 2015 1 commit
  29. 19 May, 2015 1 commit
  30. 18 May, 2015 2 commits
  31. 12 Feb, 2015 1 commit
  32. 04 Feb, 2015 1 commit
    • marja's avatar
      Introduce LanguageMode, drop StrictMode. · c7851da4
      marja authored
      This enables adding more language modes in the future.
      
      For maximum flexibility, LanguageMode is a bitmask, so we're not restricted to
      use a sequence of language modes which are progressively stricter, but we can
      express the language mode as combination of features.
      
      For now, LanguageMode can only be "sloppy" or "strict", and there are
      STATIC_ASSERTS in places which need to change when more modes are added.
      
      LanguageMode is a bit like the old LanguageMode when "extended" mode was still
      around (see https://codereview.chromium.org/8417035 and
      https://codereview.chromium.org/181543002 ) except that it's transmitted through
      all the layers (there's no StrictModeFlag).
      
      BUG=
      
      Review URL: https://codereview.chromium.org/894683003
      
      Cr-Commit-Position: refs/heads/master@{#26419}
      c7851da4
  33. 29 Jan, 2015 1 commit
  34. 31 Oct, 2014 1 commit
  35. 28 Oct, 2014 1 commit
  36. 04 Aug, 2014 1 commit
  37. 29 Apr, 2014 1 commit