Revert "[heap] Merge StartIncrementalMarkingIfLimitIsReached for all threads"

This reverts commit d05fed47b7154915a52dbaddf3d76a5f4dc82347.

Reason for revert: Discovered non-trivial race in
https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket/8764183817836406497/+/u/Num_Fuzz_-_delay/box2d

Original change's description:
> [heap] Merge StartIncrementalMarkingIfLimitIsReached for all threads
>
> Merge this method for main and background threads. The method now
> gets the LocalHeap as an argument to decide whether it currently
> runs on a main or background thread.
>
> As soon as the hard limit is reached, incremental marking starts
> right away on the main thread. However marking can not be started
> on a background thread, so on such threads marking is lazily
> started on the main thread both through a stack guard and posting a
> task.
>
> Note that this changes behavior in ConcurrentAllocator. So far this
> Allocator always used the background thread version of this method.
> And in that version marking was never started right away even on the
> main thread.
>
> This means that we now need to change order and invoke this method
> before the allocation like we already do on the main thread in order
> for black allocation to work. It also means that incremental marking
> could start in situations where we didn't expect it so far (see changes
> in tests for this).
>
> Bug: chromium:1480975
> Change-Id: I02460e07fc159a443e5e2ba00e48e988707cdcbb
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5030192
> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#90994}

Bug: chromium:1480975
Change-Id: Iba59d168679113f1fa67691ea26ac7c732324595
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5040951
Auto-Submit: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#91025}
7 files changed
tree: fc83a17fd48522d6176c6e99c0faea755ee44ab4
  1. .github/
  2. bazel/
  3. build_overrides/
  4. custom_deps/
  5. docs/
  6. gni/
  7. include/
  8. infra/
  9. samples/
  10. src/
  11. test/
  12. testing/
  13. third_party/
  14. tools/
  15. .bazelrc
  16. .clang-format
  17. .clang-tidy
  18. .editorconfig
  19. .flake8
  20. .git-blame-ignore-revs
  21. .gitattributes
  22. .gitignore
  23. .gn
  24. .mailmap
  25. .style.yapf
  26. .vpython3
  27. .ycm_extra_conf.py
  28. AUTHORS
  29. BUILD.bazel
  30. BUILD.gn
  31. CODE_OF_CONDUCT.md
  32. codereview.settings
  33. COMMON_OWNERS
  34. DEPS
  35. DIR_METADATA
  36. ENG_REVIEW_OWNERS
  37. INFRA_OWNERS
  38. INTL_OWNERS
  39. LICENSE
  40. LICENSE.fdlibm
  41. LICENSE.strongtalk
  42. LICENSE.v8
  43. LOONG_OWNERS
  44. MIPS_OWNERS
  45. OWNERS
  46. PPC_OWNERS
  47. PRESUBMIT.py
  48. README.md
  49. RISCV_OWNERS
  50. S390_OWNERS
  51. WATCHLISTS
  52. WORKSPACE
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.