mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	[yul-phaser] Printing and JSON conversion for the Program class
This commit is contained in:
		
							parent
							
								
									2aa42b32e5
								
							
						
					
					
						commit
						3baa191b94
					
				| @ -25,7 +25,9 @@ | |||||||
| 
 | 
 | ||||||
| #include <libyul/AsmAnalysis.h> | #include <libyul/AsmAnalysis.h> | ||||||
| #include <libyul/AsmAnalysisInfo.h> | #include <libyul/AsmAnalysisInfo.h> | ||||||
|  | #include <libyul/AsmJsonConverter.h> | ||||||
| #include <libyul/AsmParser.h> | #include <libyul/AsmParser.h> | ||||||
|  | #include <libyul/AsmPrinter.h> | ||||||
| #include <libyul/YulString.h> | #include <libyul/YulString.h> | ||||||
| #include <libyul/backends/evm/EVMDialect.h> | #include <libyul/backends/evm/EVMDialect.h> | ||||||
| #include <libyul/optimiser/Disambiguator.h> | #include <libyul/optimiser/Disambiguator.h> | ||||||
| @ -33,10 +35,10 @@ | |||||||
| #include <libyul/optimiser/FunctionGrouper.h> | #include <libyul/optimiser/FunctionGrouper.h> | ||||||
| #include <libyul/optimiser/FunctionHoister.h> | #include <libyul/optimiser/FunctionHoister.h> | ||||||
| #include <libyul/optimiser/Metrics.h> | #include <libyul/optimiser/Metrics.h> | ||||||
| 
 |  | ||||||
| #include <libyul/optimiser/Suite.h> | #include <libyul/optimiser/Suite.h> | ||||||
| 
 | 
 | ||||||
| #include <libsolutil/CommonIO.h> | #include <libsolutil/CommonIO.h> | ||||||
|  | #include <libsolutil/JSON.h> | ||||||
| 
 | 
 | ||||||
| #include <boost/filesystem.hpp> | #include <boost/filesystem.hpp> | ||||||
| 
 | 
 | ||||||
| @ -50,6 +52,13 @@ using namespace solidity::yul; | |||||||
| using namespace solidity::util; | using namespace solidity::util; | ||||||
| using namespace solidity::phaser; | using namespace solidity::phaser; | ||||||
| 
 | 
 | ||||||
|  | namespace solidity::phaser | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | ostream& operator<<(ostream& _stream, Program const& _program); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| set<YulString> const Program::s_externallyUsedIdentifiers = {}; | set<YulString> const Program::s_externallyUsedIdentifiers = {}; | ||||||
| 
 | 
 | ||||||
| Program Program::load(string const& _sourcePath) | Program Program::load(string const& _sourcePath) | ||||||
| @ -76,6 +85,17 @@ void Program::optimise(vector<string> const& _optimisationSteps) | |||||||
| 	applyOptimisationSteps(m_optimiserStepContext, *m_ast, _optimisationSteps); | 	applyOptimisationSteps(m_optimiserStepContext, *m_ast, _optimisationSteps); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | ostream& phaser::operator<<(ostream& _stream, Program const& _program) | ||||||
|  | { | ||||||
|  | 	return _stream << AsmPrinter()(*_program.m_ast); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | string Program::toJson() const | ||||||
|  | { | ||||||
|  | 	Json::Value serializedAst = AsmJsonConverter(0)(*m_ast); | ||||||
|  | 	return jsonPrettyPrint(serializedAst); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| CharStream Program::loadSource(string const& _sourcePath) | CharStream Program::loadSource(string const& _sourcePath) | ||||||
| { | { | ||||||
| 	assertThrow(boost::filesystem::exists(_sourcePath), InvalidProgram, "Source file does not exist"); | 	assertThrow(boost::filesystem::exists(_sourcePath), InvalidProgram, "Source file does not exist"); | ||||||
|  | |||||||
| @ -24,6 +24,7 @@ | |||||||
| #include <boost/noncopyable.hpp> | #include <boost/noncopyable.hpp> | ||||||
| 
 | 
 | ||||||
| #include <optional> | #include <optional> | ||||||
|  | #include <ostream> | ||||||
| #include <set> | #include <set> | ||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
| @ -73,6 +74,9 @@ public: | |||||||
| 	size_t codeSize() const { return computeCodeSize(*m_ast); } | 	size_t codeSize() const { return computeCodeSize(*m_ast); } | ||||||
| 	yul::Block const& ast() const { return *m_ast; } | 	yul::Block const& ast() const { return *m_ast; } | ||||||
| 
 | 
 | ||||||
|  | 	friend std::ostream& operator<<(std::ostream& _stream, Program const& _program); | ||||||
|  | 	std::string toJson() const; | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
| 	Program( | 	Program( | ||||||
| 		yul::Dialect const& _dialect, | 		yul::Dialect const& _dialect, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user