diff options
Diffstat (limited to 'libsolidity/codegen')
-rw-r--r-- | libsolidity/codegen/CompilerUtils.cpp | 9 | ||||
-rw-r--r-- | libsolidity/codegen/CompilerUtils.h | 2 |
2 files changed, 9 insertions, 2 deletions
diff --git a/libsolidity/codegen/CompilerUtils.cpp b/libsolidity/codegen/CompilerUtils.cpp index 7c159ff7..461803fa 100644 --- a/libsolidity/codegen/CompilerUtils.cpp +++ b/libsolidity/codegen/CompilerUtils.cpp @@ -298,9 +298,16 @@ void CompilerUtils::zeroInitialiseMemoryArray(ArrayType const& _type) m_context << Instruction::SWAP1 << Instruction::POP; } -void CompilerUtils::memoryCopy() +void CompilerUtils::memoryCopy(bool _useIdentityPrecompile) { // Stack here: size target source + + if (!_useIdentityPrecompile) + { + // FIXME + return; + } + // stack for call: outsize target size source value contract gas //@TODO do not use ::CALL if less than 32 bytes? m_context << Instruction::DUP3 << Instruction::SWAP1; diff --git a/libsolidity/codegen/CompilerUtils.h b/libsolidity/codegen/CompilerUtils.h index 0a5d8e1c..fdcd1dfc 100644 --- a/libsolidity/codegen/CompilerUtils.h +++ b/libsolidity/codegen/CompilerUtils.h @@ -112,7 +112,7 @@ public: /// Uses a CALL to the identity contract to perform a memory-to-memory copy. /// Stack pre: <size> <target> <source> /// Stack post: - void memoryCopy(); + void memoryCopy(bool _useIdentityPrecompile = true); /// Converts the combined and left-aligned (right-aligned if @a _rightAligned is true) /// external function type <address><function identifier> into two stack slots: |