| Index: src/runtime-profiler.cc
|
| diff --git a/src/runtime-profiler.cc b/src/runtime-profiler.cc
|
| index 70c61b1cebe5ded8306ad58bce21bdb13c18d2cf..1a1ef6a847e9aae8497a61deeddf78065083973a 100644
|
| --- a/src/runtime-profiler.cc
|
| +++ b/src/runtime-profiler.cc
|
| @@ -57,6 +57,12 @@ static const int kMaxSizeEarlyOpt =
|
| static const int kMaxSizeEarlyOptIgnition =
|
| 5 * interpreter::Interpreter::kCodeSizeMultiplier;
|
|
|
| +// Certain functions are simply too big to be worth optimizing.
|
| +// We aren't using the code size multiplier here because there is no
|
| +// "kMaxSizeOpt" with which we would need to normalize. This constant is
|
| +// only for optimization decisions coming into TurboFan from Ignition.
|
| +static const int kMaxSizeOptIgnition = 250 * 1024;
|
| +
|
| #define OPTIMIZATION_REASON_LIST(V) \
|
| V(DoNotOptimize, "do not optimize") \
|
| V(HotAndStable, "hot and stable") \
|
| @@ -394,6 +400,10 @@ OptimizationReason RuntimeProfiler::ShouldOptimizeIgnition(
|
| SharedFunctionInfo* shared = function->shared();
|
| int ticks = shared->profiler_ticks();
|
|
|
| + if (shared->bytecode_array()->Size() > kMaxSizeOptIgnition) {
|
| + return OptimizationReason::kDoNotOptimize;
|
| + }
|
| +
|
| if (ticks >= kProfilerTicksBeforeOptimization) {
|
| int typeinfo, generic, total, type_percentage, generic_percentage;
|
| GetICCounts(function, &typeinfo, &generic, &total, &type_percentage,
|
|
|