computeIfUsingFuzzerAgent() is called before parsing command line arguments.
https://bugs.webkit.org/show_bug.cgi?id=204886

Reviewed by Saam Barati.

Rolling out r253015 which introduced computeIfUsingFuzzerAgent().

* runtime/Options.cpp:
(JSC::Options::initialize):
(JSC::computeIfUsingFuzzerAgent): Deleted.
* runtime/Options.h:
(JSC::Options::isUsingFuzzerAgent): Deleted.
* runtime/OptionsList.h:
(JSC::OptionRange::operator bool const): Deleted.
* runtime/VM.cpp:
(JSC::VM::VM):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@253164 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog
index a79dab0..688c497 100644
--- a/Source/JavaScriptCore/ChangeLog
+++ b/Source/JavaScriptCore/ChangeLog
@@ -1,3 +1,22 @@
+2019-12-05  Mark Lam  <mark.lam@apple.com>
+
+        computeIfUsingFuzzerAgent() is called before parsing command line arguments.
+        https://bugs.webkit.org/show_bug.cgi?id=204886
+
+        Reviewed by Saam Barati.
+
+        Rolling out r253015 which introduced computeIfUsingFuzzerAgent().
+
+        * runtime/Options.cpp:
+        (JSC::Options::initialize):
+        (JSC::computeIfUsingFuzzerAgent): Deleted.
+        * runtime/Options.h:
+        (JSC::Options::isUsingFuzzerAgent): Deleted.
+        * runtime/OptionsList.h:
+        (JSC::OptionRange::operator bool const): Deleted.
+        * runtime/VM.cpp:
+        (JSC::VM::VM):
+
 2019-12-04  Yusuke Suzuki  <ysuzuki@apple.com>
 
         [JSC] AI should convert IsCellWithType to constant when Structure set is finite
diff --git a/Source/JavaScriptCore/runtime/Options.cpp b/Source/JavaScriptCore/runtime/Options.cpp
index e8987ed..bd316b5 100644
--- a/Source/JavaScriptCore/runtime/Options.cpp
+++ b/Source/JavaScriptCore/runtime/Options.cpp
@@ -536,21 +536,6 @@
     return reinterpret_cast<uint8_t*>(&g_jscConfig.options) + offset;
 }
 
-static void computeIfUsingFuzzerAgent()
-{
-    g_jscConfig.options.isUsingFuzzerAgent = false;
-#define CHECK_IF_USING_FUZZER_AGENT(type_, name_, defaultValue_, availability_, description_) { \
-        const char name[] = #name_; \
-        unsigned nameLength = strlen(name); \
-        if (nameLength > 14 && !strncmp(name, "use", 3) && !strncmp(&name[nameLength -11], "FuzzerAgent", 11)) { \
-            if (Options::name_()) \
-                g_jscConfig.options.isUsingFuzzerAgent = true; \
-        } \
-    }
-    FOR_EACH_JSC_OPTION(CHECK_IF_USING_FUZZER_AGENT)
-#undef CHECK_IF_USING_FUZZER_AGENT
-}
-
 void Options::initialize()
 {
     static std::once_flag initializeOptionsOnceFlag;
@@ -624,7 +609,6 @@
 
             dumpOptionsIfNeeded();
             ensureOptionsAreCoherent();
-            computeIfUsingFuzzerAgent();
 
 #if HAVE(MACH_EXCEPTIONS)
             if (Options::useMachForExceptions())
diff --git a/Source/JavaScriptCore/runtime/Options.h b/Source/JavaScriptCore/runtime/Options.h
index e936da4..93bd8ca 100644
--- a/Source/JavaScriptCore/runtime/Options.h
+++ b/Source/JavaScriptCore/runtime/Options.h
@@ -97,8 +97,6 @@
 
     static bool isAvailable(ID, Availability);
 
-    static bool isUsingFuzzerAgent() { return g_jscConfig.options.isUsingFuzzerAgent; }
-
 private:
     struct ConstMetaData {
         const char* name;
diff --git a/Source/JavaScriptCore/runtime/OptionsList.h b/Source/JavaScriptCore/runtime/OptionsList.h
index ae4d9e2..03f2852 100644
--- a/Source/JavaScriptCore/runtime/OptionsList.h
+++ b/Source/JavaScriptCore/runtime/OptionsList.h
@@ -572,8 +572,6 @@
     bool isInRange(unsigned);
     const char* rangeString() const { return (m_state > InitError) ? m_rangeString : s_nullRangeStr; }
     
-    operator bool() const { return m_state != Uninitialized; }
-
     void dump(PrintStream& out) const;
 
 private:
@@ -600,8 +598,6 @@
     type_ name_##Default;
 FOR_EACH_JSC_OPTION(DECLARE_OPTION)
 #undef DECLARE_OPTION
-
-    bool isUsingFuzzerAgent; // This value is computed in Options::initialize().
 };
 
 // Options::Metadata's offsetOfOption and offsetOfOptionDefault relies on this.
diff --git a/Source/JavaScriptCore/runtime/VM.cpp b/Source/JavaScriptCore/runtime/VM.cpp
index deedc04..72a2007 100644
--- a/Source/JavaScriptCore/runtime/VM.cpp
+++ b/Source/JavaScriptCore/runtime/VM.cpp
@@ -493,16 +493,14 @@
     }
 #endif // ENABLE(SAMPLING_PROFILER)
 
-    if (UNLIKELY(Options::isUsingFuzzerAgent())) {
-        if (Options::useRandomizingFuzzerAgent())
-            setFuzzerAgent(makeUnique<RandomizingFuzzerAgent>(*this));
-        if (Options::useDoublePredictionFuzzerAgent())
-            setFuzzerAgent(makeUnique<DoublePredictionFuzzerAgent>(*this));
-        if (Options::useFileBasedFuzzerAgent())
-            setFuzzerAgent(makeUnique<FileBasedFuzzerAgent>(*this));
-        if (Options::usePredictionFileCreatingFuzzerAgent())
-            setFuzzerAgent(makeUnique<PredictionFileCreatingFuzzerAgent>(*this));
-    }
+    if (Options::useRandomizingFuzzerAgent())
+        setFuzzerAgent(makeUnique<RandomizingFuzzerAgent>(*this));
+    if (Options::useDoublePredictionFuzzerAgent())
+        setFuzzerAgent(makeUnique<DoublePredictionFuzzerAgent>(*this));
+    if (Options::useFileBasedFuzzerAgent())
+        setFuzzerAgent(makeUnique<FileBasedFuzzerAgent>(*this));
+    if (Options::usePredictionFileCreatingFuzzerAgent())
+        setFuzzerAgent(makeUnique<PredictionFileCreatingFuzzerAgent>(*this));
 
     if (Options::alwaysGeneratePCToCodeOriginMap())
         setShouldBuildPCToCodeOriginMapping();