mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 11:45:11 +00:00
LibJS: Disable bytecode optimizations by default
The optimization passes are not stable, which makes test262 flaky. Address this by introducing a new OptimizationLevel::None and making it the default. This removes all the flakiness from test262 in my testing. We can enable optimizations by default again once they have been made stable. :^)
This commit is contained in:
parent
8fc4c5d27b
commit
d9b543da68
2 changed files with 6 additions and 2 deletions
|
@ -217,7 +217,9 @@ Bytecode::PassManager& Interpreter::optimization_pipeline(Interpreter::Optimizat
|
||||||
return *entry;
|
return *entry;
|
||||||
|
|
||||||
auto pm = make<PassManager>();
|
auto pm = make<PassManager>();
|
||||||
if (level == OptimizationLevel::Default) {
|
if (level == OptimizationLevel::None) {
|
||||||
|
// No optimization.
|
||||||
|
} else if (level == OptimizationLevel::Optimize) {
|
||||||
pm->add<Passes::GenerateCFG>();
|
pm->add<Passes::GenerateCFG>();
|
||||||
pm->add<Passes::UnifySameBlocks>();
|
pm->add<Passes::UnifySameBlocks>();
|
||||||
pm->add<Passes::GenerateCFG>();
|
pm->add<Passes::GenerateCFG>();
|
||||||
|
|
|
@ -66,8 +66,10 @@ public:
|
||||||
Executable const& current_executable() { return *m_current_executable; }
|
Executable const& current_executable() { return *m_current_executable; }
|
||||||
|
|
||||||
enum class OptimizationLevel {
|
enum class OptimizationLevel {
|
||||||
Default,
|
None,
|
||||||
|
Optimize,
|
||||||
__Count,
|
__Count,
|
||||||
|
Default = None,
|
||||||
};
|
};
|
||||||
static Bytecode::PassManager& optimization_pipeline(OptimizationLevel = OptimizationLevel::Default);
|
static Bytecode::PassManager& optimization_pipeline(OptimizationLevel = OptimizationLevel::Default);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue