1. 04 Jul, 2018 1 commit
  2. 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
  3. 22 Jun, 2018 2 commits
  4. 21 Feb, 2018 2 commits
  5. 17 Jan, 2018 1 commit
  6. 18 Dec, 2017 1 commit
  7. 30 Nov, 2017 1 commit
  8. 27 Nov, 2017 1 commit
  9. 14 Nov, 2017 1 commit
  10. 24 Oct, 2017 1 commit
  11. 22 Oct, 2017 1 commit
  12. 16 Oct, 2017 1 commit
    • Marja Hölttä's avatar
      [parser] Skipping inner funcs: fix related to aborting preparsing. · d69159d5
      Marja Hölttä authored
      When skipping inner funcs is enabled, we also track variables for top level
      funcs. Thus, we also declared the function name for the function scope, even
      though it was the function scope for a function whose preparsing was
      aborted. This lead into declaring the function name twice.
      
      The fix is to declare the function name only in the success case.
      
      The code was "wrong" before too, but this was never a problem, since variable
      tracking and aborting preparsing were enabled for disjoint sets of
      functions (aborting preparsing only for top-level, and variable tracking for
      non-top-level).
      
      BUG=v8:5516,chromium:774475
      
      Change-Id: Ie6c321cc834cd946e8843f73916fa7dd75e9cd09
      Reviewed-on: https://chromium-review.googlesource.com/720920Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48592}
      d69159d5
  13. 05 Oct, 2017 1 commit
  14. 07 Sep, 2017 2 commits
  15. 06 Sep, 2017 2 commits
  16. 23 Aug, 2017 1 commit
  17. 22 Aug, 2017 1 commit
  18. 16 Aug, 2017 1 commit
  19. 09 Aug, 2017 1 commit
    • Adam Klein's avatar
      [scopes] Clarify and narrow when scopes care about an eval() call · 1c9de0b2
      Adam Klein authored
      There are two reasons for Scopes to need information about eval calls
      inside them:
      
        - Eval in a scope, or any of its inner scopes, turns off a bunch of
          scope analysis optimizations (e.g., all variables have to be treated
          as "used" and context-allocated).
        - Eval in a sloppy declaration scope means allows runtime addition
          of var declarations.
      
      This patch aims to make the code better-reflect this reality.
      It's meant as a pure cleanup, with no expected change in behavior.
      
      Change-Id: I744c5051bb7a90b11420930e9596e5d6c35eb440
      Reviewed-on: https://chromium-review.googlesource.com/602848
      Commit-Queue: Adam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47257}
      1c9de0b2
  20. 04 Aug, 2017 1 commit
    • Marja Hölttä's avatar
      [parser] Skipping inner funcs: implement a bailout. · e7a46253
      Marja Hölttä authored
      In some cases, PreParser cannot replicate the Scope structure created by
      Parser. It happens esp. with arrow function parameters, since the relevant
      information is already lost by the time we figure out it's an arrow function.
      
      In these cases, PreParser should bail out of trying to create data for skipping
      inner functions.
      
      Implementation notes:
      
      - The arrow function case is more fundamental; the non-arrow case could be
        hacked together somehow if we implemented tracking is_simple for each param
        separately; but now that it's possible to bail out consistently from both
        cases, I don't think the is_simple complication is worth it.
      
      - The added mjsunit test cases are based on the test262 test cases which exposed
        the problem.
      
      - cctest/preparser/PreParserScopeAnalysis was exercising similar cases, but the
        problem didn't show up because the function parameters didn't contain
        skippable functions. Those test cases have been repurposed for testing the
        bailout.
      
      - Extra precaution: the bailout tests are in a separate file, to guard from the
        bug that a bailout case results in bailing out of *all* data creation, which
        would make all skipping tests in the same file useless.
      
      BUG=v8:5516
      
      Change-Id: I4324749a5ec602fa5d7dc27647ade0284a6842fe
      Reviewed-on: https://chromium-review.googlesource.com/599849Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47170}
      e7a46253
  21. 30 Jun, 2017 1 commit
  22. 22 Jun, 2017 1 commit
  23. 31 May, 2017 1 commit
    • Marja Hölttä's avatar
      [parser] Skipping inner funcs: make more functions skippable. · 06f05ec2
      Marja Hölttä authored
      - Enable aggressive lazy inner funcs (make non-declaration funcs lazy, ie let f =
        function() { ... } when --experimental-preparser-scope-analysis is on.
      - Turn on variable tracking for lazy top level functions: this makes their inner
        functions skippable.
      - Test fix for an testing bug uncovered by this work: when restoring the data
        for the relevant scope, don't assume it's the outermost scope for which we
        have data.
      - Fix: if we abort lazy parsing a function, we shouldn't produce any data for
        it.
      
      BUG=v8:5516
      
      Change-Id: I0606fbabb5886dc57dbb53ab5f3fb894ff5d032e
      Reviewed-on: https://chromium-review.googlesource.com/518165Reviewed-by: 's avatarDaniel Vogelheim <vogelheim@chromium.org>
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45615}
      06f05ec2
  24. 17 May, 2017 1 commit
    • Marja Hölttä's avatar
      [parser|ast] Simplify AstNodeFactory Zone usage. · f270bbfa
      Marja Hölttä authored
      AstNodeFactory used to get the Zone directly from AstValueFactory. But that's
      generally the wrong Zone (the main Zone, instead of the temp Zone), and the
      creator of AstNodeFactory had to call set_zone right after. By adding a Zone
      param, we can pass the correct Zone right away.
      
      Also made PreParserFactory have an AstNodeFactory, so that we don't need to
      create temporary AstNodeFactories all the time.
      
      Also removed AstNodeFactory::BodyScope since DiscardableZoneScope essentially
      did the same thing already.
      
      BUG=v8:5516,v8:6092
      
      Change-Id: I189d2e6afe91c91e49d8ed7e3496a0d9c405e1c5
      Reviewed-on: https://chromium-review.googlesource.com/507129
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarDaniel Vogelheim <vogelheim@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45370}
      f270bbfa
  25. 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
  26. 25 Apr, 2017 3 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
    • Marja Hölttä's avatar
      [parser] Skipping inner funcs: Distinguish between skippable and non-skippable functions. · a17f2446
      Marja Hölttä authored
      We collect function data for 2 purposes:
      - Variable allocation data for lazy parsed functions which contain skippable functions.
      - Data needed for creating FunctionLiterals for skippable functions.
      
      In some cases, recompilation happens, and we need to make sure we're not trying
      to skip a non-skippable function.
      
      At the moment, we don't collect data for eagerly parsed scopes, since the
      assumption is that they'll never get recompiled. (Fixing that will bigger design
      changes.)
      
      After this, we're down to 2 failures for mjsunit + --experimental-preparser-scope-analysis.
      
      
      BUG=v8:5516
      
      Change-Id: I704d488269f6d20a4b14596f2a0acc342ede32cb
      Reviewed-on: https://chromium-review.googlesource.com/486802
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarDaniel Vogelheim <vogelheim@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#44848}
      a17f2446
  27. 19 Apr, 2017 2 commits
  28. 18 Apr, 2017 3 commits
  29. 10 Apr, 2017 1 commit
  30. 05 Apr, 2017 1 commit
  31. 29 Mar, 2017 1 commit