1. 15 Feb, 2019 1 commit
  2. 14 Feb, 2019 1 commit
  3. 13 Feb, 2019 1 commit
  4. 28 Jan, 2019 1 commit
  5. 22 Jan, 2019 1 commit
    • Ross McIlroy's avatar
      [Compile] Move decision of whether an IIFE is oneshot into parser. · 162402f9
      Ross McIlroy authored
      The decision as to whether to optimize an IIFE as oneshot depends on
      whether it's outer scope is the script scope. During lazy compile, we
      might have discarded scopes which don't need a context between the IIFE
      and the script scope, which means we might treat an IIFE as oneshot,
      even though initial eager compile treated it as non-oneshot. Both
      bytecode flushing and lazy source positions rely on us generating the
      same bytecode during lazy compile as eager compile, so we move the
      decision into the parser where it happens once and is then stored in
      the SFI for any future lazy compiles.
      
      BUG=v8:8395,v8:8510
      
      Change-Id: I88f1e74ad95d47a2636c393ceb1318d7d610055d
      Reviewed-on: https://chromium-review.googlesource.com/c/1421841Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58996}
      162402f9
  6. 18 Jan, 2019 1 commit
  7. 07 Jan, 2019 1 commit
  8. 18 Dec, 2018 1 commit
  9. 17 Dec, 2018 1 commit
  10. 14 Nov, 2018 1 commit
  11. 06 Nov, 2018 1 commit
  12. 12 Oct, 2018 1 commit
    • Ross McIlroy's avatar
      [Parser] Add basic support for parallel IIFE parse / compile tasks. · 85b7f1cd
      Ross McIlroy authored
      Adds support for enqueuing parallel parse / compile tasks for eagerly
      compiled IIFEs during parsing. If the --parallel-compile-tasks flag is
      enabled, the parser will pre-parse eager top-level IIFEs and enqueue a
      task on the compiler dispatcher to do the actual parsing / compilation
      on a worker thread.
      
      Currently we always enqueue the task, but we likely want to only
      enqueue parallel tasks where the script has multiple IIFEs or a
      substantial amount of top-level script code before the IIFE to avoid
      the main thread having to immediately block on the parallel task. This
      work will be done as a follow-up.
      
      BUG=v8:8041
      
      Change-Id: If68d7c374548cabd4ec32f1fb6752da7d6aaae6b
      Reviewed-on: https://chromium-review.googlesource.com/c/1275354Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56593}
      85b7f1cd
  13. 20 Sep, 2018 1 commit
    • Ross McIlroy's avatar
      [Compile] Refactor CompilerDispatcher for inner function compilation jobs · 80195fc5
      Ross McIlroy authored
      Refactors the CompilerDispatcher to be able to enqueue eager inner functions
      for off-thread compilation during top-level compilation of a script.
      
      Unoptimized compile jobs are simplified to only have two phases - compile
      and finalization. Only finalization requires heap access (and therefore
      needs to be run on the main thread). The change also introduces a requirement
      to register a SFI with a given compile job after that job is posted, this
      is due to the fact that an SFI won't necessarily exist at the point the job
      is posted, but is created later when top-level compile is being finalized.
      Logic in the compile dispatcher is update to deal with the fact that a job
      may not be able to progress if it doesn't yet have an associated SFI
      registered with it.
      
      BUG=v8:8041
      
      Change-Id: I66cccd626136738304a7cab0e501fc65cf342514
      Reviewed-on: https://chromium-review.googlesource.com/1215782
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56088}
      80195fc5
  14. 07 Sep, 2018 1 commit
    • Ross McIlroy's avatar
      [Parser] Add support for Zone allocated ConsumedPreParsingScopeData. · 8da9dbbb
      Ross McIlroy authored
      Adds support for zone allocated (off-heap) ConsumedPreParsingScopeData to
      enable worker-thread access to PreParsingScopeData during parallel IIFE
      compile tasks.
      
      In order to avoid code-duplication, a templated
      BaseConsumedPreParsingScopeData is added which implements the logic for
      decoding the bytestream into scope data. Two implementations of this
      base class are instantiated for each of the underlying serialized scope date:
        - ZoneConsumedPreParsedScopeData for exposing ZonePreParsedScopeData
        - OnHeapConsumedPreParsedScopeData for exposing on-heap PreParsedScopeData
      The interface for each of these classes is the ConsumedPreParsingScopeData,
      which exposes the methods required by the parser to deserialize the required
      data.
      
      As a side-cleanup, moved Ucs2CharLength and Utf8LengthHelper implementations
      to cc file so that we don't get a linker error if one of them are unused by
      the cc file including the header.
      
      
      BUG=v8:8041
      
      Change-Id: Id502312d32fe4a9ddb6f5d2d9d3e3a9d30b9b27d
      Reviewed-on: https://chromium-review.googlesource.com/1199462
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55711}
      8da9dbbb
  15. 28 Aug, 2018 3 commits
  16. 23 Aug, 2018 1 commit
  17. 21 Aug, 2018 1 commit
    • Toon Verwaest's avatar
      [scanner] Go back to untemplatized scanning with buffering · fcfd995a
      Toon Verwaest authored
      This reverts the following 3 CLs:
      
      Revert "[scanner] Templatize scan functions by encoding"
      Revert "[asm] Remove invalid static cast of character stream"
      Revert "[scanner] Prepare CharacterStreams for specializing scanner and parser by character type"
      
      The original idea behind this work was to avoid copying, converting and
      buffering characters to be scanned by specializing the scanner functions. The
      additional benefit was for scanner functions to have a bigger window over the
      input. Even though we can get a pretty nice speedup from having a larger
      window, in practice this rarely helps. The cost is a larger binary.
      
      Since we can't eagerly convert utf8 to utf16 due to memory overhead, we'd also
      need to have a specialized version of the scanner just for utf8. That's pretty
      complex, and likely won't be better than simply bulk converting and buffering
      utf8 as utf16.
      
      Change-Id: Ic3564683932a0097e3f9f51cd88f62c6ac879dcb
      Reviewed-on: https://chromium-review.googlesource.com/1183190Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Commit-Queue: Toon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55258}
      fcfd995a
  18. 13 Aug, 2018 1 commit
  19. 01 Aug, 2018 1 commit
  20. 16 Jul, 2018 1 commit
  21. 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
  22. 22 Jun, 2018 2 commits
  23. 19 Jun, 2018 1 commit
    • Dan Elphick's avatar
      [explicit isolates] Replace every Handle(T*) in parsing/ · 52e2b5aa
      Dan Elphick authored
      Replace all but one Handle<T*>(T*) calls with ones that explicitly pass
      in an Isolate.
      
      Requires plumbing Isolate* through several Parser functions which
      previously avoided it because of worries about accessing the heap off
      the main thread. In all off-main-thread cases, isolate will be nullptr
      and every such function asserts with:
      DCHECK_EQ(parsing_on_main_thread_, isolate != nullptr);
      
      Also deletes unused function ParseInfo::ReopenHandlesInNewHandleScope.
      
      Bug: v8:7786
      Change-Id: I3dd9c49dcde49fdbcb684ba73f47a30d00fc495e
      Reviewed-on: https://chromium-review.googlesource.com/1087272
      Commit-Queue: Dan Elphick <delphick@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53820}
      52e2b5aa
  24. 07 Jun, 2018 1 commit
    • Leszek Swirski's avatar
      Revert "[sfi] Remove SFI function literal id field" · b6888b63
      Leszek Swirski authored
      This reverts commit ceb9c812.
      
      Reason for revert: Tanks compile time
      
      Original change's description:
      > [sfi] Remove SFI function literal id field
      > 
      > SharedFunctionInfos store their original function literal's id. This is
      > also their index in the Script's SFI list.
      > 
      > Since the function literal id is only needed for lazy compilation and live
      > edit, we can calculate it on-the-fly by linear search in the Script SFI list,
      > and save a field on the SFI.
      > 
      > If this regresses compile performance, we could alternatively store the
      > function literal id on the preparsed scope data as future work.
      > 
      > Bug: chromium:818642
      > Change-Id: I5468cea0e115921f1c864d94e567d749a4349882
      > Reviewed-on: https://chromium-review.googlesource.com/1082480
      > Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Hannes Payer <hpayer@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#53523}
      
      TBR=hpayer@chromium.org,leszeks@chromium.org,verwaest@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: chromium:818642
      Bug: chromium:850417
      Change-Id: If2fd21331b7062532c04004a51e705f7e9d0a151
      Reviewed-on: https://chromium-review.googlesource.com/1090494Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53573}
      b6888b63
  25. 05 Jun, 2018 2 commits
    • Leszek Swirski's avatar
      [sfi] Remove SFI function literal id field · ceb9c812
      Leszek Swirski authored
      SharedFunctionInfos store their original function literal's id. This is
      also their index in the Script's SFI list.
      
      Since the function literal id is only needed for lazy compilation and live
      edit, we can calculate it on-the-fly by linear search in the Script SFI list,
      and save a field on the SFI.
      
      If this regresses compile performance, we could alternatively store the
      function literal id on the preparsed scope data as future work.
      
      Bug: chromium:818642
      Change-Id: I5468cea0e115921f1c864d94e567d749a4349882
      Reviewed-on: https://chromium-review.googlesource.com/1082480
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53523}
      ceb9c812
    • Dan Elphick's avatar
      [parsing] Remove most GetIsolate calls · 6cddfd50
      Dan Elphick authored
      Removes most[1] explicit calls to GetIsolate() in parsing/ by passing
      it through calling function functions and implicit calls via the single
      argument Handle constructor and handle function.
      
      [1] One remains in preparsed-scope-data.cc:
      data_->GetIsolate()->PushStackTraceAndDie()
      
      Bug: v8:7786
      Change-Id: I4c445995a73c19bdf4649b65487b7443d56ddd2a
      Reviewed-on: https://chromium-review.googlesource.com/1085057Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Dan Elphick <delphick@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53513}
      6cddfd50
  26. 27 Mar, 2018 1 commit
  27. 21 Feb, 2018 1 commit
  28. 19 Feb, 2018 1 commit
  29. 10 Jan, 2018 1 commit
  30. 18 Dec, 2017 1 commit
  31. 20 Nov, 2017 1 commit
  32. 16 Nov, 2017 1 commit
  33. 14 Nov, 2017 3 commits
  34. 03 Nov, 2017 1 commit