diff options
author | chriseth <chris@ethereum.org> | 2018-03-05 19:10:49 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-05 19:10:49 +0800 |
commit | 6dc137317fa8249a9c1b19ff6430840974393f90 (patch) | |
tree | 2263fd97b42da5673b1dcce24ab4419ce8dc67b9 /libsolidity/codegen/CompilerContext.h | |
parent | e3c2ab39a125e68aea07ba9c8cacb0a55293bf0d (diff) | |
parent | 6ec4517929e8c0eca022f4771ba217db5d80beed (diff) | |
download | dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar.gz dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar.bz2 dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar.lz dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar.xz dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.tar.zst dexon-solidity-6dc137317fa8249a9c1b19ff6430840974393f90.zip |
Merge pull request #3569 from ethereum/evmVersion
EVM version
Diffstat (limited to 'libsolidity/codegen/CompilerContext.h')
-rw-r--r-- | libsolidity/codegen/CompilerContext.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libsolidity/codegen/CompilerContext.h b/libsolidity/codegen/CompilerContext.h index a155a3a5..cf626683 100644 --- a/libsolidity/codegen/CompilerContext.h +++ b/libsolidity/codegen/CompilerContext.h @@ -24,6 +24,8 @@ #include <libsolidity/codegen/ABIFunctions.h> +#include <libsolidity/interface/EVMVersion.h> + #include <libsolidity/ast/ASTForward.h> #include <libsolidity/ast/Types.h> #include <libsolidity/ast/ASTAnnotations.h> @@ -50,14 +52,17 @@ namespace solidity { class CompilerContext { public: - explicit CompilerContext(CompilerContext* _runtimeContext = nullptr): + explicit CompilerContext(EVMVersion _evmVersion = EVMVersion{}, CompilerContext* _runtimeContext = nullptr): m_asm(std::make_shared<eth::Assembly>()), + m_evmVersion(_evmVersion), m_runtimeContext(_runtimeContext) { if (m_runtimeContext) m_runtimeSub = size_t(m_asm->newSub(m_runtimeContext->m_asm).data()); } + EVMVersion const& evmVersion() const { return m_evmVersion; } + /// Update currently enabled set of experimental features. void setExperimentalFeatures(std::set<ExperimentalFeature> const& _features) { m_experimentalFeatures = _features; } /// @returns true if the given feature is enabled. @@ -204,7 +209,7 @@ public: void appendAuxiliaryData(bytes const& _data) { m_asm->appendAuxiliaryDataToEnd(_data); } /// Run optimisation step. - void optimise(bool _fullOptimsation, unsigned _runs = 200) { m_asm->optimise(_fullOptimsation, true, _runs); } + void optimise(bool _fullOptimsation, unsigned _runs = 200) { m_asm->optimise(_fullOptimsation, m_evmVersion, true, _runs); } /// @returns the runtime context if in creation mode and runtime context is set, nullptr otherwise. CompilerContext* runtimeContext() { return m_runtimeContext; } @@ -287,6 +292,8 @@ private: } m_functionCompilationQueue; eth::AssemblyPointer m_asm; + /// Version of the EVM to compile against. + EVMVersion m_evmVersion; /// Activated experimental features. std::set<ExperimentalFeature> m_experimentalFeatures; /// Other already compiled contracts to be used in contract creation calls. |