diff --git a/BUILD.bazel b/BUILD.bazel index 6639fac9b3..350e8678d5 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -28,6 +28,8 @@ load(":bazel/v8-non-pointer-compression.bzl", "v8_binary_non_pointer_compression # v8_custom_deps # v8_embed_script # v8_embedder_string +# v8_array_buffer_internal_field_count +# v8_array_buffer_view_internal_field_count # v8_promise_internal_field_count # v8_enable_vtunetracemark # v8_enable_fast_torque diff --git a/BUILD.gn b/BUILD.gn index bddaf4fd57..a30ab92ccb 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -67,6 +67,14 @@ declare_args() { # Sets the number of internal fields on promise objects. v8_promise_internal_field_count = 0 + # Sets the number of internal fields on array buffer objects. + # TODO(346350847): Switch default to 0. + v8_array_buffer_internal_field_count = 2 + + # Sets the number of internal fields on array buffer view objects. + # TODO(346350847): Switch default to 0. + v8_array_buffer_view_internal_field_count = 2 + # Sets -dENABLE_GDB_JIT_INTERFACE. v8_enable_gdbjit = "" @@ -1064,6 +1072,12 @@ config("features") { defines += [ "V8_PROMISE_INTERNAL_FIELD_COUNT=${v8_promise_internal_field_count}" ] } + if (v8_array_buffer_internal_field_count != 0) { + defines += [ "V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT=${v8_array_buffer_internal_field_count}" ] + } + if (v8_array_buffer_view_internal_field_count != 0) { + defines += [ "V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT=${v8_array_buffer_view_internal_field_count}" ] + } defines += [ "V8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=${v8_typed_array_max_size_in_heap}" ] diff --git a/include/v8-array-buffer.h b/include/v8-array-buffer.h index d625b85496..579744c6a5 100644 --- a/include/v8-array-buffer.h +++ b/include/v8-array-buffer.h @@ -18,7 +18,7 @@ namespace v8 { class SharedArrayBuffer; #ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT -// The number of required internal fields can be defined by embedder. +// Defined using gn arg `v8_array_buffer_internal_field_count`. #define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2 #endif @@ -343,8 +343,9 @@ class V8_EXPORT ArrayBuffer : public Object { return static_cast(value); } - static const int kInternalFieldCount = V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT; - static const int kEmbedderFieldCount = V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT; + static constexpr int kInternalFieldCount = + V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT; + static constexpr int kEmbedderFieldCount = kInternalFieldCount; private: ArrayBuffer(); @@ -352,7 +353,7 @@ class V8_EXPORT ArrayBuffer : public Object { }; #ifndef V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT -// The number of required internal fields can be defined by embedder. +// Defined using gn arg `v8_array_buffer_view_internal_field_count`. #define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 2 #endif @@ -399,10 +400,9 @@ class V8_EXPORT ArrayBufferView : public Object { return static_cast(value); } - static const int kInternalFieldCount = - V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT; - static const int kEmbedderFieldCount = + static constexpr int kInternalFieldCount = V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT; + static const int kEmbedderFieldCount = kInternalFieldCount; private: ArrayBufferView(); @@ -512,7 +512,8 @@ class V8_EXPORT SharedArrayBuffer : public Object { return static_cast(value); } - static const int kInternalFieldCount = V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT; + static constexpr int kInternalFieldCount = + V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT; private: SharedArrayBuffer(); diff --git a/include/v8-promise.h b/include/v8-promise.h index 9da8e4b4e8..8c127c8122 100644 --- a/include/v8-promise.h +++ b/include/v8-promise.h @@ -14,7 +14,7 @@ namespace v8 { class Context; #ifndef V8_PROMISE_INTERNAL_FIELD_COUNT -// The number of required internal fields can be defined by embedder. +// Defined using gn arg `v8_promise_internal_field_count`. #define V8_PROMISE_INTERNAL_FIELD_COUNT 0 #endif @@ -115,7 +115,7 @@ class V8_EXPORT Promise : public Object { return static_cast(value); } - static const int kEmbedderFieldCount = V8_PROMISE_INTERNAL_FIELD_COUNT; + static constexpr int kEmbedderFieldCount = V8_PROMISE_INTERNAL_FIELD_COUNT; private: Promise();