forked from mirrors/gecko-dev
Bug 1842773 - Part 1: Add prefs for resizable ArrayBuffers and growable SharedArrayBuffers. r=sfink
There's intentionally only a single shell option which controls both options. This makes testing easier and the test262 tests are also using a single feature flag for resizable ArrayBuffers and growable SharedArrayBuffers. Differential Revision: https://phabricator.services.mozilla.com/D183317
This commit is contained in:
parent
4996fdb5eb
commit
c32a63c94c
5 changed files with 47 additions and 0 deletions
|
|
@ -246,6 +246,20 @@ class JS_PUBLIC_API RealmCreationOptions {
|
|||
symbolsAsWeakMapKeys_ = flag;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool getArrayBufferResizableEnabled() const { return arrayBufferResizable_; }
|
||||
RealmCreationOptions& setArrayBufferResizableEnabled(bool flag) {
|
||||
arrayBufferResizable_ = flag;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool getSharedArrayBufferGrowableEnabled() const {
|
||||
return sharedArrayBufferGrowable_;
|
||||
}
|
||||
RealmCreationOptions& setSharedArrayBufferGrowableEnabled(bool flag) {
|
||||
sharedArrayBufferGrowable_ = flag;
|
||||
return *this;
|
||||
}
|
||||
#endif
|
||||
|
||||
// This flag doesn't affect JS engine behavior. It is used by Gecko to
|
||||
|
|
@ -319,6 +333,10 @@ class JS_PUBLIC_API RealmCreationOptions {
|
|||
// Pref for new Set.prototype methods.
|
||||
bool newSetMethods_ = false;
|
||||
bool symbolsAsWeakMapKeys_ = false;
|
||||
// Pref for resizable ArrayBuffers.
|
||||
bool arrayBufferResizable_ = false;
|
||||
// Pref for growable SharedArrayBuffers.
|
||||
bool sharedArrayBufferGrowable_ = false;
|
||||
#endif
|
||||
|
||||
// Pref for ArrayBuffer.prototype.transfer{,ToFixedLength}() methods.
|
||||
|
|
|
|||
|
|
@ -747,6 +747,8 @@ bool shell::enableArrayGrouping = false;
|
|||
bool shell::enableNewSetMethods = false;
|
||||
// Pref for ArrayBuffer.prototype.transfer{,ToFixedLength}() methods.
|
||||
bool shell::enableSymbolsAsWeakMapKeys = false;
|
||||
// Pref for resizable ArrayBuffers and growable SharedArrayBuffers.
|
||||
bool shell::enableArrayBufferResizable = false;
|
||||
#endif
|
||||
bool shell::enableArrayBufferTransfer = true;
|
||||
bool shell::enableImportAttributes = false;
|
||||
|
|
@ -4142,6 +4144,8 @@ static void SetStandardRealmOptions(JS::RealmOptions& options) {
|
|||
#ifdef NIGHTLY_BUILD
|
||||
.setNewSetMethodsEnabled(enableNewSetMethods)
|
||||
.setSymbolsAsWeakMapKeysEnabled(enableSymbolsAsWeakMapKeys)
|
||||
.setArrayBufferResizableEnabled(enableArrayBufferResizable)
|
||||
.setSharedArrayBufferGrowableEnabled(enableArrayBufferResizable)
|
||||
#endif
|
||||
;
|
||||
}
|
||||
|
|
@ -11707,6 +11711,9 @@ bool InitOptionParser(OptionParser& op) {
|
|||
"Disable ArrayBuffer.prototype.transfer() methods") ||
|
||||
!op.addBoolOption('\0', "enable-symbols-as-weakmap-keys",
|
||||
"Enable Symbols As WeakMap keys") ||
|
||||
!op.addBoolOption(
|
||||
'\0', "enable-arraybuffer-resizable",
|
||||
"Enable resizable ArrayBuffers and growable SharedArrayBuffers") ||
|
||||
!op.addBoolOption('\0', "enable-top-level-await",
|
||||
"Enable top-level await") ||
|
||||
!op.addBoolOption('\0', "enable-class-static-blocks",
|
||||
|
|
@ -12236,6 +12243,7 @@ bool SetContextOptions(JSContext* cx, const OptionParser& op) {
|
|||
enableNewSetMethods = op.getBoolOption("enable-new-set-methods");
|
||||
enableSymbolsAsWeakMapKeys =
|
||||
op.getBoolOption("enable-symbols-as-weakmap-keys");
|
||||
enableArrayBufferResizable = op.getBoolOption("enable-arraybuffer-resizable");
|
||||
#endif
|
||||
enableArrayBufferTransfer = !op.getBoolOption("disable-arraybuffer-transfer");
|
||||
enableImportAttributesAssertSyntax =
|
||||
|
|
|
|||
|
|
@ -130,6 +130,7 @@ extern bool enableShadowRealms;
|
|||
extern bool enableArrayGrouping;
|
||||
extern bool enableWellFormedUnicodeStrings;
|
||||
extern bool enableArrayBufferTransfer;
|
||||
extern bool enableArrayBufferResizable;
|
||||
extern bool enableSymbolsAsWeakMapKeys;
|
||||
extern bool enableNewSetMethods;
|
||||
extern bool enableImportAttributes;
|
||||
|
|
|
|||
|
|
@ -787,6 +787,8 @@ static mozilla::Atomic<bool> sArrayGroupingEnabled(false);
|
|||
#ifdef NIGHTLY_BUILD
|
||||
static mozilla::Atomic<bool> sNewSetMethodsEnabled(false);
|
||||
static mozilla::Atomic<bool> sSymbolsAsWeakMapKeysEnabled(false);
|
||||
static mozilla::Atomic<bool> sArrayBufferResizableEnabled(false);
|
||||
static mozilla::Atomic<bool> sSharedArrayBufferGrowableEnabled(false);
|
||||
#endif
|
||||
static mozilla::Atomic<bool> sArrayBufferTransferEnabled(false);
|
||||
|
||||
|
|
@ -818,6 +820,8 @@ void xpc::SetPrefableRealmOptions(JS::RealmOptions& options) {
|
|||
#ifdef NIGHTLY_BUILD
|
||||
.setNewSetMethodsEnabled(sNewSetMethodsEnabled)
|
||||
.setSymbolsAsWeakMapKeysEnabled(sSymbolsAsWeakMapKeysEnabled)
|
||||
.setArrayBufferResizableEnabled(sArrayBufferResizableEnabled)
|
||||
.setSharedArrayBufferGrowableEnabled(sSharedArrayBufferGrowableEnabled)
|
||||
#endif
|
||||
;
|
||||
}
|
||||
|
|
@ -1025,6 +1029,10 @@ static void ReloadPrefsCallback(const char* pref, void* aXpccx) {
|
|||
Preferences::GetBool(JS_OPTIONS_DOT_STR "experimental.new_set_methods");
|
||||
sSymbolsAsWeakMapKeysEnabled = Preferences::GetBool(
|
||||
JS_OPTIONS_DOT_STR "experimental.symbols_as_weakmap_keys");
|
||||
sArrayBufferResizableEnabled = Preferences::GetBool(
|
||||
JS_OPTIONS_DOT_STR "experimental.arraybuffer_resizable");
|
||||
sSharedArrayBufferGrowableEnabled = Preferences::GetBool(
|
||||
JS_OPTIONS_DOT_STR "experimental.sharedarraybuffer_growable");
|
||||
#endif
|
||||
sArrayBufferTransferEnabled =
|
||||
Preferences::GetBool(JS_OPTIONS_DOT_STR "arraybuffer_transfer");
|
||||
|
|
|
|||
|
|
@ -7479,6 +7479,18 @@
|
|||
type: bool
|
||||
value: false
|
||||
mirror: always
|
||||
|
||||
# Experimental support for resizable ArrayBuffers in JavaScript.
|
||||
- name: javascript.options.experimental.arraybuffer_resizable
|
||||
type: bool
|
||||
value: false
|
||||
mirror: always
|
||||
|
||||
# Experimental support for growable SharedArrayBuffers in JavaScript.
|
||||
- name: javascript.options.experimental.sharedarraybuffer_growable
|
||||
type: bool
|
||||
value: false
|
||||
mirror: always
|
||||
#endif // NIGHTLY_BUILD
|
||||
|
||||
# Experimental support for ArrayBuffer.prototype.transfer{,ToFixedLength}() in JavaScript.
|
||||
|
|
|
|||
Loading…
Reference in a new issue