diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-06-09 18:23:40 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-09 18:23:40 +0800 |
commit | 76667fed4f9865c4a3a5a267c469446f8bce1bef (patch) | |
tree | 4f8d0d9eee83e30912e78685d6c0fbdc916521a9 /libsolidity/interface/AssemblyStack.cpp | |
parent | 21e0b69dcb189fb52ac4e38959801582e02ca8fd (diff) | |
parent | 80227af08a72e37e35a0a8bfacadc1c201f1d114 (diff) | |
download | dexon-solidity-76667fed4f9865c4a3a5a267c469446f8bce1bef.tar dexon-solidity-76667fed4f9865c4a3a5a267c469446f8bce1bef.tar.gz dexon-solidity-76667fed4f9865c4a3a5a267c469446f8bce1bef.tar.bz2 dexon-solidity-76667fed4f9865c4a3a5a267c469446f8bce1bef.tar.lz dexon-solidity-76667fed4f9865c4a3a5a267c469446f8bce1bef.tar.xz dexon-solidity-76667fed4f9865c4a3a5a267c469446f8bce1bef.tar.zst dexon-solidity-76667fed4f9865c4a3a5a267c469446f8bce1bef.zip |
Merge pull request #2304 from ethereum/evm15asm
Implementation of EVM 1.5 backend
Diffstat (limited to 'libsolidity/interface/AssemblyStack.cpp')
-rw-r--r-- | libsolidity/interface/AssemblyStack.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libsolidity/interface/AssemblyStack.cpp b/libsolidity/interface/AssemblyStack.cpp index 347de350..31d9e494 100644 --- a/libsolidity/interface/AssemblyStack.cpp +++ b/libsolidity/interface/AssemblyStack.cpp @@ -30,6 +30,9 @@ #include <libevmasm/Assembly.h> +#include <libjulia/backends/evm/EVMCodeTransform.h> +#include <libjulia/backends/evm/EVMAssembly.h> + using namespace std; using namespace dev; using namespace dev::solidity; @@ -73,7 +76,7 @@ bool AssemblyStack::analyzeParsed() return m_analysisSuccessful; } -eth::LinkerObject AssemblyStack::assemble(Machine _machine) +eth::LinkerObject AssemblyStack::assemble(Machine _machine) const { solAssert(m_analysisSuccessful, ""); solAssert(m_parserResult, ""); @@ -83,11 +86,15 @@ eth::LinkerObject AssemblyStack::assemble(Machine _machine) { case Machine::EVM: { - auto assembly = assembly::CodeGenerator(m_errorReporter).assemble(*m_parserResult, *m_analysisInfo); + auto assembly = assembly::CodeGenerator::assemble(*m_parserResult, *m_analysisInfo); return assembly.assemble(); } case Machine::EVM15: - solUnimplemented("EVM 1.5 backend is not yet implemented."); + { + julia::EVMAssembly assembly(true); + julia::CodeTransform(assembly, *m_analysisInfo, true).run(*m_parserResult); + return assembly.finalize(); + } case Machine::eWasm: solUnimplemented("eWasm backend is not yet implemented."); } @@ -95,7 +102,7 @@ eth::LinkerObject AssemblyStack::assemble(Machine _machine) return eth::LinkerObject(); } -string AssemblyStack::print() +string AssemblyStack::print() const { solAssert(m_parserResult, ""); return assembly::AsmPrinter(m_language == Language::JULIA)(*m_parserResult); |