1. 22 Oct, 2019 1 commit
  2. 07 Oct, 2019 1 commit
  3. 18 Sep, 2019 1 commit
  4. 28 Aug, 2019 1 commit
  5. 23 Aug, 2019 1 commit
  6. 22 Aug, 2019 2 commits
  7. 24 Jun, 2019 1 commit
    • Mathias Bynens's avatar
      [objects] Rename JSValue to JSPrimitiveWrapper · e428dfd7
      Mathias Bynens authored
      We currently use the class name “JSValue” for JSObjects that wrap
      primitive values. This name is a common source of confusion. This patch
      switches to a name that’s more clear.
      
      In addition to manual tweaks, the patch applies the following mechanical
      global replacements:
      
      before                          | after
      --------------------------------|--------------------------------------
      if_valueisnotvalue              | if_valueisnotwrapper
      if_valueisvalue                 | if_valueiswrapper
      js_value                        | js_primitive_wrapper
      JS_VALUE_TYPE                   | JS_PRIMITIVE_WRAPPER_TYPE
      JSPrimitiveWrapperType          | JSPrimitiveWrapper type
      jsvalue                         | js_primitive_wrapper
      JSValue                         | JSPrimitiveWrapper
      _GENERATED_JSVALUE_FIELDS       | _GENERATED_JSPRIMITIVE_WRAPPER_FIELDS
      
      Change-Id: I9d9edea784eab6067b013e1f781e4db2070f807c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1672942Reviewed-by: 's avatarTamer Tas <tmrts@chromium.org>
      Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62337}
      e428dfd7
  8. 12 Jun, 2019 1 commit
    • Benedikt Meurer's avatar
      [debugger] Properly remove promises from prediction stack upon `await`. · e6f991c8
      Benedikt Meurer authored
      Make sure that we pop the async function promise from the catch
      prediction stack when `await`ing inside an async function, and
      push it back onto the stack when we're resuming execution. This
      is to ensure that we don't leak memory when there are suspended
      async functions while navigating away to a new page.
      
      Bug: chromium:968603
      Change-Id: I004715bc95d426958f1a89ce76c4856da1d4ceee
      Cq-Include-Trybots: luci.chromium.try:linux-rel,win7-rel
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1655652
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62117}
      e6f991c8
  9. 24 May, 2019 1 commit
  10. 23 May, 2019 1 commit
  11. 22 May, 2019 1 commit
  12. 21 May, 2019 1 commit
  13. 20 May, 2019 1 commit
  14. 17 May, 2019 2 commits
  15. 06 May, 2019 1 commit
  16. 24 Apr, 2019 1 commit
    • Jakob Gruber's avatar
      [coverage] Reduce IncBlockCounter overhead · ae6a47ba
      Jakob Gruber authored
      When collecting JS block coverage, we track block execution counts on
      so-called CoverageInfo objects. Generated bytecode and native code
      contains inlined snippets of code to increment the appropriate
      counters.
      
      These used to be implemented as calls to the IncBlockCounter runtime
      function. Each call incurred the entire CEntry overhead.
      
      This CL reduces that overhead by moving logic over into a new
      IncBlockCounter TFS builtin. The builtin is called directly from
      bytecode, and lowered to the same builtin call for optimized code.
      
      Drive-by: Tweak CoverageInfo layout to generate faster code.
      
      Tbr: jarin@chromium.org
      Bug: v8:9149, v8:6000
      Change-Id: I2d7cb0db649edf7c56b5ef5a4683d27b1c34605c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1571420Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60981}
      ae6a47ba
  17. 27 Feb, 2019 1 commit
  18. 15 Feb, 2019 1 commit
  19. 26 Dec, 2018 1 commit
  20. 17 Dec, 2018 1 commit
  21. 28 Nov, 2018 1 commit
  22. 27 Nov, 2018 1 commit
  23. 25 Nov, 2018 1 commit
  24. 24 Nov, 2018 2 commits
  25. 13 Nov, 2018 1 commit
  26. 07 Nov, 2018 1 commit
  27. 29 Oct, 2018 1 commit
  28. 23 Oct, 2018 1 commit
  29. 10 Oct, 2018 1 commit
    • Benedikt Meurer's avatar
      [async] Improve async function handling. · 0038e5f0
      Benedikt Meurer authored
      This change introduces new intrinsics used to desugar async functions
      in the Parser and the BytecodeGenerator, namely we introduce a new
      %_AsyncFunctionEnter intrinsic that constructs the generator object
      for the async function (and in the future will also create the outer
      promise for the async function). This generator object is internal
      and never escapes to user code, plus since async functions don't have
      a "prototype" property, we can just a single map here instead of tracking
      the prototype/initial_map on every async function. This saves one word
      per async function plus one initial_map per async function that was
      invoked at least once.
      
      We also introduce two new intrinsics %_AsyncFunctionReject, which
      rejects the outer promise with the caught exception, and another
      %_AsyncFunctionResolve, which resolves the outer promise with the
      right hand side of the `return` statement. These functions also perform
      the DevTools part of the job (aka popping from the promise stack and
      sending the debug event). This allows us to get rid of the implicit
      try-finally from async functions completely; because the finally
      block only called to the %AsyncFunctionPromiseRelease builtin, which
      was used to inform DevTools.
      
      In essence we now turn an async function like
      
      ```js
      async function f(x) { return await bar(x); }
      ```
      
      into something like this (in Parser and BytecodeGenerator respectively):
      
      ```
      function f(x) {
        .generator_object = %_AsyncFunctionEnter(.closure, this);
        .promise = %AsyncFunctionCreatePromise();
        try {
          .tmp = await bar(x);
          return %_AsyncFunctionResolve(.promise, .tmp);
        } catch (e) {
          return %_AsyncFunctionReject(.promise, e);
        }
      }
      ```
      
      Overall the bytecode for async functions gets significantly shorter
      already (and will get even shorter once we put the outer promise into
      the async function generator object). For example the bytecode for a
      simple async function
      
      ```js
      async function f(x) { return await x; }
      ```
      
      goes from 175 bytes to 110 bytes (a ~38% reduction in size), which
      is in particular due to the simplification around the try-finally
      removal.
      
      Overall this seems to improve the doxbee-async-es2017-native test by
      around 2-3%. On the test case mentioned in v8:8276 we go from
      1124ms to 441ms, which corresponds to a 60% reduction in total
      execution time!
      
      Tbr: marja@chromium.org
      Bug: v8:7253, v8:7522, v8:8276
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel;luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Id29dc92de7490b387ff697860c900cee44c9a7a4
      Reviewed-on: https://chromium-review.googlesource.com/c/1269041
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56502}
      0038e5f0
  30. 20 Sep, 2018 1 commit
  31. 17 Sep, 2018 1 commit
  32. 03 Sep, 2018 1 commit
  33. 03 Aug, 2018 1 commit
  34. 20 Jul, 2018 1 commit
  35. 05 Jul, 2018 2 commits
  36. 03 Jul, 2018 1 commit
    • Alexey Kozyatinskiy's avatar
      Reland "[debug] liveedit in native" · 5505c664
      Alexey Kozyatinskiy authored
      This is a reland of 3dfaf826
      
      Original change's description:
      > [debug] liveedit in native
      >
      > Liveedit step-by-step:
      > 1. calculate diff between old source and new source,
      > 2. map function literals from old source to new source,
      > 3. create new script for new_source,
      > 4. mark literals with changed code as changed, all others as unchanged,
      > 5. check that for changed literals there are no:
      >   - running generators in the heap,
      >   - non droppable frames (e.g. running generator) above them on stack.
      > 6. mark the bottom most frame with changed function as scheduled for
      >    restart if any.
      > 7. for unchanged functions:
      >   - deoptimize,
      >   - remove from cache,
      >   - update source positions,
      >   - move to new script,
      >   - reset feedback information and preparsed scope information if any,
      >   - replace any sfi in constant pool with changed one if any.
      > 8. for changed functions:
      >   - deoptimize
      >   - remove from cache,
      >   - reset feedback information,
      >   - update all links from js functions to old shared with new one.
      > 9. swap scripts.
      >
      > TBR=ulan@chromium.org
      >
      > Bug: v8:7862,v8:5713
      > Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel;luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      > Change-Id: I8f6f6156318cc82d6f36d7ebc1c9f7d5f3aa1461
      > Reviewed-on: https://chromium-review.googlesource.com/1105493
      > Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#54146}
      
      TBR=dgozman@chromium.org
      
      Bug: v8:7862, v8:5713
      Change-Id: I163ed2fd2ca3115ba0de74cb35a6fac9e40fdd94
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel;luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Reviewed-on: https://chromium-review.googlesource.com/1124879
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54187}
      5505c664