@@ -74,31 +74,35 @@ bool AssemblyStack::parseAndAnalyze(std::string const& _sourceName, std::string
74
74
if (!m_errorReporter.errors ().empty ())
75
75
return false ;
76
76
solAssert (m_parserResult, " " );
77
+ solAssert (m_parserResult->code , " " );
77
78
78
79
return analyzeParsed ();
79
80
}
80
81
81
82
bool AssemblyStack::analyzeParsed ()
82
83
{
83
- m_analysisInfo = make_shared<assembly::AsmAnalysisInfo>();
84
- assembly::AsmAnalyzer analyzer (*m_analysisInfo, m_errorReporter, m_evmVersion, boost::none, languageToAsmFlavour (m_language));
85
- m_analysisSuccessful = analyzer.analyze (*m_parserResult);
84
+ solAssert (m_parserResult, " " );
85
+ solAssert (m_parserResult->code , " " );
86
+ m_parserResult->analysisInfo = make_shared<assembly::AsmAnalysisInfo>();
87
+ assembly::AsmAnalyzer analyzer (*m_parserResult->analysisInfo , m_errorReporter, m_evmVersion, boost::none, languageToAsmFlavour (m_language));
88
+ m_analysisSuccessful = analyzer.analyze (*m_parserResult->code );
86
89
return m_analysisSuccessful;
87
90
}
88
91
89
92
MachineAssemblyObject AssemblyStack::assemble (Machine _machine) const
90
93
{
91
94
solAssert (m_analysisSuccessful, " " );
92
95
solAssert (m_parserResult, " " );
93
- solAssert (m_analysisInfo, " " );
96
+ solAssert (m_parserResult->code , " " );
97
+ solAssert (m_parserResult->analysisInfo , " " );
94
98
95
99
switch (_machine)
96
100
{
97
101
case Machine::EVM:
98
102
{
99
103
MachineAssemblyObject object;
100
104
eth::Assembly assembly;
101
- assembly::CodeGenerator::assemble (*m_parserResult, *m_analysisInfo , assembly);
105
+ assembly::CodeGenerator::assemble (*m_parserResult-> code , *m_parserResult-> analysisInfo , assembly);
102
106
object.bytecode = make_shared<eth::LinkerObject>(assembly.assemble ());
103
107
object.assembly = assembly.assemblyString ();
104
108
return object;
@@ -107,7 +111,7 @@ MachineAssemblyObject AssemblyStack::assemble(Machine _machine) const
107
111
{
108
112
MachineAssemblyObject object;
109
113
yul::EVMAssembly assembly (true );
110
- yul::CodeTransform (assembly, *m_analysisInfo , m_language == Language::Yul, true )(*m_parserResult);
114
+ yul::CodeTransform (assembly, *m_parserResult-> analysisInfo , m_language == Language::Yul, true )(*m_parserResult-> code );
111
115
object.bytecode = make_shared<eth::LinkerObject>(assembly.finalize ());
112
116
// / TODO: fill out text representation
113
117
return object;
@@ -122,5 +126,6 @@ MachineAssemblyObject AssemblyStack::assemble(Machine _machine) const
122
126
string AssemblyStack::print () const
123
127
{
124
128
solAssert (m_parserResult, " " );
125
- return assembly::AsmPrinter (m_language == Language::Yul)(*m_parserResult);
129
+ solAssert (m_parserResult->code , " " );
130
+ return m_parserResult->toString (m_language == Language::Yul) + " \n " ;
126
131
}
0 commit comments