mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:02:45 +00:00 
			
		
		
		
	LibJS: Implement bytecode generation for WithStatement
This commit is contained in:
		
							parent
							
								
									57386ca839
								
							
						
					
					
						commit
						2000251333
					
				
					 5 changed files with 38 additions and 0 deletions
				
			
		|  | @ -18,6 +18,7 @@ | |||
| #include <LibJS/Runtime/GlobalObject.h> | ||||
| #include <LibJS/Runtime/Iterator.h> | ||||
| #include <LibJS/Runtime/IteratorOperations.h> | ||||
| #include <LibJS/Runtime/ObjectEnvironment.h> | ||||
| #include <LibJS/Runtime/RegExpObject.h> | ||||
| #include <LibJS/Runtime/Value.h> | ||||
| 
 | ||||
|  | @ -274,6 +275,15 @@ ThrowCompletionOr<void> CreateEnvironment::execute_impl(Bytecode::Interpreter& i | |||
|     return {}; | ||||
| } | ||||
| 
 | ||||
| ThrowCompletionOr<void> EnterObjectEnvironment::execute_impl(Bytecode::Interpreter& interpreter) const | ||||
| { | ||||
|     auto& old_environment = interpreter.vm().running_execution_context().lexical_environment; | ||||
|     interpreter.saved_lexical_environment_stack().append(old_environment); | ||||
|     auto object = TRY(interpreter.accumulator().to_object(interpreter.global_object())); | ||||
|     interpreter.vm().running_execution_context().lexical_environment = new_object_environment(*object, true, old_environment); | ||||
|     return {}; | ||||
| } | ||||
| 
 | ||||
| ThrowCompletionOr<void> CreateVariable::execute_impl(Bytecode::Interpreter& interpreter) const | ||||
| { | ||||
|     auto& vm = interpreter.vm(); | ||||
|  | @ -695,6 +705,11 @@ String CreateVariable::to_string_impl(Bytecode::Executable const& executable) co | |||
|     return String::formatted("CreateVariable env:{} immutable:{} {} ({})", mode_string, m_is_immutable, m_identifier, executable.identifier_table->get(m_identifier)); | ||||
| } | ||||
| 
 | ||||
| String EnterObjectEnvironment::to_string_impl(const Executable&) const | ||||
| { | ||||
|     return String::formatted("EnterObjectEnvironment"); | ||||
| } | ||||
| 
 | ||||
| String SetVariable::to_string_impl(Bytecode::Executable const& executable) const | ||||
| { | ||||
|     auto initialization_mode_name = m_initialization_mode == InitializationMode ::Initialize ? "Initialize" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ali Mohammad Pur
						Ali Mohammad Pur