mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #11910 from ethereum/deterministicOptimizer
Sort yul functions by creation time.
This commit is contained in:
commit
dae6b53c84
@ -15,6 +15,7 @@ Compiler Features:
|
||||
|
||||
|
||||
Bugfixes:
|
||||
* Code Generator: Use stable source order for ABI functions.
|
||||
* Opcode Optimizer: Prevent the optimizer from running multiple times to avoid potential bytecode differences for referenced code.
|
||||
* Name Resolver: Fix that when importing an aliased symbol using ``import {AliasedName} from "a.sol"`` it would use the original name of the symbol and not the aliased one.
|
||||
* SMTChecker: Fix false negative caused by ``push`` on storage array references returned by internal functions.
|
||||
|
@ -33,13 +33,8 @@ using namespace solidity::util;
|
||||
|
||||
string MultiUseYulFunctionCollector::requestedFunctions()
|
||||
{
|
||||
string result;
|
||||
for (auto const& [name, code]: m_requestedFunctions)
|
||||
{
|
||||
solAssert(code != "<<STUB<<", "");
|
||||
// std::map guarantees ascending order when iterating through its keys.
|
||||
result += code;
|
||||
}
|
||||
string result = move(m_code);
|
||||
m_code.clear();
|
||||
m_requestedFunctions.clear();
|
||||
return result;
|
||||
}
|
||||
@ -48,11 +43,11 @@ string MultiUseYulFunctionCollector::createFunction(string const& _name, functio
|
||||
{
|
||||
if (!m_requestedFunctions.count(_name))
|
||||
{
|
||||
m_requestedFunctions[_name] = "<<STUB<<";
|
||||
m_requestedFunctions.insert(_name);
|
||||
string fun = _creator();
|
||||
solAssert(!fun.empty(), "");
|
||||
solAssert(fun.find("function " + _name + "(") != string::npos, "Function not properly named.");
|
||||
m_requestedFunctions[_name] = std::move(fun);
|
||||
m_code += move(fun);
|
||||
}
|
||||
return _name;
|
||||
}
|
||||
@ -65,13 +60,13 @@ string MultiUseYulFunctionCollector::createFunction(
|
||||
solAssert(!_name.empty(), "");
|
||||
if (!m_requestedFunctions.count(_name))
|
||||
{
|
||||
m_requestedFunctions[_name] = "<<STUB<<";
|
||||
m_requestedFunctions.insert(_name);
|
||||
vector<string> arguments;
|
||||
vector<string> returnParameters;
|
||||
string body = _creator(arguments, returnParameters);
|
||||
solAssert(!body.empty(), "");
|
||||
|
||||
m_requestedFunctions[_name] = Whiskers(R"(
|
||||
m_code += Whiskers(R"(
|
||||
function <functionName>(<args>)<?+retParams> -> <retParams></+retParams> {
|
||||
<body>
|
||||
}
|
||||
@ -80,7 +75,7 @@ string MultiUseYulFunctionCollector::createFunction(
|
||||
("args", joinHumanReadable(arguments))
|
||||
("retParams", joinHumanReadable(returnParameters))
|
||||
("body", body)
|
||||
.render();;
|
||||
.render();
|
||||
}
|
||||
return _name;
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <set>
|
||||
|
||||
namespace solidity::frontend
|
||||
{
|
||||
@ -46,9 +47,8 @@ public:
|
||||
std::function<std::string(std::vector<std::string>&, std::vector<std::string>&)> const& _creator
|
||||
);
|
||||
|
||||
/// @returns concatenation of all generated functions.
|
||||
/// Guarantees that the order of functions in the generated code is deterministic and
|
||||
/// platform-independent.
|
||||
/// @returns concatenation of all generated functions in the order in which they were
|
||||
/// generated.
|
||||
/// Clears the internal list, i.e. calling it again will result in an
|
||||
/// empty return value.
|
||||
std::string requestedFunctions();
|
||||
@ -57,8 +57,8 @@ public:
|
||||
bool contains(std::string const& _name) const { return m_requestedFunctions.count(_name) > 0; }
|
||||
|
||||
private:
|
||||
/// Map from function name to code for a multi-use function.
|
||||
std::map<std::string, std::string> m_requestedFunctions;
|
||||
std::set<std::string> m_requestedFunctions;
|
||||
std::string m_code;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -798,10 +798,8 @@ bool IRGeneratorForStatements::visit(BinaryOperation const& _binOp)
|
||||
if (auto type = dynamic_cast<IntegerType const*>(commonType))
|
||||
isSigned = type->isSigned();
|
||||
|
||||
string args =
|
||||
expressionAsType(_binOp.leftExpression(), *commonType, true) +
|
||||
", " +
|
||||
expressionAsType(_binOp.rightExpression(), *commonType, true);
|
||||
string args = expressionAsType(_binOp.leftExpression(), *commonType, true);
|
||||
args += ", " + expressionAsType(_binOp.rightExpression(), *commonType, true);
|
||||
|
||||
string expr;
|
||||
if (op == Token::Equal)
|
||||
@ -1115,16 +1113,14 @@ void IRGeneratorForStatements::endVisit(FunctionCall const& _functionCall)
|
||||
IRVariable array = convert(*arguments[0], *TypeProvider::bytesMemory());
|
||||
IRVariable hashVariable(m_context.newYulVariable(), *TypeProvider::fixedBytes(32));
|
||||
|
||||
string dataAreaFunction = m_utils.arrayDataAreaFunction(*TypeProvider::bytesMemory());
|
||||
string arrayLengthFunction = m_utils.arrayLengthFunction(*TypeProvider::bytesMemory());
|
||||
define(hashVariable) <<
|
||||
"keccak256(" <<
|
||||
m_utils.arrayDataAreaFunction(*TypeProvider::bytesMemory()) <<
|
||||
"(" <<
|
||||
array.commaSeparatedList() <<
|
||||
"), " <<
|
||||
m_utils.arrayLengthFunction(*TypeProvider::bytesMemory()) <<
|
||||
"(" <<
|
||||
array.commaSeparatedList() <<
|
||||
"))\n";
|
||||
(dataAreaFunction + "(" + array.commaSeparatedList() + ")") <<
|
||||
", " <<
|
||||
(arrayLengthFunction + "(" + array.commaSeparatedList() +")") <<
|
||||
")\n";
|
||||
IRVariable selectorVariable(m_context.newYulVariable(), *TypeProvider::fixedBytes(4));
|
||||
define(selectorVariable, hashVariable);
|
||||
selector = selectorVariable.name();
|
||||
@ -1249,16 +1245,14 @@ void IRGeneratorForStatements::endVisit(FunctionCall const& _functionCall)
|
||||
{
|
||||
auto array = convert(*arguments[0], *arrayType);
|
||||
|
||||
string dataAreaFunction = m_utils.arrayDataAreaFunction(*arrayType);
|
||||
string arrayLengthFunction = m_utils.arrayLengthFunction(*arrayType);
|
||||
define(_functionCall) <<
|
||||
"keccak256(" <<
|
||||
m_utils.arrayDataAreaFunction(*arrayType) <<
|
||||
"(" <<
|
||||
array.commaSeparatedList() <<
|
||||
"), " <<
|
||||
m_utils.arrayLengthFunction(*arrayType) <<
|
||||
"(" <<
|
||||
array.commaSeparatedList() <<
|
||||
"))\n";
|
||||
(dataAreaFunction + "(" + array.commaSeparatedList() + ")") <<
|
||||
", " <<
|
||||
(arrayLengthFunction + "(" + array.commaSeparatedList() +")") <<
|
||||
")\n";
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1646,11 +1640,14 @@ void IRGeneratorForStatements::endVisit(MemberAccess const& _memberAccess)
|
||||
expressionAsType(_memberAccess.expression(), *TypeProvider::address()) <<
|
||||
")\n";
|
||||
else if (member == "code")
|
||||
{
|
||||
string externalCodeFunction = m_utils.externalCodeFunction();
|
||||
define(_memberAccess) <<
|
||||
m_utils.externalCodeFunction() <<
|
||||
externalCodeFunction <<
|
||||
"(" <<
|
||||
expressionAsType(_memberAccess.expression(), *TypeProvider::address()) <<
|
||||
")\n";
|
||||
}
|
||||
else if (member == "codehash")
|
||||
define(_memberAccess) <<
|
||||
"extcodehash(" <<
|
||||
@ -2149,8 +2146,9 @@ void IRGeneratorForStatements::endVisit(IndexAccess const& _indexAccess)
|
||||
}
|
||||
case DataLocation::CallData:
|
||||
{
|
||||
string indexAccessFunction = m_utils.calldataArrayIndexAccessFunction(arrayType);
|
||||
string const indexAccessFunctionCall =
|
||||
m_utils.calldataArrayIndexAccessFunction(arrayType) +
|
||||
indexAccessFunction +
|
||||
"(" +
|
||||
IRVariable(_indexAccess.baseExpression()).commaSeparatedList() +
|
||||
", " +
|
||||
@ -2867,13 +2865,16 @@ void IRGeneratorForStatements::writeToLValue(IRLValue const& _lvalue, IRVariable
|
||||
")\n";
|
||||
}
|
||||
else if (auto const* literalType = dynamic_cast<StringLiteralType const*>(&_value.type()))
|
||||
{
|
||||
string writeUInt = m_utils.writeToMemoryFunction(*TypeProvider::uint256());
|
||||
appendCode() <<
|
||||
m_utils.writeToMemoryFunction(*TypeProvider::uint256()) <<
|
||||
writeUInt <<
|
||||
"(" <<
|
||||
_memory.address <<
|
||||
", " <<
|
||||
m_utils.copyLiteralToMemoryFunction(literalType->value()) + "()" <<
|
||||
")\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
solAssert(_lvalue.type.sizeOnStack() == 1, "");
|
||||
@ -2949,11 +2950,14 @@ IRVariable IRGeneratorForStatements::readFromLValue(IRLValue const& _lvalue)
|
||||
solUnimplementedAssert(_lvalue.type.sizeOnStack() == 1, "");
|
||||
solAssert(_lvalue.type == *_immutable.variable->type(), "");
|
||||
if (m_context.executionContext() == IRGenerationContext::ExecutionContext::Creation)
|
||||
{
|
||||
string readFunction = m_utils.readFromMemory(*_immutable.variable->type());
|
||||
define(result) <<
|
||||
m_utils.readFromMemory(*_immutable.variable->type()) <<
|
||||
readFunction <<
|
||||
"(" <<
|
||||
to_string(m_context.immutableMemoryOffset(*_immutable.variable)) <<
|
||||
")\n";
|
||||
}
|
||||
else
|
||||
define(result) << "loadimmutable(\"" << to_string(_immutable.variable->id()) << "\")\n";
|
||||
},
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -25,6 +25,10 @@ object "C_81" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:82:370
|
||||
function constructor_C_81() {
|
||||
|
||||
@ -33,10 +37,6 @@ object "C_81" {
|
||||
}
|
||||
/// @src 0:82:370
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
}
|
||||
/// @use-src 0:"exp_base_literal/input.sol"
|
||||
object "C_81_deployed" {
|
||||
@ -66,6 +66,37 @@ object "C_81" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function cleanup_t_uint256(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function validator_revert_t_uint256(value) {
|
||||
if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }
|
||||
}
|
||||
|
||||
function abi_decode_t_uint256(offset, end) -> value {
|
||||
value := calldataload(offset)
|
||||
validator_revert_t_uint256(value)
|
||||
@ -104,14 +135,18 @@ object "C_81" {
|
||||
|
||||
}
|
||||
|
||||
function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {
|
||||
mstore(pos, cleanup_t_int256(value))
|
||||
}
|
||||
|
||||
function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {
|
||||
mstore(pos, cleanup_t_uint256(value))
|
||||
}
|
||||
|
||||
function cleanup_t_int256(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {
|
||||
mstore(pos, cleanup_t_int256(value))
|
||||
}
|
||||
|
||||
function abi_encode_tuple_t_uint256_t_int256_t_uint256_t_uint256__to_t_uint256_t_int256_t_uint256_t_uint256__fromStack(headStart , value0, value1, value2, value3) -> tail {
|
||||
tail := add(headStart, 128)
|
||||
|
||||
@ -125,36 +160,34 @@ object "C_81" {
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function checked_exp_t_rational_0_by_1_t_uint256(exponent) -> power {
|
||||
exponent := cleanup_t_uint256(exponent)
|
||||
|
||||
power := exp(0, exponent)
|
||||
function zero_value_for_split_t_uint256() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
function checked_exp_t_rational_10_by_1_t_uint256(exponent) -> power {
|
||||
exponent := cleanup_t_uint256(exponent)
|
||||
|
||||
if gt(exponent, 77) { panic_error_0x11() }
|
||||
|
||||
power := exp(10, exponent)
|
||||
function zero_value_for_split_t_int256() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
function checked_exp_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1_t_uint256(exponent) -> power {
|
||||
exponent := cleanup_t_uint256(exponent)
|
||||
|
||||
if gt(exponent, 1) { panic_error_0x11() }
|
||||
|
||||
power := exp(115792089237316195423570985008687907853269984665640564039457584007913129639935, exponent)
|
||||
function cleanup_t_rational_2_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function checked_exp_t_rational_1_by_1_t_uint256(exponent) -> power {
|
||||
exponent := cleanup_t_uint256(exponent)
|
||||
function identity(value) -> ret {
|
||||
ret := value
|
||||
}
|
||||
|
||||
power := exp(1, exponent)
|
||||
function convert_t_rational_2_by_1_to_t_uint256(value) -> converted {
|
||||
converted := cleanup_t_uint256(identity(cleanup_t_rational_2_by_1(value)))
|
||||
}
|
||||
|
||||
function panic_error_0x11() {
|
||||
mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)
|
||||
mstore(4, 0x11)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
|
||||
function checked_exp_t_rational_2_by_1_t_uint256(exponent) -> power {
|
||||
@ -165,10 +198,12 @@ object "C_81" {
|
||||
power := exp(2, exponent)
|
||||
}
|
||||
|
||||
function checked_exp_t_rational_minus_1_by_1_t_uint256(exponent) -> power {
|
||||
exponent := cleanup_t_uint256(exponent)
|
||||
function cleanup_t_rational_minus_2_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
power := exp(115792089237316195423570985008687907853269984665640564039457584007913129639935, exponent)
|
||||
function convert_t_rational_minus_2_by_1_to_t_int256(value) -> converted {
|
||||
converted := cleanup_t_int256(identity(cleanup_t_rational_minus_2_by_1(value)))
|
||||
}
|
||||
|
||||
function checked_exp_t_rational_minus_2_by_1_t_uint256(exponent) -> power {
|
||||
@ -179,39 +214,39 @@ object "C_81" {
|
||||
power := exp(115792089237316195423570985008687907853269984665640564039457584007913129639934, exponent)
|
||||
}
|
||||
|
||||
function cleanup_t_int256(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function cleanup_t_rational_0_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function cleanup_t_rational_10_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function convert_t_rational_10_by_1_to_t_uint256(value) -> converted {
|
||||
converted := cleanup_t_uint256(identity(cleanup_t_rational_10_by_1(value)))
|
||||
}
|
||||
|
||||
function checked_exp_t_rational_10_by_1_t_uint256(exponent) -> power {
|
||||
exponent := cleanup_t_uint256(exponent)
|
||||
|
||||
if gt(exponent, 77) { panic_error_0x11() }
|
||||
|
||||
power := exp(10, exponent)
|
||||
}
|
||||
|
||||
function cleanup_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function cleanup_t_rational_1_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
function convert_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1_to_t_uint256(value) -> converted {
|
||||
converted := cleanup_t_uint256(identity(cleanup_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1(value)))
|
||||
}
|
||||
|
||||
function cleanup_t_rational_2_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
function checked_exp_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1_t_uint256(exponent) -> power {
|
||||
exponent := cleanup_t_uint256(exponent)
|
||||
|
||||
if gt(exponent, 1) { panic_error_0x11() }
|
||||
|
||||
power := exp(115792089237316195423570985008687907853269984665640564039457584007913129639935, exponent)
|
||||
}
|
||||
|
||||
function cleanup_t_rational_minus_1_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function cleanup_t_rational_minus_2_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function cleanup_t_uint256(value) -> cleaned {
|
||||
function cleanup_t_rational_0_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
@ -219,28 +254,38 @@ object "C_81" {
|
||||
converted := cleanup_t_uint256(identity(cleanup_t_rational_0_by_1(value)))
|
||||
}
|
||||
|
||||
function convert_t_rational_10_by_1_to_t_uint256(value) -> converted {
|
||||
converted := cleanup_t_uint256(identity(cleanup_t_rational_10_by_1(value)))
|
||||
function checked_exp_t_rational_0_by_1_t_uint256(exponent) -> power {
|
||||
exponent := cleanup_t_uint256(exponent)
|
||||
|
||||
power := exp(0, exponent)
|
||||
}
|
||||
|
||||
function convert_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1_to_t_uint256(value) -> converted {
|
||||
converted := cleanup_t_uint256(identity(cleanup_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1(value)))
|
||||
}
|
||||
|
||||
function convert_t_rational_1_by_1_to_t_uint256(value) -> converted {
|
||||
converted := cleanup_t_uint256(identity(cleanup_t_rational_1_by_1(value)))
|
||||
}
|
||||
|
||||
function convert_t_rational_2_by_1_to_t_uint256(value) -> converted {
|
||||
converted := cleanup_t_uint256(identity(cleanup_t_rational_2_by_1(value)))
|
||||
function cleanup_t_rational_minus_1_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function convert_t_rational_minus_1_by_1_to_t_int256(value) -> converted {
|
||||
converted := cleanup_t_int256(identity(cleanup_t_rational_minus_1_by_1(value)))
|
||||
}
|
||||
|
||||
function convert_t_rational_minus_2_by_1_to_t_int256(value) -> converted {
|
||||
converted := cleanup_t_int256(identity(cleanup_t_rational_minus_2_by_1(value)))
|
||||
function checked_exp_t_rational_minus_1_by_1_t_uint256(exponent) -> power {
|
||||
exponent := cleanup_t_uint256(exponent)
|
||||
|
||||
power := exp(115792089237316195423570985008687907853269984665640564039457584007913129639935, exponent)
|
||||
}
|
||||
|
||||
function cleanup_t_rational_1_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function convert_t_rational_1_by_1_to_t_uint256(value) -> converted {
|
||||
converted := cleanup_t_uint256(identity(cleanup_t_rational_1_by_1(value)))
|
||||
}
|
||||
|
||||
function checked_exp_t_rational_1_by_1_t_uint256(exponent) -> power {
|
||||
exponent := cleanup_t_uint256(exponent)
|
||||
|
||||
power := exp(1, exponent)
|
||||
}
|
||||
|
||||
/// @src 0:96:368
|
||||
@ -369,51 +414,6 @@ object "C_81" {
|
||||
}
|
||||
/// @src 0:82:370
|
||||
|
||||
function identity(value) -> ret {
|
||||
ret := value
|
||||
}
|
||||
|
||||
function panic_error_0x11() {
|
||||
mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)
|
||||
mstore(4, 0x11)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function validator_revert_t_uint256(value) {
|
||||
if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }
|
||||
}
|
||||
|
||||
function zero_value_for_split_t_int256() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
function zero_value_for_split_t_uint256() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data ".metadata" hex"<BYTECODE REMOVED>"
|
||||
|
@ -62,6 +62,26 @@ object "C_59" {
|
||||
}
|
||||
revert(0, 0)
|
||||
}
|
||||
function panic_error_0x41()
|
||||
{
|
||||
mstore(0, shl(224, 0x4e487b71))
|
||||
mstore(4, 0x41)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
function allocate_memory_1236() -> memPtr
|
||||
{
|
||||
memPtr := mload(64)
|
||||
let newFreePtr := add(memPtr, 32)
|
||||
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }
|
||||
mstore(64, newFreePtr)
|
||||
}
|
||||
function allocate_memory(size) -> memPtr
|
||||
{
|
||||
memPtr := mload(64)
|
||||
let newFreePtr := add(memPtr, and(add(size, 31), not(31)))
|
||||
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }
|
||||
mstore(64, newFreePtr)
|
||||
}
|
||||
function abi_encode_uint256_string(headStart, value0, value1) -> tail
|
||||
{
|
||||
mstore(headStart, value0)
|
||||
@ -80,19 +100,11 @@ object "C_59" {
|
||||
}
|
||||
tail := add(add(headStart, and(add(length, 31), not(31))), 96)
|
||||
}
|
||||
function allocate_memory_1236() -> memPtr
|
||||
function panic_error_0x32()
|
||||
{
|
||||
memPtr := mload(64)
|
||||
let newFreePtr := add(memPtr, 32)
|
||||
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }
|
||||
mstore(64, newFreePtr)
|
||||
}
|
||||
function allocate_memory(size) -> memPtr
|
||||
{
|
||||
memPtr := mload(64)
|
||||
let newFreePtr := add(memPtr, and(add(size, 31), not(31)))
|
||||
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }
|
||||
mstore(64, newFreePtr)
|
||||
mstore(0, shl(224, 0x4e487b71))
|
||||
mstore(4, 0x32)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
/// @src 0:381:623
|
||||
function fun_sumArray(var_s_mpos) -> var, var_mpos
|
||||
@ -118,19 +130,6 @@ object "C_59" {
|
||||
/// @src 0:500:619
|
||||
var_mpos := memPtr
|
||||
}
|
||||
/// @src 0:346:625
|
||||
function panic_error_0x32()
|
||||
{
|
||||
mstore(0, shl(224, 0x4e487b71))
|
||||
mstore(4, 0x32)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
function panic_error_0x41()
|
||||
{
|
||||
mstore(0, shl(224, 0x4e487b71))
|
||||
mstore(4, 0x41)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
}
|
||||
data ".metadata" hex"<BYTECODE REMOVED>"
|
||||
}
|
||||
|
@ -25,14 +25,6 @@ object "C_15" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
/// @src 0:59:147
|
||||
function constructor_C_15() {
|
||||
|
||||
/// @src 0:59:147
|
||||
|
||||
}
|
||||
/// @src 0:59:147
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
|
||||
let start := allocate_unbounded()
|
||||
@ -52,6 +44,14 @@ object "C_15" {
|
||||
|
||||
}
|
||||
|
||||
/// @src 0:59:147
|
||||
function constructor_C_15() {
|
||||
|
||||
/// @src 0:59:147
|
||||
|
||||
}
|
||||
/// @src 0:59:147
|
||||
|
||||
}
|
||||
/// @use-src 0:"revert_strings/input.sol"
|
||||
object "C_15_deployed" {
|
||||
@ -81,233 +81,17 @@ object "C_15" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
// uint256[][]
|
||||
function abi_decode_available_length_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(offset, length, end) -> array {
|
||||
array := allocate_memory(array_allocation_size_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(length))
|
||||
let dst := array
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
mstore(array, length)
|
||||
dst := add(array, 0x20)
|
||||
shr(224, value)
|
||||
|
||||
let src := offset
|
||||
if gt(add(src, mul(length, 0x20)), end) {
|
||||
revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()
|
||||
}
|
||||
for { let i := 0 } lt(i, length) { i := add(i, 1) }
|
||||
{
|
||||
|
||||
let innerOffset := calldataload(src)
|
||||
if gt(innerOffset, 0xffffffffffffffff) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }
|
||||
let elementPos := add(offset, innerOffset)
|
||||
|
||||
mstore(dst, abi_decode_t_array$_t_uint256_$dyn_memory_ptr(elementPos, end))
|
||||
dst := add(dst, 0x20)
|
||||
src := add(src, 0x20)
|
||||
}
|
||||
}
|
||||
|
||||
// uint256[]
|
||||
function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(offset, length, end) -> array {
|
||||
array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))
|
||||
let dst := array
|
||||
|
||||
mstore(array, length)
|
||||
dst := add(array, 0x20)
|
||||
|
||||
let src := offset
|
||||
if gt(add(src, mul(length, 0x20)), end) {
|
||||
revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()
|
||||
}
|
||||
for { let i := 0 } lt(i, length) { i := add(i, 1) }
|
||||
{
|
||||
|
||||
let elementPos := src
|
||||
|
||||
mstore(dst, abi_decode_t_uint256(elementPos, end))
|
||||
dst := add(dst, 0x20)
|
||||
src := add(src, 0x20)
|
||||
}
|
||||
}
|
||||
|
||||
// uint256[][]
|
||||
function abi_decode_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(offset, end) -> array {
|
||||
if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }
|
||||
let length := calldataload(offset)
|
||||
array := abi_decode_available_length_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(add(offset, 0x20), length, end)
|
||||
}
|
||||
|
||||
// uint256[]
|
||||
function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array {
|
||||
if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }
|
||||
let length := calldataload(offset)
|
||||
array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(add(offset, 0x20), length, end)
|
||||
}
|
||||
|
||||
function abi_decode_t_enum$_E_$3(offset, end) -> value {
|
||||
value := calldataload(offset)
|
||||
validator_revert_t_enum$_E_$3(value)
|
||||
}
|
||||
|
||||
function abi_decode_t_uint256(offset, end) -> value {
|
||||
value := calldataload(offset)
|
||||
validator_revert_t_uint256(value)
|
||||
}
|
||||
|
||||
function abi_decode_tuple_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptrt_enum$_E_$3(headStart, dataEnd) -> value0, value1 {
|
||||
if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }
|
||||
|
||||
{
|
||||
|
||||
let offset := calldataload(add(headStart, 0))
|
||||
if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }
|
||||
|
||||
value0 := abi_decode_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(add(headStart, offset), dataEnd)
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
let offset := 32
|
||||
|
||||
value1 := abi_decode_t_enum$_E_$3(add(headStart, offset), dataEnd)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function abi_encode_tuple__to__fromStack(headStart ) -> tail {
|
||||
tail := add(headStart, 0)
|
||||
|
||||
}
|
||||
|
||||
function allocate_memory(size) -> memPtr {
|
||||
memPtr := allocate_unbounded()
|
||||
finalize_allocation(memPtr, size)
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function array_allocation_size_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(length) -> size {
|
||||
// Make sure we can allocate memory without overflow
|
||||
if gt(length, 0xffffffffffffffff) { panic_error_0x41() }
|
||||
|
||||
size := mul(length, 0x20)
|
||||
|
||||
// add length slot
|
||||
size := add(size, 0x20)
|
||||
|
||||
}
|
||||
|
||||
function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size {
|
||||
// Make sure we can allocate memory without overflow
|
||||
if gt(length, 0xffffffffffffffff) { panic_error_0x41() }
|
||||
|
||||
size := mul(length, 0x20)
|
||||
|
||||
// add length slot
|
||||
size := add(size, 0x20)
|
||||
|
||||
}
|
||||
|
||||
function cleanup_t_uint256(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function finalize_allocation(memPtr, size) {
|
||||
let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))
|
||||
// protect against overflow
|
||||
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }
|
||||
mstore(64, newFreePtr)
|
||||
}
|
||||
|
||||
/// @src 0:93:145
|
||||
function fun_f_14(var__7_mpos, var_e_10) {
|
||||
|
||||
}
|
||||
/// @src 0:59:147
|
||||
|
||||
function panic_error_0x41() {
|
||||
mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)
|
||||
mstore(4, 0x41)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
|
||||
function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {
|
||||
|
||||
let start := allocate_unbounded()
|
||||
let pos := start
|
||||
mstore(pos, 3963877391197344453575983046348115674221700746820753546331534351508065746944)
|
||||
pos := add(pos, 4)
|
||||
mstore(pos, 0x20)
|
||||
pos := add(pos, 0x20)
|
||||
mstore(pos, 43)
|
||||
pos := add(pos, 0x20)
|
||||
|
||||
mstore(add(pos, 0), "ABI decoding: invalid calldata a")
|
||||
|
||||
mstore(add(pos, 32), "rray offset")
|
||||
|
||||
revert(start, 132)
|
||||
|
||||
}
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
|
||||
let start := allocate_unbounded()
|
||||
let pos := start
|
||||
mstore(pos, 3963877391197344453575983046348115674221700746820753546331534351508065746944)
|
||||
pos := add(pos, 4)
|
||||
mstore(pos, 0x20)
|
||||
pos := add(pos, 0x20)
|
||||
mstore(pos, 53)
|
||||
pos := add(pos, 0x20)
|
||||
|
||||
mstore(add(pos, 0), "Contract does not have fallback ")
|
||||
|
||||
mstore(add(pos, 32), "nor receive functions")
|
||||
|
||||
revert(start, 132)
|
||||
|
||||
}
|
||||
|
||||
function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {
|
||||
|
||||
let start := allocate_unbounded()
|
||||
let pos := start
|
||||
mstore(pos, 3963877391197344453575983046348115674221700746820753546331534351508065746944)
|
||||
pos := add(pos, 4)
|
||||
mstore(pos, 0x20)
|
||||
pos := add(pos, 0x20)
|
||||
mstore(pos, 43)
|
||||
pos := add(pos, 0x20)
|
||||
|
||||
mstore(add(pos, 0), "ABI decoding: invalid calldata a")
|
||||
|
||||
mstore(add(pos, 32), "rray stride")
|
||||
|
||||
revert(start, 132)
|
||||
|
||||
}
|
||||
|
||||
function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {
|
||||
|
||||
let start := allocate_unbounded()
|
||||
let pos := start
|
||||
mstore(pos, 3963877391197344453575983046348115674221700746820753546331534351508065746944)
|
||||
pos := add(pos, 4)
|
||||
mstore(pos, 0x20)
|
||||
pos := add(pos, 0x20)
|
||||
mstore(pos, 34)
|
||||
pos := add(pos, 0x20)
|
||||
|
||||
mstore(add(pos, 0), "ABI decoding: invalid tuple offs")
|
||||
|
||||
mstore(add(pos, 32), "et")
|
||||
|
||||
revert(start, 132)
|
||||
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
|
||||
let start := allocate_unbounded()
|
||||
@ -346,25 +130,241 @@ object "C_15" {
|
||||
|
||||
}
|
||||
|
||||
function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {
|
||||
|
||||
let start := allocate_unbounded()
|
||||
let pos := start
|
||||
mstore(pos, 3963877391197344453575983046348115674221700746820753546331534351508065746944)
|
||||
pos := add(pos, 4)
|
||||
mstore(pos, 0x20)
|
||||
pos := add(pos, 0x20)
|
||||
mstore(pos, 34)
|
||||
pos := add(pos, 0x20)
|
||||
|
||||
mstore(add(pos, 0), "ABI decoding: invalid tuple offs")
|
||||
|
||||
mstore(add(pos, 32), "et")
|
||||
|
||||
revert(start, 132)
|
||||
|
||||
}
|
||||
|
||||
function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {
|
||||
|
||||
let start := allocate_unbounded()
|
||||
let pos := start
|
||||
mstore(pos, 3963877391197344453575983046348115674221700746820753546331534351508065746944)
|
||||
pos := add(pos, 4)
|
||||
mstore(pos, 0x20)
|
||||
pos := add(pos, 0x20)
|
||||
mstore(pos, 43)
|
||||
pos := add(pos, 0x20)
|
||||
|
||||
mstore(add(pos, 0), "ABI decoding: invalid calldata a")
|
||||
|
||||
mstore(add(pos, 32), "rray offset")
|
||||
|
||||
revert(start, 132)
|
||||
|
||||
}
|
||||
|
||||
function round_up_to_mul_of_32(value) -> result {
|
||||
result := and(add(value, 31), not(31))
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
function panic_error_0x41() {
|
||||
mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)
|
||||
mstore(4, 0x41)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
|
||||
shr(224, value)
|
||||
function finalize_allocation(memPtr, size) {
|
||||
let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))
|
||||
// protect against overflow
|
||||
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }
|
||||
mstore(64, newFreePtr)
|
||||
}
|
||||
|
||||
function allocate_memory(size) -> memPtr {
|
||||
memPtr := allocate_unbounded()
|
||||
finalize_allocation(memPtr, size)
|
||||
}
|
||||
|
||||
function array_allocation_size_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(length) -> size {
|
||||
// Make sure we can allocate memory without overflow
|
||||
if gt(length, 0xffffffffffffffff) { panic_error_0x41() }
|
||||
|
||||
size := mul(length, 0x20)
|
||||
|
||||
// add length slot
|
||||
size := add(size, 0x20)
|
||||
|
||||
}
|
||||
|
||||
function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {
|
||||
|
||||
let start := allocate_unbounded()
|
||||
let pos := start
|
||||
mstore(pos, 3963877391197344453575983046348115674221700746820753546331534351508065746944)
|
||||
pos := add(pos, 4)
|
||||
mstore(pos, 0x20)
|
||||
pos := add(pos, 0x20)
|
||||
mstore(pos, 43)
|
||||
pos := add(pos, 0x20)
|
||||
|
||||
mstore(add(pos, 0), "ABI decoding: invalid calldata a")
|
||||
|
||||
mstore(add(pos, 32), "rray stride")
|
||||
|
||||
revert(start, 132)
|
||||
|
||||
}
|
||||
|
||||
function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size {
|
||||
// Make sure we can allocate memory without overflow
|
||||
if gt(length, 0xffffffffffffffff) { panic_error_0x41() }
|
||||
|
||||
size := mul(length, 0x20)
|
||||
|
||||
// add length slot
|
||||
size := add(size, 0x20)
|
||||
|
||||
}
|
||||
|
||||
function cleanup_t_uint256(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function validator_revert_t_uint256(value) {
|
||||
if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }
|
||||
}
|
||||
|
||||
function abi_decode_t_uint256(offset, end) -> value {
|
||||
value := calldataload(offset)
|
||||
validator_revert_t_uint256(value)
|
||||
}
|
||||
|
||||
// uint256[]
|
||||
function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(offset, length, end) -> array {
|
||||
array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))
|
||||
let dst := array
|
||||
|
||||
mstore(array, length)
|
||||
dst := add(array, 0x20)
|
||||
|
||||
let src := offset
|
||||
if gt(add(src, mul(length, 0x20)), end) {
|
||||
revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()
|
||||
}
|
||||
for { let i := 0 } lt(i, length) { i := add(i, 1) }
|
||||
{
|
||||
|
||||
let elementPos := src
|
||||
|
||||
mstore(dst, abi_decode_t_uint256(elementPos, end))
|
||||
dst := add(dst, 0x20)
|
||||
src := add(src, 0x20)
|
||||
}
|
||||
}
|
||||
|
||||
// uint256[]
|
||||
function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array {
|
||||
if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }
|
||||
let length := calldataload(offset)
|
||||
array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(add(offset, 0x20), length, end)
|
||||
}
|
||||
|
||||
// uint256[][]
|
||||
function abi_decode_available_length_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(offset, length, end) -> array {
|
||||
array := allocate_memory(array_allocation_size_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(length))
|
||||
let dst := array
|
||||
|
||||
mstore(array, length)
|
||||
dst := add(array, 0x20)
|
||||
|
||||
let src := offset
|
||||
if gt(add(src, mul(length, 0x20)), end) {
|
||||
revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()
|
||||
}
|
||||
for { let i := 0 } lt(i, length) { i := add(i, 1) }
|
||||
{
|
||||
|
||||
let innerOffset := calldataload(src)
|
||||
if gt(innerOffset, 0xffffffffffffffff) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }
|
||||
let elementPos := add(offset, innerOffset)
|
||||
|
||||
mstore(dst, abi_decode_t_array$_t_uint256_$dyn_memory_ptr(elementPos, end))
|
||||
dst := add(dst, 0x20)
|
||||
src := add(src, 0x20)
|
||||
}
|
||||
}
|
||||
|
||||
// uint256[][]
|
||||
function abi_decode_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(offset, end) -> array {
|
||||
if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }
|
||||
let length := calldataload(offset)
|
||||
array := abi_decode_available_length_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(add(offset, 0x20), length, end)
|
||||
}
|
||||
|
||||
function validator_revert_t_enum$_E_$3(value) {
|
||||
if iszero(lt(value, 1)) { revert(0, 0) }
|
||||
}
|
||||
|
||||
function validator_revert_t_uint256(value) {
|
||||
if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }
|
||||
function abi_decode_t_enum$_E_$3(offset, end) -> value {
|
||||
value := calldataload(offset)
|
||||
validator_revert_t_enum$_E_$3(value)
|
||||
}
|
||||
|
||||
function abi_decode_tuple_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptrt_enum$_E_$3(headStart, dataEnd) -> value0, value1 {
|
||||
if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }
|
||||
|
||||
{
|
||||
|
||||
let offset := calldataload(add(headStart, 0))
|
||||
if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }
|
||||
|
||||
value0 := abi_decode_t_array$_t_array$_t_uint256_$dyn_memory_ptr_$dyn_memory_ptr(add(headStart, offset), dataEnd)
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
let offset := 32
|
||||
|
||||
value1 := abi_decode_t_enum$_E_$3(add(headStart, offset), dataEnd)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function abi_encode_tuple__to__fromStack(headStart ) -> tail {
|
||||
tail := add(headStart, 0)
|
||||
|
||||
}
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
|
||||
let start := allocate_unbounded()
|
||||
let pos := start
|
||||
mstore(pos, 3963877391197344453575983046348115674221700746820753546331534351508065746944)
|
||||
pos := add(pos, 4)
|
||||
mstore(pos, 0x20)
|
||||
pos := add(pos, 0x20)
|
||||
mstore(pos, 53)
|
||||
pos := add(pos, 0x20)
|
||||
|
||||
mstore(add(pos, 0), "Contract does not have fallback ")
|
||||
|
||||
mstore(add(pos, 32), "nor receive functions")
|
||||
|
||||
revert(start, 132)
|
||||
|
||||
}
|
||||
|
||||
/// @src 0:93:145
|
||||
function fun_f_14(var__7_mpos, var_e_10) {
|
||||
|
||||
}
|
||||
/// @src 0:59:147
|
||||
|
||||
}
|
||||
|
||||
data ".metadata" hex"<BYTECODE REMOVED>"
|
||||
|
@ -1 +1 @@
|
||||
{"contracts":{"a.sol":{"A":{"evm":{"bytecode":{"functionDebugData":{}},"deployedBytecode":{"functionDebugData":{"@f_19":{"entryPoint":96,"id":19,"parameterSlots":1,"returnSlots":1},"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":171,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":283,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":329,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":350,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":423,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":438,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":465,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":492,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":502,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":546,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":632,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":642,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":691,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":738,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":785,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":832,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":837,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":842,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":847,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":852,"id":null,"parameterSlots":1,"returnSlots":1},"validator_revert_t_uint256":{"entryPoint":869,"id":null,"parameterSlots":1,"returnSlots":0}}}}}}},"sources":{"a.sol":{"id":0}}}
|
||||
{"contracts":{"a.sol":{"A":{"evm":{"bytecode":{"functionDebugData":{}},"deployedBytecode":{"functionDebugData":{"@f_19":{"entryPoint":96,"id":19,"parameterSlots":1,"returnSlots":1},"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":439,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":551,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":418,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":597,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":670,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":685,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":309,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":171,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":336,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":806,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":385,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":260,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":759,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":712,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":213,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":191,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":380,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":186,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":181,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":196,"id":null,"parameterSlots":1,"returnSlots":1},"validator_revert_t_uint256":{"entryPoint":395,"id":null,"parameterSlots":1,"returnSlots":0}}}}}}},"sources":{"a.sol":{"id":0}}}
|
||||
|
File diff suppressed because one or more lines are too long
@ -20,10 +20,10 @@ object \"C_7\" {
|
||||
return(_1, datasize(\"C_7_deployed\"))
|
||||
function allocate_unbounded() -> memPtr
|
||||
{ memPtr := mload(64) }
|
||||
function constructor_C_7()
|
||||
{ }
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb()
|
||||
{ revert(0, 0) }
|
||||
function constructor_C_7()
|
||||
{ }
|
||||
}
|
||||
/// @use-src 0:\"A\"
|
||||
object \"C_7_deployed\" {
|
||||
@ -49,6 +49,14 @@ object \"C_7\" {
|
||||
}
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
function shift_right_224_unsigned(value) -> newValue
|
||||
{ newValue := shr(224, value) }
|
||||
function allocate_unbounded() -> memPtr
|
||||
{ memPtr := mload(64) }
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb()
|
||||
{ revert(0, 0) }
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b()
|
||||
{ revert(0, 0) }
|
||||
function abi_decode_tuple_(headStart, dataEnd)
|
||||
{
|
||||
if slt(sub(dataEnd, headStart), 0)
|
||||
@ -58,20 +66,11 @@ object \"C_7\" {
|
||||
}
|
||||
function abi_encode_tuple__to__fromStack(headStart) -> tail
|
||||
{ tail := add(headStart, 0) }
|
||||
function allocate_unbounded() -> memPtr
|
||||
{ memPtr := mload(64) }
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
{ revert(0, 0) }
|
||||
/// @src 0:92:119
|
||||
function fun_f_6()
|
||||
{ }
|
||||
/// @src 0:79:121
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
{ revert(0, 0) }
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb()
|
||||
{ revert(0, 0) }
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b()
|
||||
{ revert(0, 0) }
|
||||
function shift_right_224_unsigned(value) -> newValue
|
||||
{ newValue := shr(224, value) }
|
||||
}
|
||||
data \".metadata\" hex\"<BYTECODE REMOVED>\"
|
||||
}
|
||||
|
@ -24,6 +24,10 @@ object \"C_7\" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:79:121
|
||||
function constructor_C_7() {
|
||||
|
||||
@ -32,10 +36,6 @@ object \"C_7\" {
|
||||
}
|
||||
/// @src 0:79:121
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
}
|
||||
/// @use-src 0:\"A\"
|
||||
object \"C_7_deployed\" {
|
||||
@ -65,13 +65,10 @@ object \"C_7\" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
function abi_decode_tuple_(headStart, dataEnd) {
|
||||
if slt(sub(dataEnd, headStart), 0) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
}
|
||||
|
||||
function abi_encode_tuple__to__fromStack(headStart ) -> tail {
|
||||
tail := add(headStart, 0)
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
@ -79,16 +76,6 @@ object \"C_7\" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
/// @src 0:92:119
|
||||
function fun_f_6() {
|
||||
|
||||
}
|
||||
/// @src 0:79:121
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
@ -97,13 +84,26 @@ object \"C_7\" {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
function abi_decode_tuple_(headStart, dataEnd) {
|
||||
if slt(sub(dataEnd, headStart), 0) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }
|
||||
|
||||
}
|
||||
|
||||
function abi_encode_tuple__to__fromStack(headStart ) -> tail {
|
||||
tail := add(headStart, 0)
|
||||
|
||||
}
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:92:119
|
||||
function fun_f_6() {
|
||||
|
||||
}
|
||||
/// @src 0:79:121
|
||||
|
||||
}
|
||||
|
||||
data \".metadata\" hex\"<BYTECODE REMOVED>\"
|
||||
|
File diff suppressed because one or more lines are too long
@ -24,6 +24,10 @@ object \"C_3\" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:79:92
|
||||
function constructor_C_3() {
|
||||
|
||||
@ -32,10 +36,6 @@ object \"C_3\" {
|
||||
}
|
||||
/// @src 0:79:92
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
}
|
||||
/// @use-src 0:\"A\"
|
||||
object \"C_3_deployed\" {
|
||||
@ -53,6 +53,13 @@ object \"C_3\" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
@ -61,13 +68,6 @@ object \"C_3\" {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data \".metadata\" hex\"<BYTECODE REMOVED>\"
|
||||
@ -101,6 +101,10 @@ object \"D_16\" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:93:146
|
||||
function constructor_D_16() {
|
||||
|
||||
@ -109,10 +113,6 @@ object \"D_16\" {
|
||||
}
|
||||
/// @src 0:93:146
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
}
|
||||
/// @use-src 0:\"A\"
|
||||
object \"D_16_deployed\" {
|
||||
@ -142,6 +142,25 @@ object \"D_16\" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function abi_decode_tuple_(headStart, dataEnd) {
|
||||
if slt(sub(dataEnd, headStart), 0) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }
|
||||
|
||||
@ -152,8 +171,20 @@ object \"D_16\" {
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function panic_error_0x41() {
|
||||
mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)
|
||||
mstore(4, 0x41)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
|
||||
function revert_forward_1() {
|
||||
let pos := allocate_unbounded()
|
||||
returndatacopy(pos, 0, returndatasize())
|
||||
revert(pos, returndatasize())
|
||||
}
|
||||
|
||||
/// @src 0:106:144
|
||||
@ -176,37 +207,6 @@ object \"D_16\" {
|
||||
}
|
||||
/// @src 0:93:146
|
||||
|
||||
function panic_error_0x41() {
|
||||
mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)
|
||||
mstore(4, 0x41)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_forward_1() {
|
||||
let pos := allocate_unbounded()
|
||||
returndatacopy(pos, 0, returndatasize())
|
||||
revert(pos, returndatasize())
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
/*=====================================================*
|
||||
* WARNING *
|
||||
@ -233,6 +233,10 @@ object \"D_16\" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:79:92
|
||||
function constructor_C_3() {
|
||||
|
||||
@ -241,10 +245,6 @@ object \"D_16\" {
|
||||
}
|
||||
/// @src 0:79:92
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
}
|
||||
/// @use-src 0:\"A\"
|
||||
object \"C_3_deployed\" {
|
||||
@ -262,6 +262,13 @@ object \"D_16\" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
@ -270,13 +277,6 @@ object \"D_16\" {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data \".metadata\" hex\"<BYTECODE REMOVED>\"
|
||||
|
@ -25,6 +25,10 @@ object "test_11" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:79:169
|
||||
function constructor_test_11() {
|
||||
|
||||
@ -33,10 +37,6 @@ object "test_11" {
|
||||
}
|
||||
/// @src 0:79:169
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
}
|
||||
/// @use-src 0:"viair_abicoder_v1/input.sol"
|
||||
object "test_11_deployed" {
|
||||
@ -66,11 +66,34 @@ object "test_11" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function abi_decode_tuple_(headStart, dataEnd) {
|
||||
if slt(sub(dataEnd, headStart), 0) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }
|
||||
|
||||
}
|
||||
|
||||
function cleanup_t_bool(value) -> cleaned {
|
||||
cleaned := iszero(iszero(value))
|
||||
}
|
||||
|
||||
function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {
|
||||
mstore(pos, cleanup_t_bool(value))
|
||||
}
|
||||
@ -82,12 +105,12 @@ object "test_11" {
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function cleanup_t_bool(value) -> cleaned {
|
||||
cleaned := iszero(iszero(value))
|
||||
function zero_value_for_split_t_bool() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
/// @src 0:99:167
|
||||
@ -105,29 +128,6 @@ object "test_11" {
|
||||
}
|
||||
/// @src 0:79:169
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function zero_value_for_split_t_bool() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data ".metadata" hex"<BYTECODE REMOVED>"
|
||||
|
@ -39,10 +39,10 @@ object "C_7" {
|
||||
pop(iszero(calldatasize()))
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
}
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
{ revert(0, 0) }
|
||||
function shift_right_unsigned(value) -> newValue
|
||||
{ newValue := shr(224, value) }
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
{ revert(0, 0) }
|
||||
}
|
||||
data ".metadata" hex"<BYTECODE REMOVED>"
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -55,6 +55,7 @@ tag_3:
|
||||
mload(0xa0)
|
||||
/* \"C\":147:149 42 */
|
||||
mstore(0x80, 0x2a)
|
||||
/* \"C\":203:219 stateVar = _init */
|
||||
0x00
|
||||
/* \"C\":79:428 contract C... */
|
||||
sstore
|
||||
@ -186,26 +187,11 @@ sub_0: assembly {
|
||||
tag_23:
|
||||
pop
|
||||
jump\t// out
|
||||
tag_24:
|
||||
0x00
|
||||
0x20
|
||||
dup3
|
||||
dup5
|
||||
sub
|
||||
slt
|
||||
iszero
|
||||
tag_26
|
||||
jumpi
|
||||
0x00
|
||||
dup1
|
||||
revert
|
||||
tag_26:
|
||||
pop
|
||||
mload
|
||||
swap2
|
||||
swap1
|
||||
pop
|
||||
jump\t// out
|
||||
/* \"C\":117:119 41 */
|
||||
tag_25:
|
||||
mstore(0x00, shl(0xe0, 0x4e487b71))
|
||||
mstore(0x04, 0x11)
|
||||
revert(0x00, 0x24)
|
||||
tag_10:
|
||||
0x00
|
||||
sub(shl(0xff, 0x01), 0x2a)
|
||||
@ -214,20 +200,18 @@ sub_0: assembly {
|
||||
0x01
|
||||
and
|
||||
iszero
|
||||
tag_30
|
||||
tag_29
|
||||
jumpi
|
||||
tag_30
|
||||
tag_31
|
||||
tag_29
|
||||
tag_25
|
||||
jump\t// in
|
||||
tag_30:
|
||||
tag_29:
|
||||
pop
|
||||
/* \"C\":117:119 41 */
|
||||
0x29
|
||||
/* \"C\":79:428 contract C... */
|
||||
add
|
||||
swap1
|
||||
jump\t// out
|
||||
tag_32:
|
||||
tag_30:
|
||||
0x00
|
||||
dup1
|
||||
dup3
|
||||
@ -242,12 +226,12 @@ sub_0: assembly {
|
||||
sgt
|
||||
and
|
||||
iszero
|
||||
tag_35
|
||||
tag_33
|
||||
jumpi
|
||||
tag_35
|
||||
tag_31
|
||||
tag_33
|
||||
tag_25
|
||||
jump\t// in
|
||||
tag_35:
|
||||
tag_33:
|
||||
shl(0xff, 0x01)
|
||||
dup4
|
||||
swap1
|
||||
@ -257,12 +241,12 @@ sub_0: assembly {
|
||||
dup2
|
||||
and
|
||||
iszero
|
||||
tag_37
|
||||
tag_35
|
||||
jumpi
|
||||
tag_37
|
||||
tag_31
|
||||
tag_35
|
||||
tag_25
|
||||
jump\t// in
|
||||
tag_37:
|
||||
tag_35:
|
||||
pop
|
||||
pop
|
||||
add
|
||||
@ -282,13 +266,15 @@ sub_0: assembly {
|
||||
dup2
|
||||
eq
|
||||
iszero
|
||||
tag_40
|
||||
tag_38
|
||||
jumpi
|
||||
tag_40
|
||||
tag_31
|
||||
tag_38
|
||||
tag_25
|
||||
jump\t// in
|
||||
tag_40:
|
||||
tag_38:
|
||||
/* \"C\":117:119 41 */
|
||||
0x01
|
||||
/* \"C\":79:428 contract C... */
|
||||
add
|
||||
dup1
|
||||
dup3
|
||||
@ -297,14 +283,14 @@ sub_0: assembly {
|
||||
address
|
||||
/* \"C\":403:411 this.f() */
|
||||
extcodesize
|
||||
tag_41
|
||||
tag_39
|
||||
jumpi
|
||||
/* \"C\":79:428 contract C... */
|
||||
dup2
|
||||
dup3
|
||||
revert
|
||||
/* \"C\":403:411 this.f() */
|
||||
tag_41:
|
||||
tag_39:
|
||||
/* \"C\":79:428 contract C... */
|
||||
mload(0x40)
|
||||
shl(0xe4, 0x026121ff)
|
||||
@ -324,7 +310,7 @@ sub_0: assembly {
|
||||
gas
|
||||
staticcall
|
||||
dup1
|
||||
tag_42
|
||||
tag_40
|
||||
jumpi
|
||||
/* \"C\":79:428 contract C... */
|
||||
mload(0x40)
|
||||
@ -336,13 +322,13 @@ sub_0: assembly {
|
||||
dup2
|
||||
revert
|
||||
/* \"C\":403:411 this.f() */
|
||||
tag_42:
|
||||
tag_40:
|
||||
/* \"C\":79:428 contract C... */
|
||||
dup4
|
||||
/* \"C\":403:411 this.f() */
|
||||
dup2
|
||||
iszero
|
||||
tag_43
|
||||
tag_41
|
||||
jumpi
|
||||
returndatasize
|
||||
/* \"C\":79:428 contract C... */
|
||||
@ -350,7 +336,6 @@ sub_0: assembly {
|
||||
add
|
||||
not(0x1f)
|
||||
and
|
||||
/* \"C\":117:119 41 */
|
||||
dup4
|
||||
add
|
||||
0xffffffffffffffff
|
||||
@ -361,10 +346,9 @@ sub_0: assembly {
|
||||
lt
|
||||
or
|
||||
iszero
|
||||
tag_44
|
||||
tag_42
|
||||
jumpi
|
||||
shl(0xe0, 0x4e487b71)
|
||||
/* \"C\":79:428 contract C... */
|
||||
dup7
|
||||
mstore
|
||||
0x41
|
||||
@ -375,31 +359,28 @@ sub_0: assembly {
|
||||
0x24
|
||||
dup7
|
||||
revert
|
||||
/* \"C\":117:119 41 */
|
||||
tag_44:
|
||||
/* \"C\":79:428 contract C... */
|
||||
tag_42:
|
||||
0x40
|
||||
/* \"C\":117:119 41 */
|
||||
mstore
|
||||
/* \"C\":403:411 this.f() */
|
||||
tag_45
|
||||
tag_43
|
||||
returndatasize
|
||||
dup5
|
||||
add
|
||||
dup5
|
||||
tag_24
|
||||
tag_44
|
||||
jump\t// in
|
||||
tag_45:
|
||||
tag_43:
|
||||
swap1
|
||||
pop
|
||||
tag_43:
|
||||
tag_41:
|
||||
/* \"C\":392:411 stateVar + this.f() */
|
||||
tag_46
|
||||
tag_45
|
||||
dup2
|
||||
dup6
|
||||
tag_32
|
||||
tag_30
|
||||
jump\t// in
|
||||
tag_46:
|
||||
tag_45:
|
||||
swap5
|
||||
pop
|
||||
pop
|
||||
@ -407,14 +388,14 @@ sub_0: assembly {
|
||||
pop
|
||||
pop
|
||||
/* \"C\":392:422 stateVar + this.f() + immutVar */
|
||||
tag_47
|
||||
tag_46
|
||||
/* \"C\":414:422 immutVar */
|
||||
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
|
||||
/* \"C\":392:422 stateVar + this.f() + immutVar */
|
||||
dup3
|
||||
tag_32
|
||||
tag_30
|
||||
jump\t// in
|
||||
tag_47:
|
||||
tag_46:
|
||||
/* \"C\":336:337 _ */
|
||||
swap2
|
||||
pop
|
||||
@ -423,10 +404,26 @@ sub_0: assembly {
|
||||
swap1
|
||||
jump\t// out
|
||||
/* \"C\":79:428 contract C... */
|
||||
tag_31:
|
||||
mstore(0x00, shl(0xe0, 0x4e487b71))
|
||||
mstore(0x04, 0x11)
|
||||
revert(0x00, 0x24)
|
||||
tag_44:
|
||||
0x00
|
||||
0x20
|
||||
dup3
|
||||
dup5
|
||||
sub
|
||||
slt
|
||||
iszero
|
||||
tag_48
|
||||
jumpi
|
||||
0x00
|
||||
dup1
|
||||
revert
|
||||
tag_48:
|
||||
pop
|
||||
mload
|
||||
swap2
|
||||
swap1
|
||||
pop
|
||||
jump\t// out
|
||||
|
||||
auxdata: <AUXDATA REMOVED>
|
||||
}
|
||||
@ -506,6 +503,7 @@ tag_5:
|
||||
mstore(0x80, 0x2a)
|
||||
/* \"D\":107:108 3 */
|
||||
0x03
|
||||
/* \"C\":203:219 stateVar = _init */
|
||||
0x00
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
sstore
|
||||
@ -517,15 +515,25 @@ tag_5:
|
||||
iszero
|
||||
tag_8
|
||||
jumpi
|
||||
mstore(0x00, shl(0xe0, 0x4e487b71))
|
||||
shl(0xe0, 0x4e487b71)
|
||||
/* \"C\":203:219 stateVar = _init */
|
||||
0x00
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
mstore
|
||||
mstore(0x04, 0x11)
|
||||
revert(0x00, 0x24)
|
||||
0x24
|
||||
/* \"C\":203:219 stateVar = _init */
|
||||
0x00
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
revert
|
||||
tag_8:
|
||||
/* \"D\":107:108 3 */
|
||||
0x03
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
add
|
||||
/* \"C\":203:219 stateVar = _init */
|
||||
0x00
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
sstore
|
||||
/* \"D\":113:164 constructor(int _init2)... */
|
||||
jump\t// out
|
||||
@ -641,26 +649,11 @@ sub_0: assembly {
|
||||
tag_23:
|
||||
pop
|
||||
jump\t// out
|
||||
tag_24:
|
||||
0x00
|
||||
0x20
|
||||
dup3
|
||||
dup5
|
||||
sub
|
||||
slt
|
||||
iszero
|
||||
tag_26
|
||||
jumpi
|
||||
0x00
|
||||
dup1
|
||||
revert
|
||||
tag_26:
|
||||
pop
|
||||
mload
|
||||
swap2
|
||||
swap1
|
||||
pop
|
||||
jump\t// out
|
||||
/* \"C\":117:119 41 */
|
||||
tag_25:
|
||||
mstore(0x00, shl(0xe0, 0x4e487b71))
|
||||
mstore(0x04, 0x11)
|
||||
revert(0x00, 0x24)
|
||||
tag_10:
|
||||
0x00
|
||||
sub(shl(0xff, 0x01), 0x2a)
|
||||
@ -669,20 +662,18 @@ sub_0: assembly {
|
||||
0x01
|
||||
and
|
||||
iszero
|
||||
tag_30
|
||||
tag_29
|
||||
jumpi
|
||||
tag_30
|
||||
tag_31
|
||||
tag_29
|
||||
tag_25
|
||||
jump\t// in
|
||||
tag_30:
|
||||
tag_29:
|
||||
pop
|
||||
/* \"C\":117:119 41 */
|
||||
0x29
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
add
|
||||
swap1
|
||||
jump\t// out
|
||||
tag_32:
|
||||
tag_30:
|
||||
0x00
|
||||
dup1
|
||||
dup3
|
||||
@ -697,12 +688,12 @@ sub_0: assembly {
|
||||
sgt
|
||||
and
|
||||
iszero
|
||||
tag_35
|
||||
tag_33
|
||||
jumpi
|
||||
tag_35
|
||||
tag_31
|
||||
tag_33
|
||||
tag_25
|
||||
jump\t// in
|
||||
tag_35:
|
||||
tag_33:
|
||||
shl(0xff, 0x01)
|
||||
dup4
|
||||
swap1
|
||||
@ -712,12 +703,12 @@ sub_0: assembly {
|
||||
dup2
|
||||
and
|
||||
iszero
|
||||
tag_37
|
||||
tag_35
|
||||
jumpi
|
||||
tag_37
|
||||
tag_31
|
||||
tag_35
|
||||
tag_25
|
||||
jump\t// in
|
||||
tag_37:
|
||||
tag_35:
|
||||
pop
|
||||
pop
|
||||
add
|
||||
@ -737,13 +728,15 @@ sub_0: assembly {
|
||||
dup2
|
||||
eq
|
||||
iszero
|
||||
tag_40
|
||||
tag_38
|
||||
jumpi
|
||||
tag_40
|
||||
tag_31
|
||||
tag_38
|
||||
tag_25
|
||||
jump\t// in
|
||||
tag_40:
|
||||
tag_38:
|
||||
/* \"C\":117:119 41 */
|
||||
0x01
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
add
|
||||
dup1
|
||||
dup3
|
||||
@ -752,14 +745,14 @@ sub_0: assembly {
|
||||
address
|
||||
/* \"C\":403:411 this.f() */
|
||||
extcodesize
|
||||
tag_41
|
||||
tag_39
|
||||
jumpi
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
dup2
|
||||
dup3
|
||||
revert
|
||||
/* \"C\":403:411 this.f() */
|
||||
tag_41:
|
||||
tag_39:
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
mload(0x40)
|
||||
shl(0xe4, 0x026121ff)
|
||||
@ -779,7 +772,7 @@ sub_0: assembly {
|
||||
gas
|
||||
staticcall
|
||||
dup1
|
||||
tag_42
|
||||
tag_40
|
||||
jumpi
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
mload(0x40)
|
||||
@ -791,13 +784,13 @@ sub_0: assembly {
|
||||
dup2
|
||||
revert
|
||||
/* \"C\":403:411 this.f() */
|
||||
tag_42:
|
||||
tag_40:
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
dup4
|
||||
/* \"C\":403:411 this.f() */
|
||||
dup2
|
||||
iszero
|
||||
tag_43
|
||||
tag_41
|
||||
jumpi
|
||||
returndatasize
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
@ -805,7 +798,6 @@ sub_0: assembly {
|
||||
add
|
||||
not(0x1f)
|
||||
and
|
||||
/* \"C\":117:119 41 */
|
||||
dup4
|
||||
add
|
||||
0xffffffffffffffff
|
||||
@ -816,10 +808,9 @@ sub_0: assembly {
|
||||
lt
|
||||
or
|
||||
iszero
|
||||
tag_44
|
||||
tag_42
|
||||
jumpi
|
||||
shl(0xe0, 0x4e487b71)
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
dup7
|
||||
mstore
|
||||
0x41
|
||||
@ -830,31 +821,28 @@ sub_0: assembly {
|
||||
0x24
|
||||
dup7
|
||||
revert
|
||||
/* \"C\":117:119 41 */
|
||||
tag_44:
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
tag_42:
|
||||
0x40
|
||||
/* \"C\":117:119 41 */
|
||||
mstore
|
||||
/* \"C\":403:411 this.f() */
|
||||
tag_45
|
||||
tag_43
|
||||
returndatasize
|
||||
dup5
|
||||
add
|
||||
dup5
|
||||
tag_24
|
||||
tag_44
|
||||
jump\t// in
|
||||
tag_45:
|
||||
tag_43:
|
||||
swap1
|
||||
pop
|
||||
tag_43:
|
||||
tag_41:
|
||||
/* \"C\":392:411 stateVar + this.f() */
|
||||
tag_46
|
||||
tag_45
|
||||
dup2
|
||||
dup6
|
||||
tag_32
|
||||
tag_30
|
||||
jump\t// in
|
||||
tag_46:
|
||||
tag_45:
|
||||
swap5
|
||||
pop
|
||||
pop
|
||||
@ -862,14 +850,14 @@ sub_0: assembly {
|
||||
pop
|
||||
pop
|
||||
/* \"C\":392:422 stateVar + this.f() + immutVar */
|
||||
tag_47
|
||||
tag_46
|
||||
/* \"C\":414:422 immutVar */
|
||||
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
|
||||
/* \"C\":392:422 stateVar + this.f() + immutVar */
|
||||
dup3
|
||||
tag_32
|
||||
tag_30
|
||||
jump\t// in
|
||||
tag_47:
|
||||
tag_46:
|
||||
/* \"C\":336:337 _ */
|
||||
swap2
|
||||
pop
|
||||
@ -878,10 +866,26 @@ sub_0: assembly {
|
||||
swap1
|
||||
jump\t// out
|
||||
/* \"D\":91:166 contract D is C(3)... */
|
||||
tag_31:
|
||||
mstore(0x00, shl(0xe0, 0x4e487b71))
|
||||
mstore(0x04, 0x11)
|
||||
revert(0x00, 0x24)
|
||||
tag_44:
|
||||
0x00
|
||||
0x20
|
||||
dup3
|
||||
dup5
|
||||
sub
|
||||
slt
|
||||
iszero
|
||||
tag_48
|
||||
jumpi
|
||||
0x00
|
||||
dup1
|
||||
revert
|
||||
tag_48:
|
||||
pop
|
||||
mload
|
||||
swap2
|
||||
swap1
|
||||
pop
|
||||
jump\t// out
|
||||
|
||||
auxdata: <AUXDATA REMOVED>
|
||||
}
|
||||
|
@ -24,6 +24,10 @@ object \"C_11\" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:78:164
|
||||
function constructor_C_11() {
|
||||
|
||||
@ -32,10 +36,6 @@ object \"C_11\" {
|
||||
}
|
||||
/// @src 0:78:164
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
}
|
||||
/// @use-src 0:\"A\"
|
||||
object \"C_11_deployed\" {
|
||||
@ -65,11 +65,58 @@ object \"C_11\" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function abi_decode_tuple_(headStart, dataEnd) {
|
||||
if slt(sub(dataEnd, headStart), 0) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }
|
||||
|
||||
}
|
||||
|
||||
function array_length_t_string_memory_ptr(value) -> length {
|
||||
|
||||
length := mload(value)
|
||||
|
||||
}
|
||||
|
||||
function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {
|
||||
mstore(pos, length)
|
||||
updated_pos := add(pos, 0x20)
|
||||
}
|
||||
|
||||
function copy_memory_to_memory(src, dst, length) {
|
||||
let i := 0
|
||||
for { } lt(i, length) { i := add(i, 32) }
|
||||
{
|
||||
mstore(add(dst, i), mload(add(src, i)))
|
||||
}
|
||||
if gt(i, length)
|
||||
{
|
||||
// clear end
|
||||
mstore(add(dst, length), 0)
|
||||
}
|
||||
}
|
||||
|
||||
function round_up_to_mul_of_32(value) -> result {
|
||||
result := and(add(value, 31), not(31))
|
||||
}
|
||||
|
||||
function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {
|
||||
let length := array_length_t_string_memory_ptr(value)
|
||||
pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)
|
||||
@ -85,23 +132,32 @@ object \"C_11\" {
|
||||
|
||||
}
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function zero_value_for_split_t_string_memory_ptr() -> ret {
|
||||
ret := 96
|
||||
}
|
||||
|
||||
function panic_error_0x41() {
|
||||
mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)
|
||||
mstore(4, 0x41)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
|
||||
function finalize_allocation(memPtr, size) {
|
||||
let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))
|
||||
// protect against overflow
|
||||
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }
|
||||
mstore(64, newFreePtr)
|
||||
}
|
||||
|
||||
function allocate_memory(size) -> memPtr {
|
||||
memPtr := allocate_unbounded()
|
||||
finalize_allocation(memPtr, size)
|
||||
}
|
||||
|
||||
function allocate_memory_array_t_string_memory_ptr(length) -> memPtr {
|
||||
let allocSize := array_allocation_size_t_string_memory_ptr(length)
|
||||
memPtr := allocate_memory(allocSize)
|
||||
|
||||
mstore(memPtr, length)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function array_allocation_size_t_string_memory_ptr(length) -> size {
|
||||
// Make sure we can allocate memory without overflow
|
||||
if gt(length, 0xffffffffffffffff) { panic_error_0x41() }
|
||||
@ -113,19 +169,18 @@ object \"C_11\" {
|
||||
|
||||
}
|
||||
|
||||
function array_length_t_string_memory_ptr(value) -> length {
|
||||
function allocate_memory_array_t_string_memory_ptr(length) -> memPtr {
|
||||
let allocSize := array_allocation_size_t_string_memory_ptr(length)
|
||||
memPtr := allocate_memory(allocSize)
|
||||
|
||||
length := mload(value)
|
||||
mstore(memPtr, length)
|
||||
|
||||
}
|
||||
|
||||
function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {
|
||||
mstore(pos, length)
|
||||
updated_pos := add(pos, 0x20)
|
||||
}
|
||||
function store_literal_in_memory_9f0adad0a59b05d2e04a1373342b10b9eb16c57c164c8a3bfcbf46dccee39a21(memPtr) {
|
||||
|
||||
mstore(add(memPtr, 0), \"abcabc\")
|
||||
|
||||
function convert_t_stringliteral_9f0adad0a59b05d2e04a1373342b10b9eb16c57c164c8a3bfcbf46dccee39a21_to_t_string_memory_ptr() -> converted {
|
||||
converted := copy_literal_to_memory_9f0adad0a59b05d2e04a1373342b10b9eb16c57c164c8a3bfcbf46dccee39a21()
|
||||
}
|
||||
|
||||
function copy_literal_to_memory_9f0adad0a59b05d2e04a1373342b10b9eb16c57c164c8a3bfcbf46dccee39a21() -> memPtr {
|
||||
@ -133,24 +188,8 @@ object \"C_11\" {
|
||||
store_literal_in_memory_9f0adad0a59b05d2e04a1373342b10b9eb16c57c164c8a3bfcbf46dccee39a21(add(memPtr, 32))
|
||||
}
|
||||
|
||||
function copy_memory_to_memory(src, dst, length) {
|
||||
let i := 0
|
||||
for { } lt(i, length) { i := add(i, 32) }
|
||||
{
|
||||
mstore(add(dst, i), mload(add(src, i)))
|
||||
}
|
||||
if gt(i, length)
|
||||
{
|
||||
// clear end
|
||||
mstore(add(dst, length), 0)
|
||||
}
|
||||
}
|
||||
|
||||
function finalize_allocation(memPtr, size) {
|
||||
let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))
|
||||
// protect against overflow
|
||||
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }
|
||||
mstore(64, newFreePtr)
|
||||
function convert_t_stringliteral_9f0adad0a59b05d2e04a1373342b10b9eb16c57c164c8a3bfcbf46dccee39a21_to_t_string_memory_ptr() -> converted {
|
||||
converted := copy_literal_to_memory_9f0adad0a59b05d2e04a1373342b10b9eb16c57c164c8a3bfcbf46dccee39a21()
|
||||
}
|
||||
|
||||
/// @src 0:91:162
|
||||
@ -166,45 +205,6 @@ object \"C_11\" {
|
||||
}
|
||||
/// @src 0:78:164
|
||||
|
||||
function panic_error_0x41() {
|
||||
mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)
|
||||
mstore(4, 0x41)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function round_up_to_mul_of_32(value) -> result {
|
||||
result := and(add(value, 31), not(31))
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function store_literal_in_memory_9f0adad0a59b05d2e04a1373342b10b9eb16c57c164c8a3bfcbf46dccee39a21(memPtr) {
|
||||
|
||||
mstore(add(memPtr, 0), \"abcabc\")
|
||||
|
||||
}
|
||||
|
||||
function zero_value_for_split_t_string_memory_ptr() -> ret {
|
||||
ret := 96
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data \".metadata\" hex\"<BYTECODE REMOVED>\"
|
||||
|
@ -24,6 +24,10 @@ object \"C_11\" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:78:158
|
||||
function constructor_C_11() {
|
||||
|
||||
@ -32,10 +36,6 @@ object \"C_11\" {
|
||||
}
|
||||
/// @src 0:78:158
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
}
|
||||
/// @use-src 0:\"A\"
|
||||
object \"C_11_deployed\" {
|
||||
@ -65,11 +65,34 @@ object \"C_11\" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function abi_decode_tuple_(headStart, dataEnd) {
|
||||
if slt(sub(dataEnd, headStart), 0) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }
|
||||
|
||||
}
|
||||
|
||||
function cleanup_t_bytes32(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {
|
||||
mstore(pos, cleanup_t_bytes32(value))
|
||||
}
|
||||
@ -81,12 +104,12 @@ object \"C_11\" {
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function cleanup_t_bytes32(value) -> cleaned {
|
||||
cleaned := value
|
||||
function zero_value_for_split_t_bytes32() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
function convert_t_stringliteral_9f0adad0a59b05d2e04a1373342b10b9eb16c57c164c8a3bfcbf46dccee39a21_to_t_bytes32() -> converted {
|
||||
@ -106,29 +129,6 @@ object \"C_11\" {
|
||||
}
|
||||
/// @src 0:78:158
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function zero_value_for_split_t_bytes32() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data \".metadata\" hex\"<BYTECODE REMOVED>\"
|
||||
|
@ -24,6 +24,10 @@ object \"C_11\" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:78:159
|
||||
function constructor_C_11() {
|
||||
|
||||
@ -32,10 +36,6 @@ object \"C_11\" {
|
||||
}
|
||||
/// @src 0:78:159
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
}
|
||||
/// @use-src 0:\"A\"
|
||||
object \"C_11_deployed\" {
|
||||
@ -65,11 +65,34 @@ object \"C_11\" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function abi_decode_tuple_(headStart, dataEnd) {
|
||||
if slt(sub(dataEnd, headStart), 0) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }
|
||||
|
||||
}
|
||||
|
||||
function cleanup_t_bytes4(value) -> cleaned {
|
||||
cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)
|
||||
}
|
||||
|
||||
function abi_encode_t_bytes4_to_t_bytes4_fromStack(value, pos) {
|
||||
mstore(pos, cleanup_t_bytes4(value))
|
||||
}
|
||||
@ -81,18 +104,25 @@ object \"C_11\" {
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function cleanup_t_bytes4(value) -> cleaned {
|
||||
cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)
|
||||
function zero_value_for_split_t_bytes4() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
function cleanup_t_rational_1633837924_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function shift_left_224(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shl(224, value)
|
||||
|
||||
}
|
||||
|
||||
function convert_t_rational_1633837924_by_1_to_t_bytes4(value) -> converted {
|
||||
converted := cleanup_t_bytes4(shift_left_224(cleanup_t_rational_1633837924_by_1(value)))
|
||||
}
|
||||
@ -112,36 +142,6 @@ object \"C_11\" {
|
||||
}
|
||||
/// @src 0:78:159
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function shift_left_224(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shl(224, value)
|
||||
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function zero_value_for_split_t_bytes4() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data \".metadata\" hex\"<BYTECODE REMOVED>\"
|
||||
|
@ -24,6 +24,10 @@ object \"C_11\" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:78:243
|
||||
function constructor_C_11() {
|
||||
|
||||
@ -32,10 +36,6 @@ object \"C_11\" {
|
||||
}
|
||||
/// @src 0:78:243
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
}
|
||||
/// @use-src 0:\"A\"
|
||||
object \"C_11_deployed\" {
|
||||
@ -65,11 +65,58 @@ object \"C_11\" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function abi_decode_tuple_(headStart, dataEnd) {
|
||||
if slt(sub(dataEnd, headStart), 0) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }
|
||||
|
||||
}
|
||||
|
||||
function array_length_t_string_memory_ptr(value) -> length {
|
||||
|
||||
length := mload(value)
|
||||
|
||||
}
|
||||
|
||||
function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {
|
||||
mstore(pos, length)
|
||||
updated_pos := add(pos, 0x20)
|
||||
}
|
||||
|
||||
function copy_memory_to_memory(src, dst, length) {
|
||||
let i := 0
|
||||
for { } lt(i, length) { i := add(i, 32) }
|
||||
{
|
||||
mstore(add(dst, i), mload(add(src, i)))
|
||||
}
|
||||
if gt(i, length)
|
||||
{
|
||||
// clear end
|
||||
mstore(add(dst, length), 0)
|
||||
}
|
||||
}
|
||||
|
||||
function round_up_to_mul_of_32(value) -> result {
|
||||
result := and(add(value, 31), not(31))
|
||||
}
|
||||
|
||||
function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {
|
||||
let length := array_length_t_string_memory_ptr(value)
|
||||
pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)
|
||||
@ -85,23 +132,32 @@ object \"C_11\" {
|
||||
|
||||
}
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function zero_value_for_split_t_string_memory_ptr() -> ret {
|
||||
ret := 96
|
||||
}
|
||||
|
||||
function panic_error_0x41() {
|
||||
mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)
|
||||
mstore(4, 0x41)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
|
||||
function finalize_allocation(memPtr, size) {
|
||||
let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))
|
||||
// protect against overflow
|
||||
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }
|
||||
mstore(64, newFreePtr)
|
||||
}
|
||||
|
||||
function allocate_memory(size) -> memPtr {
|
||||
memPtr := allocate_unbounded()
|
||||
finalize_allocation(memPtr, size)
|
||||
}
|
||||
|
||||
function allocate_memory_array_t_string_memory_ptr(length) -> memPtr {
|
||||
let allocSize := array_allocation_size_t_string_memory_ptr(length)
|
||||
memPtr := allocate_memory(allocSize)
|
||||
|
||||
mstore(memPtr, length)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function array_allocation_size_t_string_memory_ptr(length) -> size {
|
||||
// Make sure we can allocate memory without overflow
|
||||
if gt(length, 0xffffffffffffffff) { panic_error_0x41() }
|
||||
@ -113,19 +169,22 @@ object \"C_11\" {
|
||||
|
||||
}
|
||||
|
||||
function array_length_t_string_memory_ptr(value) -> length {
|
||||
function allocate_memory_array_t_string_memory_ptr(length) -> memPtr {
|
||||
let allocSize := array_allocation_size_t_string_memory_ptr(length)
|
||||
memPtr := allocate_memory(allocSize)
|
||||
|
||||
length := mload(value)
|
||||
mstore(memPtr, length)
|
||||
|
||||
}
|
||||
|
||||
function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {
|
||||
mstore(pos, length)
|
||||
updated_pos := add(pos, 0x20)
|
||||
}
|
||||
function store_literal_in_memory_d6604f85ac07e2b33103a620b3d3d75b0473c7214912beded67b9b624d41c571(memPtr) {
|
||||
|
||||
mstore(add(memPtr, 0), \"abcdabcdcafecafeabcdabcdcafecafe\")
|
||||
|
||||
mstore(add(memPtr, 32), \"ffffzzzzoooo0123456789,.<,>.?:;'\")
|
||||
|
||||
mstore(add(memPtr, 64), \"[{]}|`~!@#$%^&*()-_=+\")
|
||||
|
||||
function convert_t_stringliteral_d6604f85ac07e2b33103a620b3d3d75b0473c7214912beded67b9b624d41c571_to_t_string_memory_ptr() -> converted {
|
||||
converted := copy_literal_to_memory_d6604f85ac07e2b33103a620b3d3d75b0473c7214912beded67b9b624d41c571()
|
||||
}
|
||||
|
||||
function copy_literal_to_memory_d6604f85ac07e2b33103a620b3d3d75b0473c7214912beded67b9b624d41c571() -> memPtr {
|
||||
@ -133,24 +192,8 @@ object \"C_11\" {
|
||||
store_literal_in_memory_d6604f85ac07e2b33103a620b3d3d75b0473c7214912beded67b9b624d41c571(add(memPtr, 32))
|
||||
}
|
||||
|
||||
function copy_memory_to_memory(src, dst, length) {
|
||||
let i := 0
|
||||
for { } lt(i, length) { i := add(i, 32) }
|
||||
{
|
||||
mstore(add(dst, i), mload(add(src, i)))
|
||||
}
|
||||
if gt(i, length)
|
||||
{
|
||||
// clear end
|
||||
mstore(add(dst, length), 0)
|
||||
}
|
||||
}
|
||||
|
||||
function finalize_allocation(memPtr, size) {
|
||||
let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))
|
||||
// protect against overflow
|
||||
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }
|
||||
mstore(64, newFreePtr)
|
||||
function convert_t_stringliteral_d6604f85ac07e2b33103a620b3d3d75b0473c7214912beded67b9b624d41c571_to_t_string_memory_ptr() -> converted {
|
||||
converted := copy_literal_to_memory_d6604f85ac07e2b33103a620b3d3d75b0473c7214912beded67b9b624d41c571()
|
||||
}
|
||||
|
||||
/// @src 0:91:241
|
||||
@ -166,49 +209,6 @@ object \"C_11\" {
|
||||
}
|
||||
/// @src 0:78:243
|
||||
|
||||
function panic_error_0x41() {
|
||||
mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)
|
||||
mstore(4, 0x41)
|
||||
revert(0, 0x24)
|
||||
}
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function round_up_to_mul_of_32(value) -> result {
|
||||
result := and(add(value, 31), not(31))
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function store_literal_in_memory_d6604f85ac07e2b33103a620b3d3d75b0473c7214912beded67b9b624d41c571(memPtr) {
|
||||
|
||||
mstore(add(memPtr, 0), \"abcdabcdcafecafeabcdabcdcafecafe\")
|
||||
|
||||
mstore(add(memPtr, 32), \"ffffzzzzoooo0123456789,.<,>.?:;'\")
|
||||
|
||||
mstore(add(memPtr, 64), \"[{]}|`~!@#$%^&*()-_=+\")
|
||||
|
||||
}
|
||||
|
||||
function zero_value_for_split_t_string_memory_ptr() -> ret {
|
||||
ret := 96
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data \".metadata\" hex\"<BYTECODE REMOVED>\"
|
||||
|
@ -24,6 +24,10 @@ object \"C_11\" {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
/// @src 0:78:159
|
||||
function constructor_C_11() {
|
||||
|
||||
@ -32,10 +36,6 @@ object \"C_11\" {
|
||||
}
|
||||
/// @src 0:78:159
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
}
|
||||
/// @use-src 0:\"A\"
|
||||
object \"C_11_deployed\" {
|
||||
@ -65,11 +65,34 @@ object \"C_11\" {
|
||||
if iszero(calldatasize()) { }
|
||||
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function abi_decode_tuple_(headStart, dataEnd) {
|
||||
if slt(sub(dataEnd, headStart), 0) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }
|
||||
|
||||
}
|
||||
|
||||
function cleanup_t_bytes4(value) -> cleaned {
|
||||
cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)
|
||||
}
|
||||
|
||||
function abi_encode_t_bytes4_to_t_bytes4_fromStack(value, pos) {
|
||||
mstore(pos, cleanup_t_bytes4(value))
|
||||
}
|
||||
@ -81,18 +104,25 @@ object \"C_11\" {
|
||||
|
||||
}
|
||||
|
||||
function allocate_unbounded() -> memPtr {
|
||||
memPtr := mload(64)
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function cleanup_t_bytes4(value) -> cleaned {
|
||||
cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)
|
||||
function zero_value_for_split_t_bytes4() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
function cleanup_t_rational_2864434397_by_1(value) -> cleaned {
|
||||
cleaned := value
|
||||
}
|
||||
|
||||
function shift_left_224(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shl(224, value)
|
||||
|
||||
}
|
||||
|
||||
function convert_t_rational_2864434397_by_1_to_t_bytes4(value) -> converted {
|
||||
converted := cleanup_t_bytes4(shift_left_224(cleanup_t_rational_2864434397_by_1(value)))
|
||||
}
|
||||
@ -112,36 +142,6 @@ object \"C_11\" {
|
||||
}
|
||||
/// @src 0:78:159
|
||||
|
||||
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {
|
||||
revert(0, 0)
|
||||
}
|
||||
|
||||
function shift_left_224(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shl(224, value)
|
||||
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
newValue :=
|
||||
|
||||
shr(224, value)
|
||||
|
||||
}
|
||||
|
||||
function zero_value_for_split_t_bytes4() -> ret {
|
||||
ret := 0
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data \".metadata\" hex\"<BYTECODE REMOVED>\"
|
||||
|
@ -101,7 +101,7 @@ BOOST_AUTO_TEST_CASE(string_storage)
|
||||
if (CommonOptions::get().useABIEncoderV1)
|
||||
CHECK_DEPLOY_GAS(133045, 129731, evmVersion);
|
||||
else
|
||||
CHECK_DEPLOY_GAS(144679, 121229, evmVersion);
|
||||
CHECK_DEPLOY_GAS(144999, 121229, evmVersion);
|
||||
}
|
||||
// This is only correct on >=Constantinople.
|
||||
else if (!CommonOptions::get().useABIEncoderV1)
|
||||
@ -117,9 +117,9 @@ BOOST_AUTO_TEST_CASE(string_storage)
|
||||
else
|
||||
{
|
||||
if (evmVersion < EVMVersion::istanbul())
|
||||
CHECK_DEPLOY_GAS(138693, 123969, evmVersion);
|
||||
CHECK_DEPLOY_GAS(139013, 123969, evmVersion);
|
||||
else
|
||||
CHECK_DEPLOY_GAS(123301, 110969, evmVersion);
|
||||
CHECK_DEPLOY_GAS(123361, 110969, evmVersion);
|
||||
}
|
||||
}
|
||||
else if (evmVersion < EVMVersion::istanbul())
|
||||
|
@ -17,9 +17,9 @@ contract C {
|
||||
// optimize-yul: true
|
||||
// ----
|
||||
// creation:
|
||||
// codeDepositCost: 680600
|
||||
// codeDepositCost: 681000
|
||||
// executionCost: 715
|
||||
// totalCost: 681315
|
||||
// totalCost: 681715
|
||||
// external:
|
||||
// a(): 2285
|
||||
// b(uint256): 4652
|
||||
|
@ -32,6 +32,6 @@ contract C is B {
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// test() -> 77
|
||||
// gas irOptimized: 120952
|
||||
// gas irOptimized: 121752
|
||||
// gas legacy: 155249
|
||||
// gas legacyOptimized: 111743
|
||||
|
@ -17,7 +17,7 @@ contract c {
|
||||
// ----
|
||||
// setData1(uint256,uint256,uint256): 10, 5, 4 ->
|
||||
// copyStorageStorage() ->
|
||||
// gas irOptimized: 111487
|
||||
// gas irOptimized: 111488
|
||||
// gas legacy: 109278
|
||||
// gas legacyOptimized: 109268
|
||||
// getData2(uint256): 5 -> 10, 4
|
||||
|
@ -46,6 +46,6 @@ contract Test {
|
||||
// test1() -> 3
|
||||
// test2() -> 6
|
||||
// test3() -> 24
|
||||
// gas irOptimized: 133742
|
||||
// gas irOptimized: 133753
|
||||
// gas legacy: 134295
|
||||
// gas legacyOptimized: 133383
|
||||
|
@ -23,4 +23,4 @@ contract C {
|
||||
// compileViaYul: true
|
||||
// ----
|
||||
// f((uint256[])[]): 0x20, 3, 0x60, 0x60, 0x60, 0x20, 3, 1, 2, 3 -> 3, 1
|
||||
// gas irOptimized: 330384
|
||||
// gas irOptimized: 330385
|
||||
|
@ -50,7 +50,7 @@ contract test {
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// constructor()
|
||||
// gas irOptimized: 1770739
|
||||
// gas irOptimized: 1769431
|
||||
// gas legacy: 2356230
|
||||
// gas legacyOptimized: 1746528
|
||||
// div(uint256,uint256): 3141592653589793238, 88714123 -> 35412542528203691288251815328
|
||||
@ -58,7 +58,7 @@ contract test {
|
||||
// gas legacy: 22497
|
||||
// gas legacyOptimized: 22010
|
||||
// exp(uint256): 3141592653589793238 -> 23140692632779268978
|
||||
// gas irOptimized: 24245
|
||||
// gas irOptimized: 24234
|
||||
// gas legacy: 25104
|
||||
// gas legacyOptimized: 24258
|
||||
// exp2(uint256): 3141592653589793238 -> 8824977827076287620
|
||||
|
@ -35,10 +35,10 @@ contract test {
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// constructor()
|
||||
// gas irOptimized: 526745
|
||||
// gas irOptimized: 528041
|
||||
// gas legacy: 733634
|
||||
// gas legacyOptimized: 478742
|
||||
// gas legacyOptimized: 479606
|
||||
// prb_pi() -> 3141592656369545286
|
||||
// gas irOptimized: 62867
|
||||
// gas irOptimized: 63027
|
||||
// gas legacy: 98903
|
||||
// gas legacyOptimized: 75735
|
||||
|
@ -51,11 +51,11 @@ contract test {
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// constructor()
|
||||
// gas irOptimized: 776466
|
||||
// gas irOptimized: 778254
|
||||
// gas legacy: 1188228
|
||||
// gas legacyOptimized: 749336
|
||||
// gas legacyOptimized: 750416
|
||||
// toSlice(string): 0x20, 11, "hello world" -> 11, 0xa0
|
||||
// gas irOptimized: 22723
|
||||
// gas irOptimized: 22734
|
||||
// gas legacy: 23190
|
||||
// gas legacyOptimized: 22508
|
||||
// roundtrip(string): 0x20, 11, "hello world" -> 0x20, 11, "hello world"
|
||||
@ -67,7 +67,7 @@ contract test {
|
||||
// gas legacy: 25716
|
||||
// gas legacyOptimized: 24115
|
||||
// multiconcat(string,uint256): 0x40, 3, 11, "hello world" -> 0x20, 0x58, 0x68656c6c6f20776f726c6468656c6c6f20776f726c6468656c6c6f20776f726c, 0x6468656c6c6f20776f726c6468656c6c6f20776f726c6468656c6c6f20776f72, 49027192869463622675296414541903001712009715982962058146354235762728281047040 # concatenating 3 times #
|
||||
// gas irOptimized: 28962
|
||||
// gas irOptimized: 28958
|
||||
// gas legacy: 31621
|
||||
// gas legacyOptimized: 27914
|
||||
// benchmark(string,bytes32): 0x40, 0x0842021, 8, "solidity" -> 0x2020
|
||||
|
@ -28,6 +28,6 @@ contract C {
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// t() -> 9
|
||||
// gas irOptimized: 99004
|
||||
// gas irOptimized: 99010
|
||||
// gas legacy: 159083
|
||||
// gas legacyOptimized: 108916
|
||||
|
@ -33,4 +33,4 @@ contract C {
|
||||
// compileViaYul: true
|
||||
// ----
|
||||
// f() -> 0, 0, 0
|
||||
// gas irOptimized: 117648
|
||||
// gas irOptimized: 117388
|
||||
|
@ -98,7 +98,7 @@ contract ERC20 {
|
||||
// ----
|
||||
// constructor()
|
||||
// ~ emit Transfer(address,address,uint256): #0x00, #0x1212121212121212121212121212120000000012, 0x14
|
||||
// gas irOptimized: 460447
|
||||
// gas irOptimized: 459547
|
||||
// gas legacy: 833310
|
||||
// gas legacyOptimized: 416135
|
||||
// totalSupply() -> 20
|
||||
@ -107,12 +107,12 @@ contract ERC20 {
|
||||
// gas legacyOptimized: 23368
|
||||
// transfer(address,uint256): 2, 5 -> true
|
||||
// ~ emit Transfer(address,address,uint256): #0x1212121212121212121212121212120000000012, #0x02, 0x05
|
||||
// gas irOptimized: 48514
|
||||
// gas irOptimized: 48503
|
||||
// gas legacy: 49317
|
||||
// gas legacyOptimized: 48491
|
||||
// decreaseAllowance(address,uint256): 2, 0 -> true
|
||||
// ~ emit Approval(address,address,uint256): #0x1212121212121212121212121212120000000012, #0x02, 0x00
|
||||
// gas irOptimized: 26316
|
||||
// gas irOptimized: 26327
|
||||
// gas legacy: 27012
|
||||
// gas legacyOptimized: 26275
|
||||
// decreaseAllowance(address,uint256): 2, 1 -> FAILURE, hex"4e487b71", 0x11
|
||||
@ -121,7 +121,7 @@ contract ERC20 {
|
||||
// gas legacyOptimized: 24056
|
||||
// transfer(address,uint256): 2, 14 -> true
|
||||
// ~ emit Transfer(address,address,uint256): #0x1212121212121212121212121212120000000012, #0x02, 0x0e
|
||||
// gas irOptimized: 28614
|
||||
// gas irOptimized: 28603
|
||||
// gas legacy: 29417
|
||||
// gas legacyOptimized: 28591
|
||||
// transfer(address,uint256): 2, 2 -> FAILURE, hex"4e487b71", 0x11
|
||||
|
Loading…
Reference in New Issue
Block a user