1. 04 Oct, 2018 1 commit
  2. 17 Aug, 2018 1 commit
  3. 25 Jul, 2018 1 commit
  4. 18 Jun, 2018 1 commit
    • Clemens Hammacher's avatar
      Make CallInterfaceDescriptor isolate-independent · 3cb376dc
      Clemens Hammacher authored
      Currently each isolate stores its own array of
      {CallInterfaceDescriptorData}. This array has size 173, and each entry
      has 40 bytes. That's already 7kB per isolate.
      Additionally, each {CallInterfaceDescriptorData} allocates two
      heap-allocated arrays, which probably add up to more than the static
      size of the {CallInterfaceDescriptorData}. Note that all the
      {CallInterfaceDescriptorData} instances are initialized eagerly on
      isolate creation.
      
      Since {CallInterfaceDescriptor} is totally isolate independent itself,
      this CL refactors the current design to avoid a copy of them per
      isolate, and instead shares them process-wide. Still, we need to free
      the allocated heap arrays when the last isolate dies to avoid leaks.
      This can probably be refactored later by statically initializing more
      and avoiding the heap allocations all together.
      
      This refactoring will also allow us to use {CallInterfaceDescriptor}s
      from wasm background compilation threads, which are not bound to any
      isolate.
      
      R=mstarzinger@chromium.org, titzer@chromium.org
      
      Bug: v8:6600
      Change-Id: If8625b89951eec8fa8986b49a5c166e874a72494
      Reviewed-on: https://chromium-review.googlesource.com/1100879
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53803}
      3cb376dc
  5. 24 Apr, 2018 1 commit
    • Kenton Varda's avatar
      ThreadDataTable: Change global linked list to per-Isolate hash map. · b49206de
      Kenton Varda authored
      For use cases with a large number of threads or a large number of isolates (or
      both), ThreadDataTable can be a major performance bottleneck due to O(n)
      lookup time of the linked list. Switching to a hash map reduces this to O(1).
      
      Example 1: Sandstorm.io, a Node.js app that utilizes "fibers", was observed
      spending the majority of CPU time iterating over the ThreadDataTable.
      See: https://sandstorm.io/news/2016-09-30-fiber-bomb-debugging-story
      
      Example 2: Cloudflare's Workers engine, a high-multi-tenancy web server
      framework built on V8 (but not Node), creates large numbers of threads and
      isolates per-process. It saw a 34x improvement in throughput when we applied
      this patch.
      
      Cloudflare has been using a patch in production since the Workers launch which
      replaces the linked list with a hash map -- but still global.
      
      This commit builds on that but goes further and creates a separate hash map
      and mutex for each isolate, with the table being a member of the Isolate
      class. This avoids any globals and should reduce lock contention.
      
      Bug: v8:5338
      Change-Id: If0d11509afb2e043b888c376e36d3463db931b47
      Reviewed-on: https://chromium-review.googlesource.com/1014407Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52753}
      b49206de
  6. 17 Apr, 2018 1 commit
  7. 14 Feb, 2018 1 commit
  8. 21 Dec, 2017 1 commit
  9. 19 Dec, 2017 1 commit
  10. 13 Dec, 2017 1 commit
    • Michael Starzinger's avatar
      [simulator] Refactor redirections to be process-wide. · f4dde200
      Michael Starzinger authored
      This refactors the list of redirections of runtime call targets that
      simulators maintain to be process-wide (as opposed to be per Isolate).
      Such redirections are used for static C++ call targets which themselves
      are process-wide, which makes this model a closer fit. Access is already
      properly synchronized via a mutex.
      
      Along the way this also introduces the {SimulatorBase} class as a common
      base class for all simulator implementations.
      
      R=clemensh@chromium.org
      
      Change-Id: Iae8602c44b1b34cb916dde2b22c9403b0496b3d4
      Reviewed-on: https://chromium-review.googlesource.com/823966
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50074}
      f4dde200
  11. 18 Oct, 2017 1 commit
  12. 13 Oct, 2017 1 commit
  13. 22 Sep, 2017 1 commit
  14. 28 Aug, 2017 1 commit
  15. 13 Jul, 2017 1 commit
  16. 26 Jun, 2017 1 commit
  17. 23 Jun, 2017 1 commit
  18. 13 Jun, 2017 1 commit
  19. 17 Mar, 2017 1 commit
  20. 23 Feb, 2017 1 commit
  21. 30 Jan, 2017 1 commit
  22. 03 Nov, 2016 1 commit
    • lpy's avatar
      [Tracing] Make TracingCategoryObserver v8 internal. · 2525b057
      lpy authored
      This patch removes TracingCategoryObserver API and moves the creation of
      observer inside platform initialization, by assuming that either
      Platform::AddTraceStateObserver is implemented correctly to add observer to
      tracing controller that implemented by embedders, or default tracing controller
      has already been set up and attached to platform before
      v8::V8::InitializePlatform is called.
      
      BUG=v8:5590
      
      Review-Url: https://codereview.chromium.org/2471583004
      Cr-Commit-Position: refs/heads/master@{#40739}
      2525b057
  23. 08 Jul, 2016 1 commit
  24. 17 Jun, 2016 1 commit
    • bmeurer's avatar
      [builtins] Introduce proper Float64Exp operator. · d5f2ac5e
      bmeurer authored
      Import base::ieee754::exp() from FreeBSD msun and introduce a Float64Exp
      TurboFan operator based on that, similar to what we do for Float64Log.
      Rewrite Math.exp() as TurboFan builtin and use that operator to also
      inline Math.exp() into optimized TurboFan functions.
      
      CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
      BUG=v8:3266,v8:3468,v8:3493,v8:5086,v8:5108,chromium:620786
      R=mvstanton@chromium.org
      
      Committed: https://crrev.com/93e26314afc9da9b5b8bd998688262444ed73260
      Review-Url: https://codereview.chromium.org/2077533002
      Cr-Original-Commit-Position: refs/heads/master@{#37037}
      Cr-Commit-Position: refs/heads/master@{#37047}
      d5f2ac5e
  25. 16 Jun, 2016 2 commits
  26. 26 May, 2016 1 commit
    • lpy's avatar
      Reland: Create libsampler as V8 sampler library. · a0198c0f
      lpy authored
      This patch does five things:
      
      1. Extracts sampler as libsampler to provide sampling functionality support.
      2. Makes SampleStack virtual so embedders can override the behaviour of sample collecting.
      3. Removes sampler.[h|cc].
      4. Moves sampling thread into log.cc as workaround to keep the --prof functionality.
      5. Creates SamplerManager to manage the relationship between samplers and threads.
      
      The reason we port hashmap.h is that in debug mode, STL containers are using
      mutexes from a mutex pool, which may lead to deadlock when using asynchronously
      signal handler.
      
      Currently libsampler is used in V8 temporarily.
      
      BUG=v8:4789
      LOG=n
      
      Committed: https://crrev.com/06cc9b7c176a6223971deaa9fbcafe1a05058c7b
      Cr-Commit-Position: refs/heads/master@{#36527}
      
      Review-Url: https://codereview.chromium.org/1922303002
      Cr-Commit-Position: refs/heads/master@{#36532}
      a0198c0f
  27. 25 May, 2016 2 commits
    • lpy's avatar
      Revert of Create libsampler as V8 sampler library. (patchset #24 id:460001 of... · 636f1e8e
      lpy authored
      Revert of Create libsampler as V8 sampler library. (patchset #24 id:460001 of https://codereview.chromium.org/1922303002/ )
      
      Reason for revert:
      V8 Linux64 TSAN failure because ThreadSanitizer indicated data race.
      
      Original issue's description:
      > Create libsampler as V8 sampler library.
      >
      > This patch does five things:
      >
      > 1. Extracts sampler as libsampler to provide sampling functionality support.
      > 2. Makes SampleStack virtual so embedders can override the behaviour of sample collecting.
      > 3. Removes sampler.[h|cc].
      > 4. Moves sampling thread into log.cc as workaround to keep the --prof functionality.
      > 5. Creates SamplerManager to manage the relationship between samplers and threads.
      >
      > The reason we port hashmap.h is that in debug mode, STL containers are using
      > mutexes from a mutex pool, which may lead to deadlock when using asynchronously
      > signal handler.
      >
      > Currently libsampler is used in V8 temporarily.
      >
      > BUG=v8:4789
      > LOG=n
      >
      > Committed: https://crrev.com/06cc9b7c176a6223971deaa9fbcafe1a05058c7b
      > Cr-Commit-Position: refs/heads/master@{#36527}
      
      TBR=jochen@chromium.org,alph@chromium.org,fmeawad@chromium.org,yangguo@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4789
      
      Review-Url: https://codereview.chromium.org/2000323007
      Cr-Commit-Position: refs/heads/master@{#36529}
      636f1e8e
    • lpy's avatar
      Create libsampler as V8 sampler library. · 06cc9b7c
      lpy authored
      This patch does five things:
      
      1. Extracts sampler as libsampler to provide sampling functionality support.
      2. Makes SampleStack virtual so embedders can override the behaviour of sample collecting.
      3. Removes sampler.[h|cc].
      4. Moves sampling thread into log.cc as workaround to keep the --prof functionality.
      5. Creates SamplerManager to manage the relationship between samplers and threads.
      
      The reason we port hashmap.h is that in debug mode, STL containers are using
      mutexes from a mutex pool, which may lead to deadlock when using asynchronously
      signal handler.
      
      Currently libsampler is used in V8 temporarily.
      
      BUG=v8:4789
      LOG=n
      
      Review-Url: https://codereview.chromium.org/1922303002
      Cr-Commit-Position: refs/heads/master@{#36527}
      06cc9b7c
  28. 01 Mar, 2016 1 commit
  29. 26 Nov, 2015 2 commits
  30. 25 Nov, 2015 1 commit
  31. 20 Oct, 2015 1 commit
  32. 28 Sep, 2015 1 commit
  33. 08 Sep, 2015 1 commit
  34. 21 Aug, 2015 1 commit
  35. 10 Aug, 2015 1 commit
    • mstarzinger's avatar
      [heap] Avoid overzealous inclusion of heap internal headers. · 65c8ecc6
      mstarzinger authored
      This is a first step towards constraining down the heap interface to
      just the heap.h file. Note that many includes still leak through that
      file to the global "src" directory, but there now is a single place
      controlling which declarations leak that way. Especially inclusion of
      inline header files within "heap" has been limited drastically.
      
      R=hpayer@chromium.org,mlippautz@chromium.org
      
      Review URL: https://codereview.chromium.org/1281233003
      
      Cr-Commit-Position: refs/heads/master@{#30092}
      65c8ecc6
  36. 31 Jul, 2015 1 commit
  37. 17 Jul, 2015 1 commit