Introduce MachineAssemblyObject

This commit is contained in:
Alex Beregszaszi
2017-06-09 16:40:14 +02:00
committed by chriseth
parent fe3b46554a
commit f0d213e6b5
3 changed files with 23 additions and 6 deletions
+10 -4
View File
@@ -77,7 +77,7 @@ bool AssemblyStack::analyzeParsed()
return m_analysisSuccessful;
}
eth::LinkerObject AssemblyStack::assemble(Machine _machine) const
MachineAssemblyObject AssemblyStack::assemble(Machine _machine) const
{
solAssert(m_analysisSuccessful, "");
solAssert(m_parserResult, "");
@@ -87,21 +87,27 @@ eth::LinkerObject AssemblyStack::assemble(Machine _machine) const
{
case Machine::EVM:
{
MachineAssemblyObject object;
eth::Assembly assembly;
assembly::CodeGenerator::assemble(*m_parserResult, *m_analysisInfo, assembly);
return assembly.assemble();
object.bytecode = make_shared<eth::LinkerObject>(assembly.assemble());
/// TODO: fill out text representation
return object;
}
case Machine::EVM15:
{
MachineAssemblyObject object;
julia::EVMAssembly assembly(true);
julia::CodeTransform(assembly, *m_analysisInfo, true).run(*m_parserResult);
return assembly.finalize();
object.bytecode = make_shared<eth::LinkerObject>(assembly.finalize());
/// TOOD: fill out text representation
return object;
}
case Machine::eWasm:
solUnimplemented("eWasm backend is not yet implemented.");
}
// unreachable
return eth::LinkerObject();
return MachineAssemblyObject();
}
string AssemblyStack::print() const