gin_features.cc 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "gin/gin_features.h"
  5. #include "base/metrics/field_trial_params.h"
  6. namespace features {
  7. // Enable code space compaction when finalizing a full GC with stack.
  8. const base::Feature kV8CompactCodeSpaceWithStack{
  9. "V8CompactCodeSpaceWithStack", base::FEATURE_ENABLED_BY_DEFAULT};
  10. // Enable compaction when finalizing a full GC with stack.
  11. const base::Feature kV8CompactWithStack{"V8CompactWithStack",
  12. base::FEATURE_ENABLED_BY_DEFAULT};
  13. // Enables compaction of maps in a full GC.
  14. const base::Feature kV8CompactMaps{"V8CompactMaps",
  15. base::FEATURE_DISABLED_BY_DEFAULT};
  16. // Crashes on evacuation failures in a full GC instead of aborting evacuation.
  17. const base::Feature kV8CrashOnEvacuationFailure{
  18. "V8CrashOnEvacuationFailure", base::FEATURE_DISABLED_BY_DEFAULT};
  19. // Enables a separate heap space for all map objects.
  20. const base::Feature kV8UseMapSpace{"V8UseMapSpace",
  21. base::FEATURE_ENABLED_BY_DEFAULT};
  22. // Enables optimization of JavaScript in V8.
  23. const base::Feature kV8OptimizeJavascript{"V8OptimizeJavascript",
  24. base::FEATURE_ENABLED_BY_DEFAULT};
  25. // Enables flushing of JS bytecode in V8.
  26. const base::Feature kV8FlushBytecode{"V8FlushBytecode",
  27. base::FEATURE_ENABLED_BY_DEFAULT};
  28. const base::FeatureParam<int> kV8FlushBytecodeOldAge{
  29. &kV8FlushBytecode, "V8FlushBytecodeOldAge", 5};
  30. // Enables flushing of baseline code in V8.
  31. const base::Feature kV8FlushBaselineCode{"V8FlushBaselineCode",
  32. base::FEATURE_DISABLED_BY_DEFAULT};
  33. // Enables finalizing streaming JS compilations on a background thread.
  34. const base::Feature kV8OffThreadFinalization{"V8OffThreadFinalization",
  35. base::FEATURE_ENABLED_BY_DEFAULT};
  36. // Enables lazy feedback allocation in V8.
  37. const base::Feature kV8LazyFeedbackAllocation{"V8LazyFeedbackAllocation",
  38. base::FEATURE_ENABLED_BY_DEFAULT};
  39. // Enables per-context marking worklists in V8 GC.
  40. const base::Feature kV8PerContextMarkingWorklist{
  41. "V8PerContextMarkingWorklist", base::FEATURE_DISABLED_BY_DEFAULT};
  42. // Enables flushing of the instruction cache for the embedded blob.
  43. const base::Feature kV8FlushEmbeddedBlobICache{
  44. "V8FlushEmbeddedBlobICache", base::FEATURE_DISABLED_BY_DEFAULT};
  45. // Enables reduced number of concurrent marking tasks.
  46. const base::Feature kV8ReduceConcurrentMarkingTasks{
  47. "V8ReduceConcurrentMarkingTasks", base::FEATURE_DISABLED_BY_DEFAULT};
  48. // Disables reclaiming of unmodified wrappers objects.
  49. const base::Feature kV8NoReclaimUnmodifiedWrappers{
  50. "V8NoReclaimUnmodifiedWrappers", base::FEATURE_DISABLED_BY_DEFAULT};
  51. // Enables W^X code memory protection in V8.
  52. // This is enabled in V8 by default. To test the performance impact, we are
  53. // going to disable this feature in a finch experiment.
  54. const base::Feature kV8CodeMemoryWriteProtection{
  55. "V8CodeMemoryWriteProtection", base::FEATURE_ENABLED_BY_DEFAULT};
  56. // Enables fallback to a breadth-first regexp engine on excessive backtracking.
  57. const base::Feature kV8ExperimentalRegexpEngine{
  58. "V8ExperimentalRegexpEngine", base::FEATURE_ENABLED_BY_DEFAULT};
  59. // Enables experimental Turboprop compiler.
  60. const base::Feature kV8Turboprop{"V8Turboprop",
  61. base::FEATURE_DISABLED_BY_DEFAULT};
  62. // Enables Sparkplug compiler. Note that this only sets the V8 flag when
  63. // manually overridden; otherwise it defers to whatever the V8 default is.
  64. const base::Feature kV8Sparkplug{"V8Sparkplug",
  65. base::FEATURE_ENABLED_BY_DEFAULT};
  66. // Enables the concurrent Sparkplug compiler.
  67. const base::Feature kV8ConcurrentSparkplug{"V8ConcurrentSparkplug",
  68. base::FEATURE_DISABLED_BY_DEFAULT};
  69. const base::FeatureParam<int> kV8ConcurrentSparkplugMaxThreads{
  70. &kV8ConcurrentSparkplug, "V8ConcurrentSparkplugMaxThreads", 0};
  71. const base::Feature kV8ConcurrentSparkplugHighPriorityThreads{
  72. "V8ConcurrentSparkplugHighPriorityThreads",
  73. base::FEATURE_DISABLED_BY_DEFAULT};
  74. // Makes sure the experimental Sparkplug compiler is only enabled if short
  75. // builtin calls are enabled too.
  76. const base::Feature kV8SparkplugNeedsShortBuiltinCalls{
  77. "V8SparkplugNeedsShortBuiltinCalls", base::FEATURE_DISABLED_BY_DEFAULT};
  78. // Enables short builtin calls feature.
  79. const base::Feature kV8ShortBuiltinCalls{"V8ShortBuiltinCalls",
  80. base::FEATURE_ENABLED_BY_DEFAULT};
  81. // Enables fast API calls in TurboFan.
  82. const base::Feature kV8TurboFastApiCalls{"V8TurboFastApiCalls",
  83. base::FEATURE_ENABLED_BY_DEFAULT};
  84. // Artificially delays script execution.
  85. const base::Feature kV8ScriptAblation{"V8ScriptAblation",
  86. base::FEATURE_DISABLED_BY_DEFAULT};
  87. const base::FeatureParam<int> kV8ScriptDelayOnceMs{&kV8ScriptAblation,
  88. "V8ScriptDelayOnceMs", 0};
  89. const base::FeatureParam<int> kV8ScriptDelayMs{&kV8ScriptAblation,
  90. "V8ScriptDelayMs", 0};
  91. const base::FeatureParam<double> kV8ScriptDelayFraction{
  92. &kV8ScriptAblation, "V8ScriptDelayFraction", 0.0};
  93. // Enables slow histograms that provide detailed information at increased
  94. // runtime overheads.
  95. const base::Feature kV8SlowHistograms{"V8SlowHistograms",
  96. base::FEATURE_DISABLED_BY_DEFAULT};
  97. // Multiple finch experiments might use slow-histograms. We introduce
  98. // separate feature flags to circumvent finch limitations.
  99. const base::Feature kV8SlowHistogramsCodeMemoryWriteProtection{
  100. "V8SlowHistogramsCodeMemoryWriteProtection",
  101. base::FEATURE_DISABLED_BY_DEFAULT};
  102. const base::Feature kV8SlowHistogramsSparkplug{
  103. "V8SlowHistogramsSparkplug", base::FEATURE_DISABLED_BY_DEFAULT};
  104. const base::Feature kV8SlowHistogramsSparkplugAndroid{
  105. "V8SlowHistogramsSparkplugAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
  106. const base::Feature kV8SlowHistogramsScriptAblation{
  107. "V8SlowHistogramsScriptAblation", base::FEATURE_DISABLED_BY_DEFAULT};
  108. const base::Feature kV8DelayMemoryReducer{"V8DelayMemoryReducer",
  109. base::FEATURE_DISABLED_BY_DEFAULT};
  110. const base::FeatureParam<base::TimeDelta> kV8MemoryReducerStartDelay{
  111. &kV8DelayMemoryReducer, "delay", base::Seconds(8)};
  112. } // namespace features