mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #2317 from ethereum/keccak256
Use keccak256 in tests and replace the SHA3 instruction in assembly
This commit is contained in:
@@ -449,7 +449,7 @@ void ArrayUtils::copyArrayToMemory(ArrayType const& _sourceType, bool _padToWord
|
||||
m_context << Instruction::DUP3 << Instruction::ADD << Instruction::SWAP2;
|
||||
if (_sourceType.isDynamicallySized())
|
||||
{
|
||||
// actual array data is stored at SHA3(storage_offset)
|
||||
// actual array data is stored at KECCAK256(storage_offset)
|
||||
m_context << Instruction::SWAP1;
|
||||
utils.computeHashStatic();
|
||||
m_context << Instruction::SWAP1;
|
||||
@@ -731,7 +731,7 @@ void ArrayUtils::resizeDynamicArray(ArrayType const& _typeIn) const
|
||||
_context << Instruction::POP;
|
||||
}
|
||||
|
||||
// Change of length for a regular array (i.e. length at location, data at sha3(location)).
|
||||
// Change of length for a regular array (i.e. length at location, data at KECCAK256(location)).
|
||||
// stack: ref new_length old_length
|
||||
// store new length
|
||||
_context << Instruction::DUP2;
|
||||
|
||||
@@ -934,7 +934,7 @@ unsigned CompilerUtils::sizeOnStack(vector<shared_ptr<Type const>> const& _varia
|
||||
void CompilerUtils::computeHashStatic()
|
||||
{
|
||||
storeInMemory(0);
|
||||
m_context << u256(32) << u256(0) << Instruction::SHA3;
|
||||
m_context << u256(32) << u256(0) << Instruction::KECCAK256;
|
||||
}
|
||||
|
||||
void CompilerUtils::storeStringData(bytesConstRef _data)
|
||||
|
||||
@@ -166,7 +166,7 @@ public:
|
||||
static unsigned sizeOnStack(std::vector<T> const& _variables);
|
||||
static unsigned sizeOnStack(std::vector<std::shared_ptr<Type const>> const& _variableTypes);
|
||||
|
||||
/// Appends code that computes tha SHA3 hash of the topmost stack element of 32 byte type.
|
||||
/// Appends code that computes tha Keccak-256 hash of the topmost stack element of 32 byte type.
|
||||
void computeHashStatic();
|
||||
|
||||
/// Bytes we need to the start of call data.
|
||||
|
||||
@@ -110,7 +110,7 @@ void ExpressionCompiler::appendStateVariableAccessor(VariableDeclaration const&
|
||||
// move key to memory.
|
||||
utils().copyToStackTop(paramTypes.size() - i, 1);
|
||||
utils().storeInMemory(0);
|
||||
m_context << u256(64) << u256(0) << Instruction::SHA3;
|
||||
m_context << u256(64) << u256(0) << Instruction::KECCAK256;
|
||||
// push offset
|
||||
m_context << u256(0);
|
||||
returnType = mappingType->valueType();
|
||||
@@ -674,7 +674,7 @@ bool ExpressionCompiler::visit(FunctionCall const& _functionCall)
|
||||
utils().fetchFreeMemoryPointer();
|
||||
utils().encodeToMemory(argumentTypes, TypePointers(), function.padArguments(), true);
|
||||
utils().toSizeAfterFreeMemoryPointer();
|
||||
m_context << Instruction::SHA3;
|
||||
m_context << Instruction::KECCAK256;
|
||||
break;
|
||||
}
|
||||
case FunctionType::Kind::Log0:
|
||||
@@ -721,7 +721,7 @@ bool ExpressionCompiler::visit(FunctionCall const& _functionCall)
|
||||
true
|
||||
);
|
||||
utils().toSizeAfterFreeMemoryPointer();
|
||||
m_context << Instruction::SHA3;
|
||||
m_context << Instruction::KECCAK256;
|
||||
}
|
||||
else
|
||||
utils().convertType(
|
||||
@@ -1214,7 +1214,7 @@ bool ExpressionCompiler::visit(IndexAccess const& _indexAccess)
|
||||
utils().storeInMemoryDynamic(IntegerType(256));
|
||||
m_context << u256(0);
|
||||
}
|
||||
m_context << Instruction::SHA3;
|
||||
m_context << Instruction::KECCAK256;
|
||||
m_context << u256(0);
|
||||
setLValueToStorageItem(_indexAccess);
|
||||
}
|
||||
|
||||
@@ -200,6 +200,8 @@ std::map<string, dev::solidity::Instruction> const& Parser::instructions()
|
||||
|
||||
// add alias for suicide
|
||||
s_instructions["suicide"] = solidity::Instruction::SELFDESTRUCT;
|
||||
// add alis for sha3
|
||||
s_instructions["sha3"] = solidity::Instruction::KECCAK256;
|
||||
}
|
||||
return s_instructions;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user