diff options
author | chriseth <chris@ethereum.org> | 2019-01-18 07:16:06 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-18 07:16:06 +0800 |
commit | 2ec997e697e306dd54165aad365406ee88c534cb (patch) | |
tree | 5e943e23d38e332de3eedd33be11f2cf9df5fd69 /libsolidity/codegen/ContractCompiler.cpp | |
parent | 0711873a2f13d7b0f27e268fcd0a7683665f339d (diff) | |
parent | 2a92403690a4998ab097503231ac39f854b9c76c (diff) | |
download | dexon-solidity-2ec997e697e306dd54165aad365406ee88c534cb.tar dexon-solidity-2ec997e697e306dd54165aad365406ee88c534cb.tar.gz dexon-solidity-2ec997e697e306dd54165aad365406ee88c534cb.tar.bz2 dexon-solidity-2ec997e697e306dd54165aad365406ee88c534cb.tar.lz dexon-solidity-2ec997e697e306dd54165aad365406ee88c534cb.tar.xz dexon-solidity-2ec997e697e306dd54165aad365406ee88c534cb.tar.zst dexon-solidity-2ec997e697e306dd54165aad365406ee88c534cb.zip |
Merge pull request #5775 from ethereum/codeAccess
Provide access to code of contract types.
Diffstat (limited to 'libsolidity/codegen/ContractCompiler.cpp')
-rw-r--r-- | libsolidity/codegen/ContractCompiler.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/libsolidity/codegen/ContractCompiler.cpp b/libsolidity/codegen/ContractCompiler.cpp index b051d260..f843e07a 100644 --- a/libsolidity/codegen/ContractCompiler.cpp +++ b/libsolidity/codegen/ContractCompiler.cpp @@ -60,7 +60,7 @@ private: void ContractCompiler::compileContract( ContractDefinition const& _contract, - std::map<const ContractDefinition*, eth::Assembly const*> const& _contracts + map<ContractDefinition const*, shared_ptr<Compiler const>> const& _otherCompilers ) { CompilerContext::LocationSetter locationSetter(m_context, _contract); @@ -70,7 +70,7 @@ void ContractCompiler::compileContract( // This has to be the first code in the contract. appendDelegatecallCheck(); - initializeContext(_contract, _contracts); + initializeContext(_contract, _otherCompilers); // This generates the dispatch function for externally visible functions // and adds the function to the compilation queue. Additionally internal functions, // which are referenced directly or indirectly will be added. @@ -81,7 +81,7 @@ void ContractCompiler::compileContract( size_t ContractCompiler::compileConstructor( ContractDefinition const& _contract, - std::map<const ContractDefinition*, eth::Assembly const*> const& _contracts + std::map<ContractDefinition const*, shared_ptr<Compiler const>> const& _otherCompilers ) { CompilerContext::LocationSetter locationSetter(m_context, _contract); @@ -89,18 +89,18 @@ size_t ContractCompiler::compileConstructor( return deployLibrary(_contract); else { - initializeContext(_contract, _contracts); + initializeContext(_contract, _otherCompilers); return packIntoContractCreator(_contract); } } void ContractCompiler::initializeContext( ContractDefinition const& _contract, - map<ContractDefinition const*, eth::Assembly const*> const& _compiledContracts + map<ContractDefinition const*, shared_ptr<Compiler const>> const& _otherCompilers ) { m_context.setExperimentalFeatures(_contract.sourceUnit().annotation().experimentalFeatures); - m_context.setCompiledContracts(_compiledContracts); + m_context.setOtherCompilers(_otherCompilers); m_context.setInheritanceHierarchy(_contract.annotation().linearizedBaseContracts); CompilerUtils(m_context).initialiseFreeMemoryPointer(); registerStateVariables(_contract); @@ -716,7 +716,7 @@ bool ContractCompiler::visit(InlineAssembly const& _inlineAssembly) CodeGenerator::assemble( _inlineAssembly.operations(), *_inlineAssembly.annotation().analysisInfo, - m_context.nonConstAssembly(), + *m_context.assemblyPtr(), identifierAccess ); m_context.setStackOffset(startStackHeight); |