[codegen] Avoid dynamic allocations for ExternalAssemblerBufferImpl

Those dynamic allocations are responsible for 5-10% of execution time in
wasm code publishing, which again is the biggest contributor to
deserialization time. The allocations are used for patching the jump
table. This CL avoids dynamic memory allocation by having some
thread-local space that is re-used for allocations of
ExternalAssemblerBufferImpl. Since those objects are small, memory usage
is not a concern here.

R=jkummerow@chromium.org

Bug: v8:11164
Cq-Include-Trybots: luci.v8.try:v8_linux64_asan_rel_ng
Cq-Include-Trybots: luci.v8.try:v8_linux64_msan_rel_ng
Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng
Change-Id: I44aad86fa821a1ccb59b539da861a346f62a9813
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2667859
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72585}
1 file changed
tree: b9b158c648efde594e970a8db0b18db6fadf6e13
  1. .github/
  2. build_overrides/
  3. custom_deps/
  4. docs/
  5. gni/
  6. include/
  7. infra/
  8. samples/
  9. src/
  10. test/
  11. testing/
  12. third_party/
  13. tools/
  14. .clang-format
  15. .clang-tidy
  16. .editorconfig
  17. .flake8
  18. .git-blame-ignore-revs
  19. .gitattributes
  20. .gitignore
  21. .gn
  22. .vpython
  23. .ycm_extra_conf.py
  24. AUTHORS
  25. BUILD.gn
  26. CODE_OF_CONDUCT.md
  27. codereview.settings
  28. COMMON_OWNERS
  29. DEPS
  30. DIR_METADATA
  31. ENG_REVIEW_OWNERS
  32. INFRA_OWNERS
  33. INTL_OWNERS
  34. LICENSE
  35. LICENSE.fdlibm
  36. LICENSE.strongtalk
  37. LICENSE.v8
  38. MIPS_OWNERS
  39. OWNERS
  40. PPC_OWNERS
  41. PRESUBMIT.py
  42. README.md
  43. S390_OWNERS
  44. 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://v8.dev/docs

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 at v8.dev/docs/contribute.