diff --git a/js/src/shell/fuzz-flags.txt b/js/src/shell/fuzz-flags.txt index 07a0bcc2cdd1..9310377c4cc9 100644 --- a/js/src/shell/fuzz-flags.txt +++ b/js/src/shell/fuzz-flags.txt @@ -36,6 +36,8 @@ --ion-regalloc=testbed --ion-scalar-replacement=off --ion-scalar-replacement=on +--ion-iterator-indices=off +--ion-iterator-indices=on --ion-warmup-threshold=0 --ion-warmup-threshold=10 --ion-warmup-threshold=100 @@ -51,7 +53,6 @@ --no-jit-backend --enable-watchtower --disable-watchtower ---enable-iterator-indices # GC-related # These 2 flags can cause the shell to slow down diff --git a/js/src/shell/js.cpp b/js/src/shell/js.cpp index 595792e20854..4dd483b9502a 100644 --- a/js/src/shell/js.cpp +++ b/js/src/shell/js.cpp @@ -11015,8 +11015,14 @@ static bool SetContextOptions(JSContext* cx, const OptionParser& op) { jit::JitOptions.enableWatchtowerMegamorphic = false; } - if (op.getBoolOption("enable-iterator-indices")) { - jit::JitOptions.disableIteratorIndices = false; + if (const char* str = op.getStringOption("ion-iterator-indices")) { + if (strcmp(str, "on") == 0) { + jit::JitOptions.disableIteratorIndices = false; + } else if (strcmp(str, "off") == 0) { + jit::JitOptions.disableIteratorIndices = true; + } else { + return OptionFailure("ion-iterator-indices", str); + } } #if defined(JS_SIMULATOR_ARM) @@ -11761,6 +11767,9 @@ int main(int argc, char** argv) { !op.addStringOption( '\0', "ion-optimize-shapeguards", "on/off", "Eliminate redundant shape guards (default: on, off to disable)") || + !op.addStringOption('\0', "ion-iterator-indices", "on/off", + "Optimize property access in for-in loops " + "(default: on, off to disable)") || !op.addBoolOption('\0', "ion-check-range-analysis", "Range analysis checking") || !op.addBoolOption('\0', "ion-extra-checks", @@ -11777,8 +11786,6 @@ int main(int argc, char** argv) { "Enable Watchtower optimizations") || !op.addBoolOption('\0', "disable-watchtower", "Disable Watchtower optimizations") || - !op.addBoolOption('\0', "enable-iterator-indices", - "Enable iterator indices optimization") || !op.addBoolOption('\0', "scalar-replace-arguments", "Use scalar replacement to optimize ArgumentsObject") || !op.addStringOption(