node-aix-ppc64 22.9.0 → 23.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/CHANGELOG.md +395 -1901
  2. package/README.md +13 -4
  3. package/bin/node +0 -0
  4. package/include/node/common.gypi +3 -3
  5. package/include/node/config.gypi +3 -3
  6. package/include/node/cppgc/allocation.h +10 -11
  7. package/include/node/cppgc/garbage-collected.h +8 -0
  8. package/include/node/cppgc/heap-statistics.h +2 -0
  9. package/include/node/cppgc/internal/api-constants.h +6 -1
  10. package/include/node/cppgc/internal/compiler-specific.h +9 -1
  11. package/include/node/cppgc/internal/gc-info.h +12 -10
  12. package/include/node/cppgc/internal/member-storage.h +6 -0
  13. package/include/node/cppgc/internal/name-trait.h +5 -1
  14. package/include/node/cppgc/name-provider.h +7 -0
  15. package/include/node/node.exp +7632 -6101
  16. package/include/node/node.h +8 -18
  17. package/include/node/node_api.h +12 -0
  18. package/include/node/node_version.h +3 -3
  19. package/include/node/openssl/archs/BSD-x86/asm/crypto/buildinf.h +1 -1
  20. package/include/node/openssl/archs/BSD-x86/asm/include/openssl/opensslv.h +5 -5
  21. package/include/node/openssl/archs/BSD-x86/asm_avx2/crypto/buildinf.h +1 -1
  22. package/include/node/openssl/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h +5 -5
  23. package/include/node/openssl/archs/BSD-x86/no-asm/crypto/buildinf.h +1 -1
  24. package/include/node/openssl/archs/BSD-x86/no-asm/include/openssl/opensslv.h +5 -5
  25. package/include/node/openssl/archs/BSD-x86_64/asm/crypto/buildinf.h +1 -1
  26. package/include/node/openssl/archs/BSD-x86_64/asm/include/openssl/opensslv.h +5 -5
  27. package/include/node/openssl/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h +1 -1
  28. package/include/node/openssl/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h +5 -5
  29. package/include/node/openssl/archs/BSD-x86_64/no-asm/crypto/buildinf.h +1 -1
  30. package/include/node/openssl/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h +5 -5
  31. package/include/node/openssl/archs/VC-WIN32/asm/crypto/buildinf.h +1 -1
  32. package/include/node/openssl/archs/VC-WIN32/asm/include/openssl/opensslv.h +5 -5
  33. package/include/node/openssl/archs/VC-WIN32/asm_avx2/crypto/buildinf.h +1 -1
  34. package/include/node/openssl/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h +5 -5
  35. package/include/node/openssl/archs/VC-WIN32/no-asm/crypto/buildinf.h +1 -1
  36. package/include/node/openssl/archs/VC-WIN32/no-asm/include/openssl/opensslv.h +5 -5
  37. package/include/node/openssl/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h +1 -1
  38. package/include/node/openssl/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h +5 -5
  39. package/include/node/openssl/archs/VC-WIN64A/asm/crypto/buildinf.h +1 -1
  40. package/include/node/openssl/archs/VC-WIN64A/asm/include/openssl/opensslv.h +5 -5
  41. package/include/node/openssl/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h +1 -1
  42. package/include/node/openssl/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h +5 -5
  43. package/include/node/openssl/archs/VC-WIN64A/no-asm/crypto/buildinf.h +1 -1
  44. package/include/node/openssl/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h +5 -5
  45. package/include/node/openssl/archs/aix64-gcc-as/asm/crypto/buildinf.h +1 -1
  46. package/include/node/openssl/archs/aix64-gcc-as/asm/include/openssl/opensslv.h +5 -5
  47. package/include/node/openssl/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h +1 -1
  48. package/include/node/openssl/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h +5 -5
  49. package/include/node/openssl/archs/aix64-gcc-as/no-asm/crypto/buildinf.h +1 -1
  50. package/include/node/openssl/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h +5 -5
  51. package/include/node/openssl/archs/darwin-i386-cc/asm/crypto/buildinf.h +1 -1
  52. package/include/node/openssl/archs/darwin-i386-cc/asm/include/openssl/opensslv.h +5 -5
  53. package/include/node/openssl/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h +1 -1
  54. package/include/node/openssl/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h +5 -5
  55. package/include/node/openssl/archs/darwin-i386-cc/no-asm/crypto/buildinf.h +1 -1
  56. package/include/node/openssl/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h +5 -5
  57. package/include/node/openssl/archs/darwin64-arm64-cc/asm/crypto/buildinf.h +1 -1
  58. package/include/node/openssl/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h +5 -5
  59. package/include/node/openssl/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h +1 -1
  60. package/include/node/openssl/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h +5 -5
  61. package/include/node/openssl/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h +1 -1
  62. package/include/node/openssl/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h +5 -5
  63. package/include/node/openssl/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h +1 -1
  64. package/include/node/openssl/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h +5 -5
  65. package/include/node/openssl/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h +1 -1
  66. package/include/node/openssl/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h +5 -5
  67. package/include/node/openssl/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h +1 -1
  68. package/include/node/openssl/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h +5 -5
  69. package/include/node/openssl/archs/linux-aarch64/asm/crypto/buildinf.h +1 -1
  70. package/include/node/openssl/archs/linux-aarch64/asm/include/openssl/opensslv.h +5 -5
  71. package/include/node/openssl/archs/linux-aarch64/asm_avx2/crypto/buildinf.h +1 -1
  72. package/include/node/openssl/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h +5 -5
  73. package/include/node/openssl/archs/linux-aarch64/no-asm/crypto/buildinf.h +1 -1
  74. package/include/node/openssl/archs/linux-aarch64/no-asm/include/openssl/opensslv.h +5 -5
  75. package/include/node/openssl/archs/linux-armv4/asm/crypto/buildinf.h +1 -1
  76. package/include/node/openssl/archs/linux-armv4/asm/include/openssl/opensslv.h +5 -5
  77. package/include/node/openssl/archs/linux-armv4/asm_avx2/crypto/buildinf.h +1 -1
  78. package/include/node/openssl/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h +5 -5
  79. package/include/node/openssl/archs/linux-armv4/no-asm/crypto/buildinf.h +1 -1
  80. package/include/node/openssl/archs/linux-armv4/no-asm/include/openssl/opensslv.h +5 -5
  81. package/include/node/openssl/archs/linux-elf/asm/crypto/buildinf.h +1 -1
  82. package/include/node/openssl/archs/linux-elf/asm/include/openssl/opensslv.h +5 -5
  83. package/include/node/openssl/archs/linux-elf/asm_avx2/crypto/buildinf.h +1 -1
  84. package/include/node/openssl/archs/linux-elf/asm_avx2/include/openssl/opensslv.h +5 -5
  85. package/include/node/openssl/archs/linux-elf/no-asm/crypto/buildinf.h +1 -1
  86. package/include/node/openssl/archs/linux-elf/no-asm/include/openssl/opensslv.h +5 -5
  87. package/include/node/openssl/archs/linux-ppc64le/asm/crypto/buildinf.h +1 -1
  88. package/include/node/openssl/archs/linux-ppc64le/asm/include/openssl/opensslv.h +5 -5
  89. package/include/node/openssl/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h +1 -1
  90. package/include/node/openssl/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h +5 -5
  91. package/include/node/openssl/archs/linux-ppc64le/no-asm/crypto/buildinf.h +1 -1
  92. package/include/node/openssl/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h +5 -5
  93. package/include/node/openssl/archs/linux-x86_64/asm/crypto/buildinf.h +1 -1
  94. package/include/node/openssl/archs/linux-x86_64/asm/include/openssl/opensslv.h +5 -5
  95. package/include/node/openssl/archs/linux-x86_64/asm_avx2/crypto/buildinf.h +1 -1
  96. package/include/node/openssl/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h +5 -5
  97. package/include/node/openssl/archs/linux-x86_64/no-asm/crypto/buildinf.h +1 -1
  98. package/include/node/openssl/archs/linux-x86_64/no-asm/include/openssl/opensslv.h +5 -5
  99. package/include/node/openssl/archs/linux32-s390x/asm/crypto/buildinf.h +1 -1
  100. package/include/node/openssl/archs/linux32-s390x/asm/include/openssl/opensslv.h +5 -5
  101. package/include/node/openssl/archs/linux32-s390x/asm_avx2/crypto/buildinf.h +1 -1
  102. package/include/node/openssl/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h +5 -5
  103. package/include/node/openssl/archs/linux32-s390x/no-asm/crypto/buildinf.h +1 -1
  104. package/include/node/openssl/archs/linux32-s390x/no-asm/include/openssl/opensslv.h +5 -5
  105. package/include/node/openssl/archs/linux64-loongarch64/no-asm/crypto/buildinf.h +1 -1
  106. package/include/node/openssl/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h +5 -5
  107. package/include/node/openssl/archs/linux64-mips64/asm/crypto/buildinf.h +1 -1
  108. package/include/node/openssl/archs/linux64-mips64/asm/include/openssl/opensslv.h +5 -5
  109. package/include/node/openssl/archs/linux64-mips64/asm_avx2/crypto/buildinf.h +1 -1
  110. package/include/node/openssl/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h +5 -5
  111. package/include/node/openssl/archs/linux64-mips64/no-asm/crypto/buildinf.h +1 -1
  112. package/include/node/openssl/archs/linux64-mips64/no-asm/include/openssl/opensslv.h +5 -5
  113. package/include/node/openssl/archs/linux64-riscv64/no-asm/crypto/buildinf.h +1 -1
  114. package/include/node/openssl/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h +5 -5
  115. package/include/node/openssl/archs/linux64-s390x/asm/crypto/buildinf.h +1 -1
  116. package/include/node/openssl/archs/linux64-s390x/asm/include/openssl/opensslv.h +5 -5
  117. package/include/node/openssl/archs/linux64-s390x/asm_avx2/crypto/buildinf.h +1 -1
  118. package/include/node/openssl/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h +5 -5
  119. package/include/node/openssl/archs/linux64-s390x/no-asm/crypto/buildinf.h +1 -1
  120. package/include/node/openssl/archs/linux64-s390x/no-asm/include/openssl/opensslv.h +5 -5
  121. package/include/node/openssl/archs/solaris-x86-gcc/asm/crypto/buildinf.h +1 -1
  122. package/include/node/openssl/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h +5 -5
  123. package/include/node/openssl/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h +1 -1
  124. package/include/node/openssl/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h +5 -5
  125. package/include/node/openssl/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h +1 -1
  126. package/include/node/openssl/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h +5 -5
  127. package/include/node/openssl/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h +1 -1
  128. package/include/node/openssl/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h +5 -5
  129. package/include/node/openssl/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h +1 -1
  130. package/include/node/openssl/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h +5 -5
  131. package/include/node/openssl/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h +1 -1
  132. package/include/node/openssl/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h +5 -5
  133. package/include/node/openssl/sslerr.h +3 -1
  134. package/include/node/openssl/tls1.h +3 -1
  135. package/include/node/v8-array-buffer.h +44 -24
  136. package/include/node/v8-callbacks.h +10 -5
  137. package/include/node/v8-context.h +41 -9
  138. package/include/node/v8-cppgc.h +3 -55
  139. package/include/node/v8-date.h +9 -0
  140. package/include/node/v8-embedder-heap.h +4 -1
  141. package/include/node/v8-exception.h +70 -0
  142. package/include/node/v8-function-callback.h +203 -62
  143. package/include/node/v8-function.h +4 -3
  144. package/include/node/v8-handle-base.h +2 -2
  145. package/include/node/v8-initialization.h +18 -1
  146. package/include/node/v8-internal.h +303 -58
  147. package/include/node/v8-isolate.h +51 -39
  148. package/include/node/v8-local-handle.h +18 -19
  149. package/include/node/v8-message.h +0 -21
  150. package/include/node/v8-microtask-queue.h +0 -5
  151. package/include/node/v8-object.h +284 -35
  152. package/include/node/v8-persistent-handle.h +0 -19
  153. package/include/node/v8-platform.h +21 -35
  154. package/include/node/v8-primitive.h +92 -1
  155. package/include/node/v8-profiler.h +38 -1
  156. package/include/node/v8-promise.h +2 -2
  157. package/include/node/v8-sandbox.h +173 -0
  158. package/include/node/v8-script.h +44 -14
  159. package/include/node/v8-snapshot.h +38 -2
  160. package/include/node/v8-template.h +105 -263
  161. package/include/node/v8-traced-handle.h +4 -15
  162. package/include/node/v8-unwinder.h +2 -1
  163. package/include/node/v8-value.h +3 -2
  164. package/include/node/v8-version.h +3 -3
  165. package/include/node/v8-wasm.h +3 -0
  166. package/include/node/v8config.h +47 -7
  167. package/package.json +1 -1
  168. package/share/doc/node/gdbinit +41 -3
  169. package/share/doc/node/lldb_commands.py +7 -2
  170. package/share/man/man1/node.1 +3 -14
package/README.md CHANGED
@@ -81,8 +81,10 @@ directory contains the latest Hydrogen (Node.js 18) release.
81
81
 
82
82
  <https://nodejs.org/download/nightly/>
83
83
 
84
- Each directory name and filename contains a date (in UTC) and the commit
85
- SHA at the HEAD of the release.
84
+ Each directory and filename includes the version (e.g., `v22.0.0`),
85
+ followed by the UTC date (e.g., `20240424` for April 24, 2024),
86
+ and the short commit SHA of the HEAD of the release (e.g., `ddd0a9e494`).
87
+ For instance, a full directory name might look like `v22.0.0-nightly20240424ddd0a9e494`.
86
88
 
87
89
  #### API documentation
88
90
 
@@ -282,6 +284,8 @@ For information about the governance of the Node.js project, see
282
284
 
283
285
  ### Collaborators
284
286
 
287
+ * [abmusse](https://github.com/abmusse) -
288
+ **Abdirahim Musse** <<abdirahim.musse@ibm.com>>
285
289
  * [addaleax](https://github.com/addaleax) -
286
290
  **Anna Henningsen** <<anna@addaleax.net>> (she/her)
287
291
  * [aduh95](https://github.com/aduh95) -
@@ -358,8 +362,6 @@ For information about the governance of the Node.js project, see
358
362
  **James M Snell** <<jasnell@gmail.com>> (he/him)
359
363
  * [jkrems](https://github.com/jkrems) -
360
364
  **Jan Krems** <<jan.krems@gmail.com>> (he/him)
361
- * [joesepi](https://github.com/joesepi) -
362
- **Joe Sepi** <<sepi@joesepi.com>> (he/him)
363
365
  * [joyeecheung](https://github.com/joyeecheung) -
364
366
  **Joyee Cheung** <<joyeec9h3@gmail.com>> (she/her)
365
367
  * [juanarbol](https://github.com/juanarbol) -
@@ -408,6 +410,8 @@ For information about the governance of the Node.js project, see
408
410
  **Filip Skokan** <<panva.ip@gmail.com>> (he/him)
409
411
  * [pimterry](https://github.com/pimterry) -
410
412
  **Tim Perry** <<pimterry@gmail.com>> (he/him)
413
+ * [pmarchini](https://github.com/pmarchini)
414
+ **Pietro Marchini** <<pietro.marchini94@gmail.com>> (he/him)
411
415
  * [Qard](https://github.com/Qard) -
412
416
  **Stephen Belanger** <<admin@stephenbelanger.com>> (he/him)
413
417
  * [RafaelGSS](https://github.com/RafaelGSS) -
@@ -562,6 +566,8 @@ For information about the governance of the Node.js project, see
562
566
  **Yuval Brik** <<yuval@brik.org.il>>
563
567
  * [joaocgreis](https://github.com/joaocgreis) -
564
568
  **João Reis** <<reis@janeasystems.com>>
569
+ * [joesepi](https://github.com/joesepi) -
570
+ **Joe Sepi** <<sepi@joesepi.com>> (he/him)
565
571
  * [joshgav](https://github.com/joshgav) -
566
572
  **Josh Gavant** <<josh.gavant@outlook.com>>
567
573
  * [julianduque](https://github.com/julianduque) -
@@ -762,6 +768,8 @@ responding to new issues.
762
768
 
763
769
  Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys):
764
770
 
771
+ * **Antoine du Hamel** <<duhamelantoine1995@gmail.com>>
772
+ `C0D6248439F1D5604AAFFB4021D900FFDB233756`
765
773
  * **Beth Griggs** <<bethanyngriggs@gmail.com>>
766
774
  `4ED778F539E3634C779C87C6D7062848A1AB005C`
767
775
  * **Bryan English** <<bryan@bryanenglish.com>>
@@ -787,6 +795,7 @@ To import the full set of trusted release keys (including subkeys possibly used
787
795
  to sign releases):
788
796
 
789
797
  ```bash
798
+ gpg --keyserver hkps://keys.openpgp.org --recv-keys C0D6248439F1D5604AAFFB4021D900FFDB233756 # Antoine du Hamel
790
799
  gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C # Beth Griggs
791
800
  gpg --keyserver hkps://keys.openpgp.org --recv-keys 141F07595B7B3FFE74309A937405533BE57C7D57 # Bryan English
792
801
  gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201 # Danielle Adams
package/bin/node CHANGED
Binary file
@@ -36,7 +36,7 @@
36
36
 
37
37
  # Reset this number to 0 on major V8 upgrades.
38
38
  # Increment by one for each non-official patch applied to deps/v8.
39
- 'v8_embedder_string': '-node.19',
39
+ 'v8_embedder_string': '-node.10',
40
40
 
41
41
  ##### V8 defaults for Node.js #####
42
42
 
@@ -493,7 +493,7 @@
493
493
  '-fno-rtti',
494
494
  '-fno-exceptions',
495
495
  '-fno-strict-aliasing',
496
- '-std=gnu++17',
496
+ '-std=gnu++20',
497
497
  ],
498
498
  'defines': [ '__STDC_FORMAT_MACROS' ],
499
499
  'ldflags': [ '-rdynamic' ],
@@ -663,7 +663,7 @@
663
663
  ['clang==1', {
664
664
  'xcode_settings': {
665
665
  'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
666
- 'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++17', # -std=gnu++17
666
+ 'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++20', # -std=gnu++20
667
667
  'CLANG_CXX_LIBRARY': 'libc++',
668
668
  },
669
669
  }],
@@ -165,7 +165,6 @@
165
165
  'lib/internal/http2/compat.js',
166
166
  'lib/internal/http2/core.js',
167
167
  'lib/internal/http2/util.js',
168
- 'lib/internal/idna.js',
169
168
  'lib/internal/inspector_async_hook.js',
170
169
  'lib/internal/inspector_network_tracking.js',
171
170
  'lib/internal/js_stream_socket.js',
@@ -235,6 +234,7 @@
235
234
  'lib/internal/process/worker_thread_only.js',
236
235
  'lib/internal/promise_hooks.js',
237
236
  'lib/internal/querystring.js',
237
+ 'lib/internal/quic/quic.js',
238
238
  'lib/internal/readline/callbacks.js',
239
239
  'lib/internal/readline/emitKeypressEvents.js',
240
240
  'lib/internal/readline/interface.js',
@@ -363,7 +363,7 @@
363
363
  'lib/wasi.js',
364
364
  'lib/worker_threads.js',
365
365
  'lib/zlib.js'],
366
- 'node_module_version': 127,
366
+ 'node_module_version': 131,
367
367
  'node_no_browser_globals': 'false',
368
368
  'node_prefix': '/',
369
369
  'node_release_urlbase': 'https://nodejs.org/download/release/',
@@ -396,7 +396,7 @@
396
396
  'openssl_is_fips': 'false',
397
397
  'openssl_quic': 'true',
398
398
  'ossfuzz': 'false',
399
- 'shlib_suffix': '127.a',
399
+ 'shlib_suffix': '131.a',
400
400
  'single_executable_application': 'true',
401
401
  'target_arch': 'ppc64',
402
402
  'ubsan': 0,
@@ -47,7 +47,7 @@ namespace internal {
47
47
  // Similar to C++17 std::align_val_t;
48
48
  enum class AlignVal : size_t {};
49
49
 
50
- class V8_EXPORT MakeGarbageCollectedTraitInternal {
50
+ class MakeGarbageCollectedTraitInternal {
51
51
  protected:
52
52
  static inline void MarkObjectAsFullyConstructed(const void* payload) {
53
53
  // See api_constants for an explanation of the constants.
@@ -121,16 +121,15 @@ class V8_EXPORT MakeGarbageCollectedTraitInternal {
121
121
  };
122
122
 
123
123
  private:
124
- static void* CPPGC_DEFAULT_ALIGNED Allocate(cppgc::AllocationHandle&, size_t,
125
- GCInfoIndex);
126
- static void* CPPGC_DOUBLE_WORD_ALIGNED Allocate(cppgc::AllocationHandle&,
127
- size_t, AlignVal,
128
- GCInfoIndex);
129
- static void* CPPGC_DEFAULT_ALIGNED Allocate(cppgc::AllocationHandle&, size_t,
130
- GCInfoIndex, CustomSpaceIndex);
131
- static void* CPPGC_DOUBLE_WORD_ALIGNED Allocate(cppgc::AllocationHandle&,
132
- size_t, AlignVal, GCInfoIndex,
133
- CustomSpaceIndex);
124
+ V8_EXPORT static void* CPPGC_DEFAULT_ALIGNED
125
+ Allocate(cppgc::AllocationHandle&, size_t, GCInfoIndex);
126
+ V8_EXPORT static void* CPPGC_DOUBLE_WORD_ALIGNED
127
+ Allocate(cppgc::AllocationHandle&, size_t, AlignVal, GCInfoIndex);
128
+ V8_EXPORT static void* CPPGC_DEFAULT_ALIGNED
129
+ Allocate(cppgc::AllocationHandle&, size_t, GCInfoIndex, CustomSpaceIndex);
130
+ V8_EXPORT static void* CPPGC_DOUBLE_WORD_ALIGNED
131
+ Allocate(cppgc::AllocationHandle&, size_t, AlignVal, GCInfoIndex,
132
+ CustomSpaceIndex);
134
133
 
135
134
  friend class HeapObjectHeader;
136
135
  };
@@ -94,6 +94,14 @@ class GarbageCollectedMixin {
94
94
  public:
95
95
  using IsGarbageCollectedMixinTypeMarker = void;
96
96
 
97
+ // Must use MakeGarbageCollected.
98
+ void* operator new(size_t) = delete;
99
+ void* operator new[](size_t) = delete;
100
+ // The garbage collector is taking care of reclaiming the object.
101
+ // Not override the non-array varaint of `delete` to not conflict with the
102
+ // operator in GarbageCollected above.
103
+ void operator delete[](void*) = delete;
104
+
97
105
  /**
98
106
  * This Trace method must be overriden by objects inheriting from
99
107
  * GarbageCollectedMixin.
@@ -102,6 +102,8 @@ struct HeapStatistics final {
102
102
  size_t resident_size_bytes = 0;
103
103
  /** Amount of memory actually used on the heap. */
104
104
  size_t used_size_bytes = 0;
105
+ /** Memory retained in the page pool, not used directly by the heap. */
106
+ size_t pooled_memory_size_bytes = 0;
105
107
  /** Detail level of this HeapStatistics. */
106
108
  DetailLevel detail_level;
107
109
 
@@ -30,10 +30,15 @@ static constexpr size_t kFullyConstructedBitFieldOffsetFromPayload =
30
30
  // Mask for in-construction bit.
31
31
  static constexpr uint16_t kFullyConstructedBitMask = uint16_t{1};
32
32
 
33
- static constexpr size_t kPageSize = size_t{1} << 17;
33
+ static constexpr size_t kPageSizeBits = 17;
34
+ static constexpr size_t kPageSize = size_t{1} << kPageSizeBits;
34
35
 
35
36
  #if defined(V8_HOST_ARCH_ARM64) && defined(V8_OS_DARWIN)
36
37
  constexpr size_t kGuardPageSize = 0;
38
+ #elif defined(V8_HOST_ARCH_PPC64)
39
+ constexpr size_t kGuardPageSize = 0;
40
+ #elif defined(V8_HOST_ARCH_LOONG64) || defined(V8_HOST_ARCH_MIPS64)
41
+ constexpr size_t kGuardPageSize = 0;
37
42
  #else
38
43
  constexpr size_t kGuardPageSize = 4096;
39
44
  #endif
@@ -5,6 +5,8 @@
5
5
  #ifndef INCLUDE_CPPGC_INTERNAL_COMPILER_SPECIFIC_H_
6
6
  #define INCLUDE_CPPGC_INTERNAL_COMPILER_SPECIFIC_H_
7
7
 
8
+ #include "v8config.h" // NOLINT(build/include_directory)
9
+
8
10
  namespace cppgc {
9
11
 
10
12
  #if defined(__has_attribute)
@@ -21,7 +23,13 @@ namespace cppgc {
21
23
 
22
24
  // [[no_unique_address]] comes in C++20 but supported in clang with -std >=
23
25
  // c++11.
24
- #if CPPGC_HAS_CPP_ATTRIBUTE(no_unique_address)
26
+ #if defined(V8_CC_MSVC) && CPPGC_HAS_CPP_ATTRIBUTE(msvc::no_unique_address)
27
+ // Unfortunately MSVC ignores [[no_unique_address]] (see
28
+ // https://devblogs.microsoft.com/cppblog/msvc-cpp20-and-the-std-cpp20-switch/#msvc-extensions-and-abi),
29
+ // and clang-cl matches it for ABI compatibility reasons. We need to prefer
30
+ // [[msvc::no_unique_address]] when available if we actually want any effect.
31
+ #define CPPGC_NO_UNIQUE_ADDRESS [[msvc::no_unique_address]]
32
+ #elif CPPGC_HAS_CPP_ATTRIBUTE(no_unique_address)
25
33
  #define CPPGC_NO_UNIQUE_ADDRESS [[no_unique_address]]
26
34
  #else
27
35
  #define CPPGC_NO_UNIQUE_ADDRESS
@@ -94,12 +94,11 @@ struct GCInfoTrait final {
94
94
  return index;
95
95
  }
96
96
 
97
- static constexpr bool CheckCallbacksAreDefined() {
97
+ static constexpr void CheckCallbacksAreDefined() {
98
98
  // No USE() macro available.
99
99
  (void)static_cast<TraceCallback>(TraceTrait<T>::Trace);
100
100
  (void)static_cast<FinalizationCallback>(FinalizerTrait<T>::kCallback);
101
101
  (void)static_cast<NameCallback>(NameTrait<T>::GetName);
102
- return true;
103
102
  }
104
103
  };
105
104
 
@@ -127,19 +126,22 @@ struct GCInfoFolding final {
127
126
  // configuration. Only a single GCInfo (for `ResultType` below) will actually
128
127
  // be instantiated but existence (and well-formedness) of all callbacks is
129
128
  // checked.
130
- static constexpr bool kCheckTypeGuardAlwaysTrue =
131
- GCInfoTrait<T>::CheckCallbacksAreDefined() &&
129
+ static constexpr bool WantToFold() {
130
+ if constexpr ((kHasVirtualDestructorAtBase ||
131
+ kBothTypesAreTriviallyDestructible ||
132
+ kHasCustomFinalizerDispatchAtBase) &&
133
+ !kWantsDetailedObjectNames) {
134
+ GCInfoTrait<T>::CheckCallbacksAreDefined();
132
135
  GCInfoTrait<ParentMostGarbageCollectedType>::CheckCallbacksAreDefined();
136
+ return true;
137
+ }
138
+ return false;
139
+ }
133
140
 
134
141
  // Folding would regress name resolution when deriving names from C++
135
142
  // class names as it would just folds a name to the base class name.
136
143
  using ResultType =
137
- std::conditional_t<kCheckTypeGuardAlwaysTrue &&
138
- (kHasVirtualDestructorAtBase ||
139
- kBothTypesAreTriviallyDestructible ||
140
- kHasCustomFinalizerDispatchAtBase) &&
141
- !kWantsDetailedObjectNames,
142
- ParentMostGarbageCollectedType, T>;
144
+ std::conditional_t<WantToFold(), ParentMostGarbageCollectedType, T>;
143
145
  };
144
146
 
145
147
  } // namespace internal
@@ -158,6 +158,12 @@ class V8_TRIVIAL_ABI CompressedPointer final {
158
158
  static V8_INLINE void* Decompress(IntegralType ptr) {
159
159
  CPPGC_DCHECK(CageBaseGlobal::IsSet());
160
160
  const uintptr_t base = CageBaseGlobal::Get();
161
+ return Decompress(ptr, base);
162
+ }
163
+
164
+ static V8_INLINE void* Decompress(IntegralType ptr, uintptr_t base) {
165
+ CPPGC_DCHECK(CageBaseGlobal::IsSet());
166
+ CPPGC_DCHECK(base == CageBaseGlobal::Get());
161
167
  // Treat compressed pointer as signed and cast it to uint64_t, which will
162
168
  // sign-extend it.
163
169
  #if defined(CPPGC_2GB_CAGE)
@@ -121,7 +121,11 @@ class NameTrait final : public NameTraitBase {
121
121
  #undef PRETTY_FUNCTION_VALUE
122
122
 
123
123
  #else // !CPPGC_SUPPORTS_OBJECT_NAMES
124
- return {NameProvider::kHiddenName, true};
124
+ // We wanted to use a class name but were unable to provide one due to
125
+ // compiler limitations or build configuration. As such, return the hidden
126
+ // name with name_was_hidden=false, which will cause this object to be
127
+ // visible in the snapshot.
128
+ return {NameProvider::kHiddenName, false};
125
129
  #endif // !CPPGC_SUPPORTS_OBJECT_NAMES
126
130
  }
127
131
  };
@@ -55,6 +55,13 @@ class V8_EXPORT NameProvider {
55
55
  * Specifies a name for the garbage-collected object. Such names will never
56
56
  * be hidden, as they are explicitly specified by the user of this API.
57
57
  *
58
+ * V8 may call this function while generating a heap snapshot or at other
59
+ * times. If V8 is currently generating a heap snapshot (according to
60
+ * HeapProfiler::IsTakingSnapshot), then the returned string must stay alive
61
+ * until the snapshot generation has completed. Otherwise, the returned string
62
+ * must stay alive forever. If you need a place to store a temporary string
63
+ * during snapshot generation, use HeapProfiler::CopyNameForHeapSnapshot.
64
+ *
58
65
  * @returns a human readable name for the object.
59
66
  */
60
67
  virtual const char* GetHumanReadableName() const = 0;