[cpu-profiler] Only store deopt inline frames for functions that need it

We store deopt inline frames for all functions when we receive the code
creation event. We only ever use this information for code which is
deoptimized. Given that we receive code deopt events, we can just store
this information when the code is deoptimized.

At the time of the code deopt event, we also know the associated
deopt_id. That means we don't need to store a map of deopt_ids to
vectors of frames, because we will only ever access the frames for the
deopt_id that is already set.

This means we store way less data, particularly for long-running
processes which see fewer deopts. This saves 10MiB peak memory on the
node server example.

Bug: v8:7719
Change-Id: If6cf5ec413848e4c9f3c1e2106366ae2adae6fb1
Reviewed-on: https://chromium-review.googlesource.com/1050289
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53330}
6 files changed
tree: f45c6ee29ddd5a1b496afb473f91a82b56c59b9a
  1. benchmarks/
  2. build_overrides/
  3. docs/
  4. gni/
  5. include/
  6. infra/
  7. samples/
  8. src/
  9. test/
  10. testing/
  11. third_party/
  12. tools/
  13. .clang-format
  14. .editorconfig
  15. .git-blame-ignore-revs
  16. .gitattributes
  17. .gitignore
  18. .gn
  19. .vpython
  20. .ycm_extra_conf.py
  21. AUTHORS
  22. BUILD.gn
  23. ChangeLog
  24. CODE_OF_CONDUCT.md
  25. codereview.settings
  26. DEPS
  27. LICENSE
  28. LICENSE.fdlibm
  29. LICENSE.strongtalk
  30. LICENSE.v8
  31. LICENSE.valgrind
  32. OWNERS
  33. PRESUBMIT.py
  34. README.md
  35. snapshot_toolchain.gni
  36. WATCHLISTS
README.md

V8 JavaScript Engine

V8 is Google's open source JavaScript engine.

V8 implements ECMAScript as specified in ECMA-262.

V8 is written in C++ and is used in Google Chrome, the open source browser from Google.

V8 can run standalone, or can be embedded into any C++ application.

V8 Project page: https://github.com/v8/v8/wiki

Getting the Code

Checkout depot tools, and run

    fetch v8

This will checkout V8 into the directory v8 and fetch all of its dependencies. To stay up to date, run

    git pull origin
    gclient sync

For fetching all branches, add the following into your remote configuration in .git/config:

    fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
    fetch = +refs/tags/*:refs/tags/*

Contributing

Please follow the instructions mentioned on the V8 wiki.