From a737e5153300b66a8d6153bc3798f1e50131c652 Mon Sep 17 00:00:00 2001 From: chriseth Date: Wed, 14 Oct 2020 12:22:22 +0200 Subject: [PATCH] Use array length function. --- .../codegen/ir/IRGeneratorForStatements.cpp | 31 +++---------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/libsolidity/codegen/ir/IRGeneratorForStatements.cpp b/libsolidity/codegen/ir/IRGeneratorForStatements.cpp index 8e07edd75..c26012e17 100644 --- a/libsolidity/codegen/ir/IRGeneratorForStatements.cpp +++ b/libsolidity/codegen/ir/IRGeneratorForStatements.cpp @@ -1767,32 +1767,11 @@ void IRGeneratorForStatements::endVisit(MemberAccess const& _memberAccess) auto const& type = dynamic_cast(*_memberAccess.expression().annotation().type); if (member == "length") - { - if (!type.isDynamicallySized()) - define(_memberAccess) << type.length() << "\n"; - else - switch (type.location()) - { - case DataLocation::CallData: - define(_memberAccess, IRVariable(_memberAccess.expression()).part("length")); - break; - case DataLocation::Storage: - { - define(_memberAccess) << - m_utils.arrayLengthFunction(type) << - "(" << - IRVariable(_memberAccess.expression()).commaSeparatedList() << - ")\n"; - break; - } - case DataLocation::Memory: - define(_memberAccess) << - "mload(" << - IRVariable(_memberAccess.expression()).commaSeparatedList() << - ")\n"; - break; - } - } + define(_memberAccess) << + m_utils.arrayLengthFunction(type) << + "(" << + IRVariable(_memberAccess.expression()).commaSeparatedList() << + ")\n"; else if (member == "pop" || member == "push") { solAssert(type.location() == DataLocation::Storage, "");