gin_features.cc 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. // Enables flushing of baseline code in V8.
  29. const base::Feature kV8FlushBaselineCode{"V8FlushBaselineCode",
  30. base::FEATURE_DISABLED_BY_DEFAULT};
  31. // Enables finalizing streaming JS compilations on a background thread.
  32. const base::Feature kV8OffThreadFinalization{"V8OffThreadFinalization",
  33. base::FEATURE_ENABLED_BY_DEFAULT};
  34. // Enables lazy feedback allocation in V8.
  35. const base::Feature kV8LazyFeedbackAllocation{"V8LazyFeedbackAllocation",
  36. base::FEATURE_ENABLED_BY_DEFAULT};
  37. // Enables per-context marking worklists in V8 GC.
  38. const base::Feature kV8PerContextMarkingWorklist{
  39. "V8PerContextMarkingWorklist", base::FEATURE_DISABLED_BY_DEFAULT};
  40. // Enables flushing of the instruction cache for the embedded blob.
  41. const base::Feature kV8FlushEmbeddedBlobICache{
  42. "V8FlushEmbeddedBlobICache", base::FEATURE_DISABLED_BY_DEFAULT};
  43. // Enables reduced number of concurrent marking tasks.
  44. const base::Feature kV8ReduceConcurrentMarkingTasks{
  45. "V8ReduceConcurrentMarkingTasks", base::FEATURE_DISABLED_BY_DEFAULT};
  46. // Disables reclaiming of unmodified wrappers objects.
  47. const base::Feature kV8NoReclaimUnmodifiedWrappers{
  48. "V8NoReclaimUnmodifiedWrappers", base::FEATURE_DISABLED_BY_DEFAULT};
  49. // Enables W^X code memory protection in V8.
  50. // This is enabled in V8 by default. To test the performance impact, we are
  51. // going to disable this feature in a finch experiment.
  52. const base::Feature kV8CodeMemoryWriteProtection{
  53. "V8CodeMemoryWriteProtection", base::FEATURE_ENABLED_BY_DEFAULT};
  54. // Enables fallback to a breadth-first regexp engine on excessive backtracking.
  55. const base::Feature kV8ExperimentalRegexpEngine{
  56. "V8ExperimentalRegexpEngine", base::FEATURE_ENABLED_BY_DEFAULT};
  57. // Enables experimental Turboprop compiler.
  58. const base::Feature kV8Turboprop{"V8Turboprop",
  59. base::FEATURE_DISABLED_BY_DEFAULT};
  60. // Enables Sparkplug compiler. Note that this only sets the V8 flag when
  61. // manually overridden; otherwise it defers to whatever the V8 default is.
  62. const base::Feature kV8Sparkplug{"V8Sparkplug",
  63. base::FEATURE_ENABLED_BY_DEFAULT};
  64. // Enables the concurrent Sparkplug compiler.
  65. const base::Feature kV8ConcurrentSparkplug{"V8ConcurrentSparkplug",
  66. base::FEATURE_DISABLED_BY_DEFAULT};
  67. const base::FeatureParam<int> kV8ConcurrentSparkplugMaxThreads{
  68. &kV8ConcurrentSparkplug, "V8ConcurrentSparkplugMaxThreads", 0};
  69. // Makes sure the experimental Sparkplug compiler is only enabled if short
  70. // builtin calls are enabled too.
  71. const base::Feature kV8SparkplugNeedsShortBuiltinCalls{
  72. "V8SparkplugNeedsShortBuiltinCalls", base::FEATURE_DISABLED_BY_DEFAULT};
  73. // Enables short builtin calls feature.
  74. const base::Feature kV8ShortBuiltinCalls{"V8ShortBuiltinCalls",
  75. base::FEATURE_ENABLED_BY_DEFAULT};
  76. // Enables fast API calls in TurboFan.
  77. const base::Feature kV8TurboFastApiCalls{"V8TurboFastApiCalls",
  78. base::FEATURE_ENABLED_BY_DEFAULT};
  79. // Artificially delays script execution.
  80. const base::Feature kV8ScriptAblation{"V8ScriptAblation",
  81. base::FEATURE_DISABLED_BY_DEFAULT};
  82. const base::FeatureParam<int> kV8ScriptDelayOnceMs{&kV8ScriptAblation,
  83. "V8ScriptDelayOnceMs", 0};
  84. const base::FeatureParam<int> kV8ScriptDelayMs{&kV8ScriptAblation,
  85. "V8ScriptDelayMs", 0};
  86. const base::FeatureParam<double> kV8ScriptDelayFraction{
  87. &kV8ScriptAblation, "V8ScriptDelayFraction", 0.0};
  88. // Enables slow histograms that provide detailed information at increased
  89. // runtime overheads.
  90. const base::Feature kV8SlowHistograms{"V8SlowHistograms",
  91. base::FEATURE_DISABLED_BY_DEFAULT};
  92. // Multiple finch experiments might use slow-histograms. We introduce
  93. // separate feature flags to circumvent finch limitations.
  94. const base::Feature kV8SlowHistogramsCodeMemoryWriteProtection{
  95. "V8SlowHistogramsCodeMemoryWriteProtection",
  96. base::FEATURE_DISABLED_BY_DEFAULT};
  97. const base::Feature kV8SlowHistogramsSparkplug{
  98. "V8SlowHistogramsSparkplug", base::FEATURE_DISABLED_BY_DEFAULT};
  99. const base::Feature kV8SlowHistogramsSparkplugAndroid{
  100. "V8SlowHistogramsSparkplugAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
  101. const base::Feature kV8SlowHistogramsScriptAblation{
  102. "V8SlowHistogramsScriptAblation", base::FEATURE_DISABLED_BY_DEFAULT};
  103. // Enables the experimental V8 sandbox. This is called V8VirtualMemoryCage
  104. // instead of V8Sandbox for historical reasons.
  105. // TODO(1218005) remove this once the finch trial has ended.
  106. const base::Feature kV8VirtualMemoryCage{"V8VirtualMemoryCage",
  107. base::FEATURE_DISABLED_BY_DEFAULT};
  108. } // namespace features