1. 28 Nov, 2016 1 commit
    • jochen's avatar
      Assign unique IDs to FunctionLiterals · cfebe603
      jochen authored
      They're supposed to be stable across several parse passes, so we'll also
      store them in the associated SharedFunctionInfos
      
      To achieve this, the PreParser and Parser need to generated the same number of
      FunctionLiterals. To achieve this, we teach the PreParser about desuggaring of
      class literals.
      
      For regular functions, the function IDs are assigned in the order they occur in
      the source. For arrow functions, however, we only know that it's an arrow function
      after parsing the parameter list, and so the ID assigned to the arrow function is
      larger than the IDs assigned to functions defined in the parameter list. This
      implies that we have to reset the function ID counter to before the parameter list
      when re-parsing an arrow function. To be able to do this, we store the number of
      function literals found in the parameter list of arrow functions as well.
      
      BUG=v8:5589
      
      Review-Url: https://codereview.chromium.org/2481163002
      Cr-Commit-Position: refs/heads/master@{#41309}
      cfebe603
  2. 04 Nov, 2016 1 commit
  3. 03 Nov, 2016 2 commits
  4. 26 Oct, 2016 1 commit
    • rmcilroy's avatar
      [Interpreter] Don't require a CanonicalHandleScope for parse / renumbering · 7db6c79a
      rmcilroy authored
      Removes the need for a CanonicalHandleScope for parsing and renumbering
      phases when using Ignition. Since AST strings are canonicalized by the
      AST value factory, we only need to make sure we use the same canonical
      handles for any other handles we add to the bytecode generator.
      
      This avoids a regression when enabling Ignition for all Turbofan code, and
      improves CodeLoad on for Ignition by about 5%.
      
      BUG=v8:4280
      
      Review-Url: https://codereview.chromium.org/2448323004
      Cr-Commit-Position: refs/heads/master@{#40595}
      7db6c79a
  5. 24 Oct, 2016 1 commit
  6. 21 Oct, 2016 1 commit
  7. 20 Oct, 2016 2 commits
  8. 17 Oct, 2016 2 commits
  9. 14 Oct, 2016 1 commit
  10. 11 Oct, 2016 1 commit
  11. 20 Sep, 2016 2 commits
  12. 16 Sep, 2016 1 commit
    • vogelheim's avatar
      Rework scanner-character-streams. · 642d6d31
      vogelheim authored
      - Smaller, more consistent streams API (Advance, Back, pos, Seek)
      - Remove implementations from the header, in favor of creation functions.
      
      Observe:
      - Performance:
        - All Utf16CharacterStream methods have an inlinable V8_LIKELY w/ a
          body of only a few instructions. I expect most calls to end up there.
        - There used to be performance problems w/ bookmarking, particularly
          with copying too much data on SetBookmark w/ UTF-8 streaming streams.
          All those copies are gone.
        - The old streaming streams implementation used to copy data even for
          2-byte input. It no longer does.
        - The only remaining 'slow' method is the Seek(.) slow case for utf-8
          streaming streams. I don't expect this to be called a lot; and even if,
          I expect it to be offset by the gains in the (vastly more frequent)
          calls to the other methods or the 'fast path'.
        - If it still bothers us, there are several ways to speed it up.
      - API & code cleanliness:
        - I want to remove the 'old' API in a follow-up CL, which should mostly
          delete code, or replace it 1:1.
        - In a 2nd follow-up I want to delete much of the UTF-8 handling in Blink
          for streaming streams.
        - The "bookmark" is now always implemented (and mostly very fast), so we
          should be able to use it for more things.
      - Testing & correctness:
        - The unit tests now cover all stream implementations,
          and are pretty good and triggering all the edge cases.
        - Vastly more DCHECKs of the invariants.
      
      BUG=v8:4947
      
      Review-Url: https://codereview.chromium.org/2314663002
      Cr-Commit-Position: refs/heads/master@{#39464}
      642d6d31
  13. 15 Sep, 2016 3 commits
    • jochen's avatar
      Only pass the outer scope info with ParseInfo · 65aa596f
      jochen authored
      We don't need the context anymore for parsing, the scope info chain is
      enough.
      
      BUG=v8:5215
      R=marja@chromium.org,jgruber@chromium.org,mstarzinger@chromium.org
      
      Review-Url: https://codereview.chromium.org/2342443004
      Cr-Commit-Position: refs/heads/master@{#39457}
      65aa596f
    • jochen's avatar
      Fully deserialize the scope chain after parsing, not before · 94492437
      jochen authored
      To avoid a dependency on the heap during parsing, we only create a scope chain
      without linking to the associated ScopeInfo objects before parsing. This is
      enough to avoid special cases during parsing of arrow functions / eval.
      
      Looking at the outer scope's variables during parsing was only needed for hosting
      sloppy block functions inside eval. To be able to do this now, we hoist for the
      outer-most eval scope after parsing, in DeclarationScope::Analyze.
      
      DeclarationScope::Analyze is also where we replace the outer scope chain with the
      fully deserialized version, so variables can be resolved.
      
      Also, this unifies background and foreground thread parsing, as we don't have to
      worry about ScopeInfos getting accessed before we're back on the main thread.
      
      BUG=v8:5215
      R=verwaest@chromium.org,marja@chromium.org,adamk@chromium.org
      
      Review-Url: https://codereview.chromium.org/2306413002
      Cr-Commit-Position: refs/heads/master@{#39452}
      94492437
    • rmcilroy's avatar
      [Interpreter] Localize the CanonicalHandleScope to parsing and renumbering. · b37daacd
      rmcilroy authored
      Ignition requires that objects which will be inserted into the
      constant pool are canonicalized (to enable off-thread bytecode
      generation). We created a CanonicalizeHandleScope across parse/compile
      however this impacts performance (~5-8% on CodeLoad).
      
      Now we localize the CanonicalHandleScope to only the parse /
      internalization and renumbering phases where objects are created which
      could end up in the constant array pool. This seems to address
      the performance regression.
      
      BUG=v8:5203,chromium:634953
      
      Review-Url: https://codereview.chromium.org/2318653002
      Cr-Commit-Position: refs/heads/master@{#39443}
      b37daacd
  14. 12 Sep, 2016 1 commit
  15. 31 Aug, 2016 1 commit
  16. 25 Aug, 2016 1 commit
    • rmcilroy's avatar
      [Compiler] Add compile operations to CompilerDispatcherJob. · c2d2d4d1
      rmcilroy authored
      Adds compile operations to the CompilerDispatcherJob interface. As such,
      introduces Compiler::PrepareUnoptimizedCompilationJob and updates the
      unoptimized compilation path to use CompilationJobs. Also unifies
      FinalizeCompilationJob to deal with both optimized and unoptimized
      compilation jobs.
      
      A dummy FullCodegenCompilationJob is also introduced, where all the work
      is done in the ExecuteJob phase, which cannot be run on a
      background thread.
      
      BUG=v8:5203
      
      Review-Url: https://codereview.chromium.org/2251713002
      Cr-Commit-Position: refs/heads/master@{#38897}
      c2d2d4d1
  17. 23 Aug, 2016 1 commit
  18. 22 Aug, 2016 2 commits
  19. 18 Aug, 2016 2 commits
  20. 16 Aug, 2016 4 commits
    • rmcilroy's avatar
      Revert of [Interpreter] Introduce InterpreterCompilationJob (patchset #7... · de2f16d3
      rmcilroy authored
      Revert of [Interpreter] Introduce InterpreterCompilationJob (patchset #7 id:140001 of https://codereview.chromium.org/2240463002/ )
      
      Reason for revert:
      Breaks Win64 bot
      
      Original issue's description:
      > [Interpreter] Introduce InterpreterCompilationJob
      >
      > Adds InterpreterCompilationJob as a sub-class of
      > CompilationJob, to enable off-thread bytecode
      > generation. Currently only used in
      > Interpreter::MakeBytecode.
      >
      > As part of this change, CompilationJob is modified
      > to make it less specific to optimized compilation,
      > renaming the phases as follows:
      >  - CreateGraph -> PrepareJob
      >  - OptimizeGraph -> ExecuteJob
      >  - GenerateCode -> FinalizeJob
      >
      > RegisterWeakObjectsInOptimizedCode is also moved out
      > of CompilationJob and instead becomes a static function
      > on Compiler.
      >
      > BUG=v8:5203
      >
      > Committed: https://crrev.com/1fb6a7e697e8bc5b4af51647553741f966e00cdc
      > Committed: https://crrev.com/785990e9fc0dd9a9d963d25d0bed2909165e4ca9
      > Cr-Original-Commit-Position: refs/heads/master@{#38662}
      > Cr-Commit-Position: refs/heads/master@{#38668}
      
      TBR=mstarzinger@chromium.org,jkummerow@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:5203
      
      Review-Url: https://codereview.chromium.org/2251673003
      Cr-Commit-Position: refs/heads/master@{#38669}
      de2f16d3
    • rmcilroy's avatar
      [Interpreter] Introduce InterpreterCompilationJob · 785990e9
      rmcilroy authored
      Adds InterpreterCompilationJob as a sub-class of
      CompilationJob, to enable off-thread bytecode
      generation. Currently only used in
      Interpreter::MakeBytecode.
      
      As part of this change, CompilationJob is modified
      to make it less specific to optimized compilation,
      renaming the phases as follows:
       - CreateGraph -> PrepareJob
       - OptimizeGraph -> ExecuteJob
       - GenerateCode -> FinalizeJob
      
      RegisterWeakObjectsInOptimizedCode is also moved out
      of CompilationJob and instead becomes a static function
      on Compiler.
      
      BUG=v8:5203
      
      Committed: https://crrev.com/1fb6a7e697e8bc5b4af51647553741f966e00cdc
      Review-Url: https://codereview.chromium.org/2240463002
      Cr-Original-Commit-Position: refs/heads/master@{#38662}
      Cr-Commit-Position: refs/heads/master@{#38668}
      785990e9
    • rmcilroy's avatar
      Revert of [Interpreter] Introduce InterpreterCompilationJob (patchset #7... · ce65e105
      rmcilroy authored
      Revert of [Interpreter] Introduce InterpreterCompilationJob (patchset #7 id:140001 of https://codereview.chromium.org/2240463002/ )
      
      Reason for revert:
      Failing on Win64 bot:
      https://build.chromium.org/p/client.v8/builders/V8%20Win64/builds/12061/steps/Check/logs/regress-635429
      
      Original issue's description:
      > [Interpreter] Introduce InterpreterCompilationJob
      >
      > Adds InterpreterCompilationJob as a sub-class of
      > CompilationJob, to enable off-thread bytecode
      > generation. Currently only used in
      > Interpreter::MakeBytecode.
      >
      > As part of this change, CompilationJob is modified
      > to make it less specific to optimized compilation,
      > renaming the phases as follows:
      >  - CreateGraph -> PrepareJob
      >  - OptimizeGraph -> ExecuteJob
      >  - GenerateCode -> FinalizeJob
      >
      > RegisterWeakObjectsInOptimizedCode is also moved out
      > of CompilationJob and instead becomes a static function
      > on Compiler.
      >
      > BUG=v8:5203
      >
      > Committed: https://crrev.com/1fb6a7e697e8bc5b4af51647553741f966e00cdc
      > Cr-Commit-Position: refs/heads/master@{#38662}
      
      TBR=mstarzinger@chromium.org,jkummerow@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:5203
      
      Review-Url: https://codereview.chromium.org/2249153002
      Cr-Commit-Position: refs/heads/master@{#38663}
      ce65e105
    • rmcilroy's avatar
      [Interpreter] Introduce InterpreterCompilationJob · 1fb6a7e6
      rmcilroy authored
      Adds InterpreterCompilationJob as a sub-class of
      CompilationJob, to enable off-thread bytecode
      generation. Currently only used in
      Interpreter::MakeBytecode.
      
      As part of this change, CompilationJob is modified
      to make it less specific to optimized compilation,
      renaming the phases as follows:
       - CreateGraph -> PrepareJob
       - OptimizeGraph -> ExecuteJob
       - GenerateCode -> FinalizeJob
      
      RegisterWeakObjectsInOptimizedCode is also moved out
      of CompilationJob and instead becomes a static function
      on Compiler.
      
      BUG=v8:5203
      
      Review-Url: https://codereview.chromium.org/2240463002
      Cr-Commit-Position: refs/heads/master@{#38662}
      1fb6a7e6
  21. 10 Aug, 2016 1 commit
  22. 05 Aug, 2016 3 commits
  23. 03 Aug, 2016 1 commit
  24. 01 Aug, 2016 1 commit
  25. 29 Jul, 2016 3 commits