diff options
Diffstat (limited to 'js/src')
-rw-r--r-- | js/src/jsapi.h | 10 | ||||
-rw-r--r-- | js/src/jsarray.cpp | 2 | ||||
-rw-r--r-- | js/src/jsobj.cpp | 5 | ||||
-rw-r--r-- | js/src/shell/js.cpp | 9 |
4 files changed, 21 insertions, 5 deletions
diff --git a/js/src/jsapi.h b/js/src/jsapi.h index 5523dfa1d..989abe47c 100644 --- a/js/src/jsapi.h +++ b/js/src/jsapi.h @@ -1099,7 +1099,8 @@ class JS_PUBLIC_API(ContextOptions) { dumpStackOnDebuggeeWouldRun_(false), werror_(false), strictMode_(false), - extraWarnings_(false) + extraWarnings_(false), + arrayProtoValues_(true) { } @@ -1223,6 +1224,12 @@ class JS_PUBLIC_API(ContextOptions) { return *this; } + bool arrayProtoValues() const { return arrayProtoValues_; } + ContextOptions& setArrayProtoValues(bool flag) { + arrayProtoValues_ = flag; + return *this; + } + private: bool baseline_ : 1; bool ion_ : 1; @@ -1238,6 +1245,7 @@ class JS_PUBLIC_API(ContextOptions) { bool werror_ : 1; bool strictMode_ : 1; bool extraWarnings_ : 1; + bool arrayProtoValues_ : 1; }; JS_PUBLIC_API(ContextOptions&) diff --git a/js/src/jsarray.cpp b/js/src/jsarray.cpp index 9cbeff6a2..7a67c0095 100644 --- a/js/src/jsarray.cpp +++ b/js/src/jsarray.cpp @@ -3165,9 +3165,7 @@ static const JSFunctionSpec array_methods[] = { JS_SELF_HOSTED_SYM_FN(iterator, "ArrayValues", 0,0), JS_SELF_HOSTED_FN("entries", "ArrayEntries", 0,0), JS_SELF_HOSTED_FN("keys", "ArrayKeys", 0,0), -#ifdef NIGHTLY_BUILD JS_SELF_HOSTED_FN("values", "ArrayValues", 0,0), -#endif /* ES7 additions */ JS_SELF_HOSTED_FN("includes", "ArrayIncludes", 2,0), diff --git a/js/src/jsobj.cpp b/js/src/jsobj.cpp index 33feb0a54..b17c845bb 100644 --- a/js/src/jsobj.cpp +++ b/js/src/jsobj.cpp @@ -2936,6 +2936,11 @@ DefineFunctionFromSpec(JSContext* cx, HandleObject obj, const JSFunctionSpec* fs if (!PropertySpecNameToId(cx, fs->name, &id)) return false; + if (StandardProtoKeyOrNull(obj) == JSProto_Array && id == NameToId(cx->names().values)) { + if (!cx->options().arrayProtoValues()) + return true; + } + JSFunction* fun = NewFunctionFromSpec(cx, fs, id); if (!fun) return false; diff --git a/js/src/shell/js.cpp b/js/src/shell/js.cpp index b53914942..cc68c90d5 100644 --- a/js/src/shell/js.cpp +++ b/js/src/shell/js.cpp @@ -323,6 +323,7 @@ static bool enableNativeRegExp = false; static bool enableUnboxedArrays = false; static bool enableSharedMemory = SHARED_MEMORY_DEFAULT; static bool enableWasmAlwaysBaseline = false; +static bool enableArrayProtoValues = true; static bool printTiming = false; static const char* jsCacheDir = nullptr; static const char* jsCacheAsmJSPath = nullptr; @@ -7264,6 +7265,7 @@ SetContextOptions(JSContext* cx, const OptionParser& op) enableNativeRegExp = !op.getBoolOption("no-native-regexp"); enableUnboxedArrays = op.getBoolOption("unboxed-arrays"); enableWasmAlwaysBaseline = op.getBoolOption("wasm-always-baseline"); + enableArrayProtoValues = !op.getBoolOption("no-array-proto-values"); JS::ContextOptionsRef(cx).setBaseline(enableBaseline) .setIon(enableIon) @@ -7271,7 +7273,8 @@ SetContextOptions(JSContext* cx, const OptionParser& op) .setWasm(enableWasm) .setWasmAlwaysBaseline(enableWasmAlwaysBaseline) .setNativeRegExp(enableNativeRegExp) - .setUnboxedArrays(enableUnboxedArrays); + .setUnboxedArrays(enableUnboxedArrays) + .setArrayProtoValues(enableArrayProtoValues); if (op.getBoolOption("wasm-check-bce")) jit::JitOptions.wasmAlwaysCheckBounds = true; @@ -7542,7 +7545,8 @@ SetWorkerContextOptions(JSContext* cx) .setWasm(enableWasm) .setWasmAlwaysBaseline(enableWasmAlwaysBaseline) .setNativeRegExp(enableNativeRegExp) - .setUnboxedArrays(enableUnboxedArrays); + .setUnboxedArrays(enableUnboxedArrays) + .setArrayProtoValues(enableArrayProtoValues); cx->setOffthreadIonCompilationEnabled(offthreadCompilation); cx->profilingScripts = enableCodeCoverage || enableDisassemblyDumps; @@ -7715,6 +7719,7 @@ main(int argc, char** argv, char** envp) || !op.addBoolOption('\0', "unboxed-arrays", "Allow creating unboxed arrays") || !op.addBoolOption('\0', "wasm-always-baseline", "Enable wasm baseline compiler when possible") || !op.addBoolOption('\0', "wasm-check-bce", "Always generate wasm bounds check, even redundant ones.") + || !op.addBoolOption('\0', "no-array-proto-values", "Remove Array.prototype.values") #ifdef ENABLE_SHARED_ARRAY_BUFFER || !op.addStringOption('\0', "shared-memory", "on/off", "SharedArrayBuffer and Atomics " |