mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 11:52:44 +00:00 
			
		
		
		
	LibJS: Avoid IdentifierTable lookup in cached GetGlobal op
When we hit the cache in GetGlobal, we don't need the identifier string at all, so let's defer fetching it until after the cache miss. 7% speed-up on Kraken/imaging-gaussian-blur.js :^)
This commit is contained in:
		
							parent
							
								
									4cc2fc4afa
								
							
						
					
					
						commit
						6a3f27509f
					
				
					 1 changed files with 1 additions and 2 deletions
				
			
		|  | @ -880,8 +880,6 @@ ThrowCompletionOr<void> GetGlobal::execute_impl(Bytecode::Interpreter& interpret | |||
|     auto& vm = interpreter.vm(); | ||||
|     auto& realm = *vm.current_realm(); | ||||
| 
 | ||||
|     auto const& name = interpreter.current_executable().get_identifier(m_identifier); | ||||
| 
 | ||||
|     auto& cache = interpreter.current_executable().global_variable_caches[m_cache_index]; | ||||
|     auto& binding_object = realm.global_environment().object_record().binding_object(); | ||||
|     auto& declarative_record = realm.global_environment().declarative_record(); | ||||
|  | @ -898,6 +896,7 @@ ThrowCompletionOr<void> GetGlobal::execute_impl(Bytecode::Interpreter& interpret | |||
| 
 | ||||
|     cache.environment_serial_number = declarative_record.environment_serial_number(); | ||||
| 
 | ||||
|     auto const& name = interpreter.current_executable().get_identifier(m_identifier); | ||||
|     if (vm.running_execution_context().script_or_module.has<NonnullGCPtr<Module>>()) { | ||||
|         // NOTE: GetGlobal is used to access variables stored in the module environment and global environment.
 | ||||
|         //       The module environment is checked first since it precedes the global environment in the environment chain.
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling