void checkFreeProfData() { // In PGO mode, we free all the profiling data once the main code area reaches // its maximum usage and either the hot area is also full or all the functions // that were profiled have already been optimized. // // However, we keep the data around indefinitely in a few special modes: // * Eval.EnableReusableTC // * TC dumping enabled (Eval.DumpTC/DumpIR/etc.) if (profData() && !RuntimeOption::EvalEnableReusableTC && code().main().used() >= CodeCache::AMaxUsage && (!code().hotEnabled() || profData()->profilingFuncs() == profData()->optimizedFuncs()) && !transdb::enabled()) { discardProfData(); } }
void checkFreeProfData() { // In PGO mode, we free all the profiling data once the main code area reaches // its maximum usage and either the hot area is also full or all the functions // that were profiled have already been optimized. // // However, we keep the data around indefinitely in a few special modes: // * Eval.EnableReusableTC // * TC dumping enabled (Eval.DumpTC/DumpIR/etc.) // // Finally, when the RetranslateAll mode is enabled, the ProfData is discarded // via a different mechanism, after all the optimized translations are // generated. if (profData() && !RuntimeOption::EvalEnableReusableTC && code().main().used() >= CodeCache::AMaxUsage && (!code().hotEnabled() || profData()->profilingFuncs() == profData()->optimizedFuncs()) && !transdb::enabled() && !RuntimeOption::EvalJitRetranslateAllRequest) { discardProfData(); } }