1. 03 Feb, 2018 1 commit
  2. 04 Jan, 2018 1 commit
  3. 12 Dec, 2017 3 commits
    • Georg Neis's avatar
      Reland "Fix "this" value in lazily-parsed module functions." · 585b39f5
      Georg Neis authored
      This is a reland of c3bd741e
      Original change's description:
      > Fix "this" value in lazily-parsed module functions.
      >
      > When preparsing top-level functions in a module, we didn't track
      > unresolved variables. Consequently, "this" ended up referencing
      > the global "this", which has the wrong value (in a module "this"
      > is supposed to be the undefined value).
      >
      > This patch fixes that. This also lets us stop forcing context
      > allocation of all variables in module scopes, which the patch
      > takes care of as well.
      >
      > Bug: chromium:791334
      > Change-Id: Ifac1f1adc033f3facfb3d29dd4bca32ee27bffcf
      > Reviewed-on: https://chromium-review.googlesource.com/808938
      > Reviewed-by: Marja Hölttä <marja@chromium.org>
      > Reviewed-by: Adam Klein <adamk@chromium.org>
      > Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Commit-Queue: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#50025}
      
      TBR=adamk@chromium.org
      TBR=kozyatinskiy@chromium.org
      
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      
      Bug: chromium:791334
      Change-Id: I57acc7b84a345565b36cbb55924fa2ff9b449eec
      Reviewed-on: https://chromium-review.googlesource.com/822341
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50045}
      585b39f5
    • Michael Achenbach's avatar
      Revert "Fix "this" value in lazily-parsed module functions." · 62f09de9
      Michael Achenbach authored
      This reverts commit c3bd741e.
      
      Reason for revert: Breaks layout tests:
      https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/20384
      
      Original change's description:
      > Fix "this" value in lazily-parsed module functions.
      > 
      > When preparsing top-level functions in a module, we didn't track
      > unresolved variables. Consequently, "this" ended up referencing
      > the global "this", which has the wrong value (in a module "this"
      > is supposed to be the undefined value).
      > 
      > This patch fixes that. This also lets us stop forcing context
      > allocation of all variables in module scopes, which the patch
      > takes care of as well.
      > 
      > Bug: chromium:791334
      > Change-Id: Ifac1f1adc033f3facfb3d29dd4bca32ee27bffcf
      > Reviewed-on: https://chromium-review.googlesource.com/808938
      > Reviewed-by: Marja Hölttä <marja@chromium.org>
      > Reviewed-by: Adam Klein <adamk@chromium.org>
      > Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Commit-Queue: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#50025}
      
      TBR=adamk@chromium.org,marja@chromium.org,neis@chromium.org,kozyatinskiy@chromium.org
      
      Change-Id: I81f69334ed2ce104c00e6205d50001e4bdf07d15
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:791334
      Reviewed-on: https://chromium-review.googlesource.com/822258Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50036}
      62f09de9
    • Georg Neis's avatar
      Fix "this" value in lazily-parsed module functions. · c3bd741e
      Georg Neis authored
      When preparsing top-level functions in a module, we didn't track
      unresolved variables. Consequently, "this" ended up referencing
      the global "this", which has the wrong value (in a module "this"
      is supposed to be the undefined value).
      
      This patch fixes that. This also lets us stop forcing context
      allocation of all variables in module scopes, which the patch
      takes care of as well.
      
      Bug: chromium:791334
      Change-Id: Ifac1f1adc033f3facfb3d29dd4bca32ee27bffcf
      Reviewed-on: https://chromium-review.googlesource.com/808938Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50025}
      c3bd741e
  4. 27 Nov, 2017 1 commit
  5. 25 Oct, 2017 1 commit
  6. 22 Oct, 2017 1 commit
  7. 17 Oct, 2017 1 commit
    • Adam Klein's avatar
      [parser] Skipping inner funcs: accurately record NeedsHomeObject · 94a71d7c
      Adam Klein authored
      Inner functions which called eval, and were the kind of functions
      that can use `super`, were erroneously not marked as "uses_super_property",
      leading to downstream crashes when the runtime tried to load the
      [[HomeObject]] from them.
      
      This patch eliminates the public Scope::uses_super_property()
      API and ensures that callers always call Scope::NeedsHomeObject()
      instead.
      
      This is a minimal fix designed for easy merging; it's likely that
      in the long run we should remove most mentions of "uses super property"
      and replace them with "needs home object" for clarity.
      
      Bug: v8:5516, chromium:774994
      Change-Id: Id269dd33e35bd40f6b59a3d3e19330687afa64f8
      Reviewed-on: https://chromium-review.googlesource.com/721879Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Commit-Queue: Adam Klein <adamk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48619}
      94a71d7c
  8. 16 Oct, 2017 1 commit
  9. 13 Oct, 2017 1 commit
  10. 05 Oct, 2017 1 commit
    • Marja Hölttä's avatar
      [parser] Skipping inner funcs: Fix hoisting. · f6f5bafe
      Marja Hölttä authored
      The catch variable is a special VAR-mode variable which is not in a declaration
      scope. Normally creating such a variable is not possible with DeclareVariable,
      but Parser bypasses it by calling DeclareLocal directly (which doesn't have the
      hoisting check).
      
      PreParser used to cut corners and declare the catch variable as a LET-mode
      variable to prevent hoisting.
      
      But since LET and VAR variables behave differently when deciding whether they
      block sloppy block function hoisting, that approach doesn't fly.
      
      BUG=v8:5516,chromium:771474
      
      Change-Id: Ic6f5f4996416c9fa59132725c8b0b6b570c72f48
      Reviewed-on: https://chromium-review.googlesource.com/700634
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48308}
      f6f5bafe
  11. 22 Aug, 2017 1 commit
  12. 21 Aug, 2017 1 commit
  13. 18 Aug, 2017 1 commit
  14. 09 Aug, 2017 2 commits
  15. 25 Jul, 2017 1 commit
  16. 14 Jul, 2017 1 commit
    • Caitlin Potter's avatar
      [async-await] desugar Await in BytecodeGenerator · 8b5b444a
      Caitlin Potter authored
      This includes several changes. From most to least interesting:
      
      - No longer implement AwaitExpressions using a do-expression.
      - Reduces frame-size of async generators by not allocating temporary
        variables to hold results of Await epxressions.
      - Streamline and reduce generated bytecodes for Await.
      - Debugger no longer emits a debug::kCallBreakLocation breakpoint for
      the JS-builtin call performed for Await, and instead only emits such
      a breakpoint if the operand of Await is actually a call.
      - Push fewer parameters to Await* builtins, using the receiver for the
        first parameter (possible now that the CallRuntime invocation not
        part of the AST).
      - Adds a new Await AST node. No new members or anything, but it seemed
        palatable to avoid having `if (is_await())` in a number of
        VisitSuspend functions.
      
      BUG=v8:5855, v8:5099, v8:4483
      R=rmcilroy@chromium.org, kozyatinskiy@chromium.org, yangguo@chromium.org
      TBR=bmeurer@chromium.org
      
      Change-Id: I9cd3fda99cd40295c04fdf1aea01b5d83fac6caf
      Reviewed-on: https://chromium-review.googlesource.com/558806
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46666}
      8b5b444a
  17. 03 Jul, 2017 1 commit
  18. 30 Jun, 2017 1 commit
  19. 27 Jun, 2017 1 commit
  20. 26 Jun, 2017 1 commit
    • hans's avatar
      Make some functions that are hit during renderer startup available for inlining · 777da354
      hans authored
      This is towards closing the perf gap between the MSVC build (which uses link-
      time optimization) and Clang (where LTO isn't ready on Windows yet). We did
      a study (see bug) to see which non-inlined functions are hit a lot during render
      start-up, and which would be inlined during LTO. This should benefit performance
      in all builds which currently don't use LTO (Android, Linux, Mac) as well as
      the Win/Clang build.
      
      The binary size of chrome_child.dll increases by 2KB with this.
      
      BUG=chromium:728324
      CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_chromium_compile_dbg_ng;master.tryserver.chromium.mac:mac_chromium_compile_dbg_ng
      
      Review-Url: https://codereview.chromium.org/2950993002
      Cr-Commit-Position: refs/heads/master@{#46229}
      777da354
  21. 25 Jun, 2017 1 commit
  22. 23 Jun, 2017 1 commit
    • hans's avatar
      Make some functions that are hit during renderer startup available for inlining · d00d52be
      hans authored
      This is towards closing the perf gap between the MSVC build (which uses link-
      time optimization) and Clang (where LTO isn't ready on Windows yet). We did
      a study (see bug) to see which non-inlined functions are hit a lot during render
      start-up, and which would be inlined during LTO. This should benefit performance
      in all builds which currently don't use LTO (Android, Linux, Mac) as well as
      the Win/Clang build.
      
      The binary size of chrome_child.dll increases by 2KB with this.
      
      BUG=chromium:728324
      
      Review-Url: https://codereview.chromium.org/2950993002
      Cr-Commit-Position: refs/heads/master@{#46191}
      d00d52be
  23. 29 May, 2017 1 commit
  24. 24 May, 2017 2 commits
  25. 17 May, 2017 1 commit
  26. 02 May, 2017 1 commit
    • Wiktor Garbacz's avatar
      [parser] Inital parallel parse tasks implementation. · 00912d73
      Wiktor Garbacz authored
      While parsing top-level code eager functions are skipped just like lazy
      ones, but also a parse task is created for each.
      
      The parse tasks are run by the compiler dispatcher and can be executed
      either on background thread or in idle time.
      After parsing of top-level code finishes it waits for all unfinished
      parser tasks - possibly picking up and executing them on current thread.
      Afterwards parse task results are stitched together with top-level AST,
      in case of failures eager functions are treated just like lazy -
      parsing/compilation is retriggered for them in the runtime and proper
      errors are generated (performance is not optimized for error case at
      all).
      
      BUG=v8:6093
      
      Change-Id: Ie6508211a04b90becfe44139cce1c8ecec386b6e
      Reviewed-on: https://chromium-review.googlesource.com/486725Reviewed-by: 's avatarJochen Eisinger <jochen@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarDaniel Vogelheim <vogelheim@chromium.org>
      Commit-Queue: Wiktor Garbacz <wiktorg@google.com>
      Cr-Commit-Position: refs/heads/master@{#45016}
      00912d73
  27. 25 Apr, 2017 2 commits
    • Michael Achenbach's avatar
      Revert "[parser] Inital parallel parse tasks implementation." · ef99f666
      Michael Achenbach authored
      This reverts commit 56a6fda3.
      
      Reason for revert: Makes tsan flaky:
      https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20TSAN/builds/15038
      
      Original change's description:
      > [parser] Inital parallel parse tasks implementation.
      > 
      > While parsing top-level code eager functions are skipped just like lazy
      > ones, but also a parse task is created for each.
      > 
      > The parse tasks are run by the compiler dispatcher and can be executed
      > either on background thread or in idle time.
      > After parsing of top-level code finishes it waits for all unfinished
      > parser tasks - possibly picking up and executing them on current thread.
      > Afterwards parse task results are stitched together with top-level AST,
      > in case of failures eager functions are treated just like lazy -
      > parsing/compilation is retriggered for them in the runtime and proper
      > errors are generated (performance is not optimized for error case at
      > all).
      > 
      > BUG=v8:6093
      > 
      > Change-Id: I718dd2acc8a70ae1b09c2dea2616716605d7b05d
      > Reviewed-on: https://chromium-review.googlesource.com/483439
      > Commit-Queue: Wiktor Garbacz <wiktorg@google.com>
      > Reviewed-by: Marja Hölttä <marja@chromium.org>
      > Reviewed-by: Jochen Eisinger <jochen@chromium.org>
      > Reviewed-by: Daniel Vogelheim <vogelheim@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#44849}
      
      TBR=marja@chromium.org,vogelheim@chromium.org,jochen@chromium.org,wiktorg@google.com
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:6093
      
      Change-Id: I17e689efee7d216d28a94a5c8147022ae7e830dd
      Reviewed-on: https://chromium-review.googlesource.com/486883Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#44859}
      ef99f666
    • Wiktor Garbacz's avatar
      [parser] Inital parallel parse tasks implementation. · 56a6fda3
      Wiktor Garbacz authored
      While parsing top-level code eager functions are skipped just like lazy
      ones, but also a parse task is created for each.
      
      The parse tasks are run by the compiler dispatcher and can be executed
      either on background thread or in idle time.
      After parsing of top-level code finishes it waits for all unfinished
      parser tasks - possibly picking up and executing them on current thread.
      Afterwards parse task results are stitched together with top-level AST,
      in case of failures eager functions are treated just like lazy -
      parsing/compilation is retriggered for them in the runtime and proper
      errors are generated (performance is not optimized for error case at
      all).
      
      BUG=v8:6093
      
      Change-Id: I718dd2acc8a70ae1b09c2dea2616716605d7b05d
      Reviewed-on: https://chromium-review.googlesource.com/483439
      Commit-Queue: Wiktor Garbacz <wiktorg@google.com>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarJochen Eisinger <jochen@chromium.org>
      Reviewed-by: 's avatarDaniel Vogelheim <vogelheim@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#44849}
      56a6fda3
  28. 31 Mar, 2017 1 commit
  29. 24 Mar, 2017 1 commit
  30. 23 Mar, 2017 1 commit
  31. 22 Mar, 2017 1 commit
  32. 17 Mar, 2017 1 commit
    • Marja Hölttä's avatar
      [parser] Skipping inner funcs: store and use the inner function data. · 1191e6f6
      Marja Hölttä authored
      The data needed to be modified a bit to actually allow skipping over functions
      based on it. In particular, we need to allow skipping over an unknown inner
      scope structure (in the previous stage, we just had tests comparing the data
      against some baseline truth, so it wasn't needed).
      
      also removing the current "skip functions based on preparse data" logic,
      since preparser data is not used any more. At a later stage, I'll consider
      plugging the preparser-scope-analysis-data into that pipeline (so I don't want
      to remove the full code yet).
      
      Integration to the various forms of compilation is still incomplete; this CL
      integrates just enough to get the minimal example to pass:
      
      (function foo() {
        function preparsed() {
          var var1 = 10;
          function skip_me() {
            print(var1);
          }
          return skip_me;
        }
        return preparsed;
      })()()();
      
      BUG=v8:5516
      
      Change-Id: I0d24b4c3b338f7e6b6c3bf7cf2c1ceb29608e2f2
      Reviewed-on: https://chromium-review.googlesource.com/446336
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarDaniel Vogelheim <vogelheim@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43908}
      1191e6f6
  33. 07 Mar, 2017 1 commit
    • Marja Hölttä's avatar
      [parser] Skipping inner funcs: collect data needed for allocation, not the allocation result. · f489f7ab
      Marja Hölttä authored
      This pretty much rewrites the preparsed scope data collection. We used to store
      the allocation result, but it's faster to just store the raw data which is
      needed for deciding it later. (This way we don't need to run the allocation
      algorithm for just getting this data.)
      
      For each variable: is_used, maybe_assigned,
      has_forced_context_allocation, and for each scope:
      inner_scope_calls_eval_.
      
      In addition, this CL moves data handling out of Scope and into
      PreParsedScopeData where it belongs and simplifies the API for
      PreParsedScopeData.
      
      BUG=v8:5516
      R=vogelheim@chromium.org
      
      Change-Id: Ia5a4fa52f585cd4f483ce9a92f2dd7d9754f34ed
      Reviewed-on: https://chromium-review.googlesource.com/451273
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarDaniel Vogelheim <vogelheim@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43641}
      f489f7ab
  34. 03 Mar, 2017 1 commit
  35. 02 Mar, 2017 1 commit