mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:42:44 +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
	
	 Andreas Kling
						Andreas Kling