Skip to content

deps: cherry-pick f4376ec801e1ded from V8 upstream

Original commit message:
  [heap] Make maximum regular code object size a runtime value.

  Executable V8 pages include 3 reserved OS pages: one for the writable
  header and two as guards. On systems with 64k OS pages, the amount of
  allocatable space left for objects can then be quite smaller than the
  page size, only 64k for each 256k page.

  This means regular code objects cannot be larger than 64k, while the
  maximum regular object size is fixed to 128k, half of the page size. As
  a result code object never reach this limit and we can end up filling
  regular pages with few large code objects.

  To fix this, we change the maximum code object size to be runtime value,
  set to half of the allocatable space per page. On systems with 64k OS
  pages, the limit will be 32k.

  Alternatively, we could increase the V8 page size to 512k on Arm64 linux
  so we wouldn't waste code space. However, systems with 4k OS pages are
  more common, and those with 64k pages tend to have more memory available
  so we should be able to live with it.

  Bug: v8:10808
  Change-Id: I5d807e7a3df89f1e9c648899e9ba2f8e2648264c
  Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2460809
  Reviewed-by: Igor Sheludko <ishell@chromium.org>
  Reviewed-by: Georg Neis <neis@chromium.org>
  Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
  Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
  Cr-Commit-Position: refs/heads/master@{#70569}

Refs: https://github.com/nodejs/help/issues/3202

Merge request reports

Loading