#include "gin/gin_features.h"
#include "base/metrics/field_trial_params.h"
namespace features {
BASE_FEATURE(kV8CompactCodeSpaceWithStack, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8CompactWithStack, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8DecommitPooledPages,
"DecommitPooledPages",
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8OptimizeJavascript, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8FlushBytecode, kFeatureDefaultStateControlledByV8);
const base::FeatureParam<int> kV8FlushBytecodeOldAge{
&kV8FlushBytecode, "V8FlushBytecodeOldAge", 5};
BASE_FEATURE(kV8FlushBaselineCode, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8FlushCodeBasedOnTabVisibility,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8FlushCodeBasedOnTime, kFeatureDefaultStateControlledByV8);
const base::FeatureParam<int> kV8FlushCodeOldTime{&kV8FlushCodeBasedOnTime,
"V8FlushCodeOldTime", 30};
BASE_FEATURE(kV8OffThreadFinalization, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8LazyFeedbackAllocation, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8PerContextMarkingWorklist, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8FlushEmbeddedBlobICache, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8ReduceConcurrentMarkingTasks,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8NoReclaimUnmodifiedWrappers,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8CodeMemoryWriteProtection, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8ExperimentalRegexpEngine, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8ExternalMemoryAccountedInGlobalLimit,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8Turbofan, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8Turboshaft, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8TurboshaftInstructionSelection,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8Maglev, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8ConcurrentMaglevHighPriorityThreads,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8HighEndAndroid, kFeatureDefaultStateControlledByV8);
const base::FeatureParam<int> kV8HighEndAndroidMemoryThreshold{
&kV8HighEndAndroid, "V8HighEndAndroidMemoryThreshold", 8};
BASE_FEATURE(kV8MemoryReducer, base::FEATURE_DISABLED_BY_DEFAULT);
const base::FeatureParam<int> kV8MemoryReducerGCCount{
&kV8MemoryReducer, "V8MemoryReducerGCCount", 3};
BASE_FEATURE(kV8MemoryPoolReleaseOnMallocFailures,
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kV8PreconfigureOldGen, kFeatureDefaultStateControlledByV8);
const base::FeatureParam<int> kV8PreconfigureOldGenSize{
&kV8PreconfigureOldGen, "V8PreconfigureOldGenSize", 32};
BASE_FEATURE(kV8MinorMS, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8ScavengerHigherCapacity, base::FEATURE_DISABLED_BY_DEFAULT);
const base::FeatureParam<int> kV8ScavengerMaxCapacity{
&kV8ScavengerHigherCapacity, "V8ScavengerMaxCapacity", 16};
BASE_FEATURE(kV8Sparkplug, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8ConcurrentSparkplug, kFeatureDefaultStateControlledByV8);
const base::FeatureParam<int> kV8ConcurrentSparkplugMaxThreads{
&kV8ConcurrentSparkplug, "V8ConcurrentSparkplugMaxThreads", 0};
BASE_FEATURE(kV8ConcurrentSparkplugHighPriorityThreads,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8SparkplugNeedsShortBuiltinCalls,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8BaselineBatchCompilation, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8ShortBuiltinCalls, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8TurboFastApiCalls, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8MegaDomIC, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8SideStepTransitions, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8SingleThreadedGCInBackground,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8SingleThreadedGCInBackgroundParallelPause,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8SingleThreadedGCInBackgroundNoIncrementalMarking,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8SlowHistograms, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8SlowHistogramsCodeMemoryWriteProtection,
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kV8SlowHistogramsSparkplug, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kV8SlowHistogramsSparkplugAndroid,
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kV8SlowHistogramsNoTurbofan, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kV8DelayMemoryReducer, base::FEATURE_ENABLED_BY_DEFAULT);
const base::FeatureParam<base::TimeDelta> kV8MemoryReducerStartDelay{
&kV8DelayMemoryReducer, "delay", base::Seconds(30)};
BASE_FEATURE(kV8ConcurrentMarkingHighPriorityThreads,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8UseLibmTrigFunctions, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8UseOriginalMessageForStackTrace,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8IdleGcOnContextDisposal, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kV8IgnitionElideRedundantTdzChecks,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kJavaScriptRegExpModifiers, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kJavaScriptImportAttributes, kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kJavaScriptRegExpDuplicateNamedGroups,
kFeatureDefaultStateControlledByV8);
BASE_FEATURE(kJavaScriptPromiseTry, kFeatureDefaultStateControlledByV8);
}