mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 19:22:45 +00:00 
			
		
		
		
	LibJS: Add Bytecode::Executable::dump()
Let's have a helper for producing a consistent executable dump instead of repeating the logic in multiple places.
This commit is contained in:
		
							parent
							
								
									b41954182a
								
							
						
					
					
						commit
						da77e2aa4f
					
				
					 5 changed files with 56 additions and 30 deletions
				
			
		|  | @ -337,18 +337,11 @@ inline JSFileResult TestRunner::run_file_test(const String& test_path) | |||
|     } | ||||
| 
 | ||||
|     if (g_run_bytecode) { | ||||
|         auto unit = JS::Bytecode::Generator::generate(m_test_script->parse_node()); | ||||
|         if (g_dump_bytecode) { | ||||
|             for (auto& block : unit.basic_blocks) | ||||
|                 block.dump(unit); | ||||
|             if (!unit.string_table->is_empty()) { | ||||
|                 outln(); | ||||
|                 unit.string_table->dump(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         auto executable = JS::Bytecode::Generator::generate(m_test_script->parse_node()); | ||||
|         if (g_dump_bytecode) | ||||
|             executable.dump(); | ||||
|         JS::Bytecode::Interpreter bytecode_interpreter(interpreter->global_object(), interpreter->realm()); | ||||
|         bytecode_interpreter.run(unit); | ||||
|         bytecode_interpreter.run(executable); | ||||
|     } else { | ||||
|         interpreter->run(interpreter->global_object(), m_test_script->parse_node()); | ||||
|     } | ||||
|  | @ -359,18 +352,11 @@ inline JSFileResult TestRunner::run_file_test(const String& test_path) | |||
|     if (file_script.is_error()) | ||||
|         return { test_path, file_script.error() }; | ||||
|     if (g_run_bytecode) { | ||||
|         auto unit = JS::Bytecode::Generator::generate(file_script.value()->parse_node()); | ||||
|         if (g_dump_bytecode) { | ||||
|             for (auto& block : unit.basic_blocks) | ||||
|                 block.dump(unit); | ||||
|             if (!unit.string_table->is_empty()) { | ||||
|                 outln(); | ||||
|                 unit.string_table->dump(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         auto executable = JS::Bytecode::Generator::generate(file_script.value()->parse_node()); | ||||
|         if (g_dump_bytecode) | ||||
|             executable.dump(); | ||||
|         JS::Bytecode::Interpreter bytecode_interpreter(interpreter->global_object(), interpreter->realm()); | ||||
|         bytecode_interpreter.run(unit); | ||||
|         bytecode_interpreter.run(executable); | ||||
|     } else { | ||||
|         interpreter->run(interpreter->global_object(), file_script.value()->parse_node()); | ||||
|     } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling