aboutsummaryrefslogtreecommitdiffstats
path: root/CompilerStack.cpp
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2015-08-03 22:12:12 +0800
committerchriseth <c@ethdev.com>2015-08-03 22:12:12 +0800
commit2c476390cadea8a4863b0d29958d53b2a194fcb2 (patch)
treed1c2a6368754866524cf32e5f53e43be05ae6256 /CompilerStack.cpp
parentac1a11634edaacfdbc198df4ed4078ac4c141af7 (diff)
parent943fd623e16829ad93c05b60b44676485b989620 (diff)
downloaddexon-solidity-2c476390cadea8a4863b0d29958d53b2a194fcb2.tar
dexon-solidity-2c476390cadea8a4863b0d29958d53b2a194fcb2.tar.gz
dexon-solidity-2c476390cadea8a4863b0d29958d53b2a194fcb2.tar.bz2
dexon-solidity-2c476390cadea8a4863b0d29958d53b2a194fcb2.tar.lz
dexon-solidity-2c476390cadea8a4863b0d29958d53b2a194fcb2.tar.xz
dexon-solidity-2c476390cadea8a4863b0d29958d53b2a194fcb2.tar.zst
dexon-solidity-2c476390cadea8a4863b0d29958d53b2a194fcb2.zip
Merge pull request #2677 from chriseth/sol_copyContract
Clone contracts
Diffstat (limited to 'CompilerStack.cpp')
-rw-r--r--CompilerStack.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/CompilerStack.cpp b/CompilerStack.cpp
index f056bb9b..a85738eb 100644
--- a/CompilerStack.cpp
+++ b/CompilerStack.cpp
@@ -166,7 +166,13 @@ void CompilerStack::compile(bool _optimize, unsigned _runs)
compiledContract.bytecode = compiler->getAssembledBytecode();
compiledContract.runtimeBytecode = compiler->getRuntimeBytecode();
compiledContract.compiler = move(compiler);
+ compiler = make_shared<Compiler>(_optimize, _runs);
+ compiler->compileContract(*contract, contractBytecode);
contractBytecode[compiledContract.contract] = &compiledContract.bytecode;
+
+ Compiler cloneCompiler(_optimize, _runs);
+ cloneCompiler.compileClone(*contract, contractBytecode);
+ compiledContract.cloneBytecode = cloneCompiler.getAssembledBytecode();
}
}
@@ -199,6 +205,11 @@ bytes const& CompilerStack::getRuntimeBytecode(string const& _contractName) cons
return getContract(_contractName).runtimeBytecode;
}
+bytes const& CompilerStack::getCloneBytecode(string const& _contractName) const
+{
+ return getContract(_contractName).cloneBytecode;
+}
+
dev::h256 CompilerStack::getContractCodeHash(string const& _contractName) const
{
return dev::sha3(getRuntimeBytecode(_contractName));