mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Do not prepend function name to all variables when inlining.
This commit is contained in:
parent
38831e885d
commit
3f784d6e00
@ -177,7 +177,7 @@ vector<Statement> InlineModifier::performInline(Statement& _statement, FunctionC
|
||||
// helper function to create a new variable that is supposed to model
|
||||
// an existing variable.
|
||||
auto newVariable = [&](TypedName const& _existingVariable, Expression* _value) {
|
||||
YulString newName = m_nameDispenser.newName(_existingVariable.name, function->name);
|
||||
YulString newName = m_nameDispenser.newName(_existingVariable.name);
|
||||
variableReplacements[_existingVariable.name] = newName;
|
||||
VariableDeclaration varDecl{_funCall.location, {{_funCall.location, newName, _existingVariable.type}}, {}};
|
||||
if (_value)
|
||||
@ -192,7 +192,7 @@ vector<Statement> InlineModifier::performInline(Statement& _statement, FunctionC
|
||||
for (auto const& var: function->returnVariables)
|
||||
newVariable(var, nullptr);
|
||||
|
||||
Statement newBody = BodyCopier(m_nameDispenser, function->name, variableReplacements)(function->body);
|
||||
Statement newBody = BodyCopier(m_nameDispenser, variableReplacements)(function->body);
|
||||
newStatements += std::move(boost::get<Block>(newBody).statements);
|
||||
|
||||
boost::apply_visitor(GenericFallbackVisitor<Assignment, VariableDeclaration>{
|
||||
@ -228,7 +228,7 @@ vector<Statement> InlineModifier::performInline(Statement& _statement, FunctionC
|
||||
Statement BodyCopier::operator()(VariableDeclaration const& _varDecl)
|
||||
{
|
||||
for (auto const& var: _varDecl.variables)
|
||||
m_variableReplacements[var.name] = m_nameDispenser.newName(var.name, m_varNamePrefix);
|
||||
m_variableReplacements[var.name] = m_nameDispenser.newName(var.name);
|
||||
return ASTCopier::operator()(_varDecl);
|
||||
}
|
||||
|
||||
|
@ -140,11 +140,9 @@ class BodyCopier: public ASTCopier
|
||||
public:
|
||||
BodyCopier(
|
||||
NameDispenser& _nameDispenser,
|
||||
YulString _varNamePrefix,
|
||||
std::map<YulString, YulString> const& _variableReplacements
|
||||
):
|
||||
m_nameDispenser(_nameDispenser),
|
||||
m_varNamePrefix(_varNamePrefix),
|
||||
m_variableReplacements(_variableReplacements)
|
||||
{}
|
||||
|
||||
@ -156,7 +154,6 @@ public:
|
||||
YulString translateIdentifier(YulString _name) override;
|
||||
|
||||
NameDispenser& m_nameDispenser;
|
||||
YulString m_varNamePrefix;
|
||||
std::map<YulString, YulString> m_variableReplacements;
|
||||
};
|
||||
|
||||
|
@ -39,18 +39,7 @@ NameDispenser::NameDispenser(Dialect const& _dialect, set<YulString> _usedNames)
|
||||
{
|
||||
}
|
||||
|
||||
YulString NameDispenser::newName(YulString _nameHint, YulString _context)
|
||||
{
|
||||
// Shortening rules: Use a suffix of _prefix and a prefix of _context.
|
||||
YulString prefix = _nameHint;
|
||||
|
||||
if (!_context.empty())
|
||||
prefix = YulString{_context.str().substr(0, 10) + "_" + prefix.str()};
|
||||
|
||||
return newNameInternal(prefix);
|
||||
}
|
||||
|
||||
YulString NameDispenser::newNameInternal(YulString _nameHint)
|
||||
YulString NameDispenser::newName(YulString _nameHint)
|
||||
{
|
||||
YulString name = _nameHint;
|
||||
while (name.empty() || m_usedNames.count(name) || m_dialect.builtin(name))
|
||||
|
@ -43,14 +43,10 @@ public:
|
||||
/// Initialize the name dispenser with the given used names.
|
||||
explicit NameDispenser(Dialect const& _dialect, std::set<YulString> _usedNames);
|
||||
|
||||
/// @returns a currently unused name that should be similar to _nameHint
|
||||
/// and prefixed by _context if present.
|
||||
/// If the resulting name would be too long, trims the context at the end
|
||||
/// and the name hint at the start.
|
||||
YulString newName(YulString _nameHint, YulString _context = {});
|
||||
/// @returns a currently unused name that should be similar to _nameHint.
|
||||
YulString newName(YulString _nameHint);
|
||||
|
||||
private:
|
||||
YulString newNameInternal(YulString _nameHint);
|
||||
|
||||
Dialect const& m_dialect;
|
||||
std::set<YulString> m_usedNames;
|
||||
|
@ -8,19 +8,19 @@
|
||||
// fullInliner
|
||||
// {
|
||||
// {
|
||||
// let f_a := calldataload(0)
|
||||
// let f_b := 0
|
||||
// let f_c := 0
|
||||
// f_b := sload(mload(f_a))
|
||||
// f_c := 3
|
||||
// let b3 := f_b
|
||||
// let f_a_2 := f_c
|
||||
// let f_b_3 := 0
|
||||
// let f_c_4 := 0
|
||||
// f_b_3 := sload(mload(f_a_2))
|
||||
// f_c_4 := 3
|
||||
// let b4 := f_b_3
|
||||
// let c4 := f_c_4
|
||||
// let a_2 := calldataload(0)
|
||||
// let b_3 := 0
|
||||
// let c_4 := 0
|
||||
// b_3 := sload(mload(a_2))
|
||||
// c_4 := 3
|
||||
// let b3 := b_3
|
||||
// let a_6 := c_4
|
||||
// let b_7 := 0
|
||||
// let c_8 := 0
|
||||
// b_7 := sload(mload(a_6))
|
||||
// c_8 := 3
|
||||
// let b4 := b_7
|
||||
// let c4 := c_8
|
||||
// }
|
||||
// function f(a) -> b, c
|
||||
// {
|
||||
|
@ -13,11 +13,11 @@
|
||||
// {
|
||||
// {
|
||||
// let _2 := mload(0)
|
||||
// let f_a := mload(1)
|
||||
// let f_r := 0
|
||||
// f_a := mload(f_a)
|
||||
// f_r := add(f_a, calldatasize())
|
||||
// if gt(f_r, _2)
|
||||
// let a_10 := mload(1)
|
||||
// let r_11 := 0
|
||||
// a_10 := mload(a_10)
|
||||
// r_11 := add(a_10, calldatasize())
|
||||
// if gt(r_11, _2)
|
||||
// {
|
||||
// sstore(0, 2)
|
||||
// }
|
||||
|
@ -21,28 +21,28 @@
|
||||
// {
|
||||
// let a_1 := mload(2)
|
||||
// let a2 := 2
|
||||
// let f_a := a_1
|
||||
// let f_b := 0
|
||||
// let f_x := mload(f_a)
|
||||
// f_b := sload(f_x)
|
||||
// let f_y := add(f_a, f_x)
|
||||
// sstore(f_y, 10)
|
||||
// let r := f_b
|
||||
// let f_a_3 := a2
|
||||
// let f_b_4 := 0
|
||||
// let f_x_5 := mload(f_a_3)
|
||||
// f_b_4 := sload(f_x_5)
|
||||
// let f_y_6 := add(f_a_3, f_x_5)
|
||||
// sstore(f_y_6, 10)
|
||||
// let t := f_b_4
|
||||
// let a_3 := a_1
|
||||
// let b_4 := 0
|
||||
// let x_5 := mload(a_3)
|
||||
// b_4 := sload(x_5)
|
||||
// let y_6 := add(a_3, x_5)
|
||||
// sstore(y_6, 10)
|
||||
// let r := b_4
|
||||
// let a_8 := a2
|
||||
// let b_9 := 0
|
||||
// let x_10 := mload(a_8)
|
||||
// b_9 := sload(x_10)
|
||||
// let y_11 := add(a_8, x_10)
|
||||
// sstore(y_11, 10)
|
||||
// let t := b_9
|
||||
// let a3
|
||||
// let f_a_8 := a3
|
||||
// let f_b_9 := 0
|
||||
// let f_x_10 := mload(f_a_8)
|
||||
// f_b_9 := sload(f_x_10)
|
||||
// let f_y_11 := add(f_a_8, f_x_10)
|
||||
// sstore(f_y_11, 10)
|
||||
// let s := f_b_9
|
||||
// let a_13 := a3
|
||||
// let b_14 := 0
|
||||
// let x_15 := mload(a_13)
|
||||
// b_14 := sload(x_15)
|
||||
// let y_16 := add(a_13, x_15)
|
||||
// sstore(y_16, 10)
|
||||
// let s := b_14
|
||||
// }
|
||||
// function f(a) -> b
|
||||
// {
|
||||
|
@ -14,15 +14,15 @@
|
||||
// fullInliner
|
||||
// {
|
||||
// {
|
||||
// let f_a := mload(1)
|
||||
// let f_b := 0
|
||||
// let f_x := mload(f_a)
|
||||
// f_b := sload(f_x)
|
||||
// let f_c := 3
|
||||
// mstore(mul(f_a, f_b), mload(f_x))
|
||||
// let f_y := add(f_a, f_x)
|
||||
// sstore(f_y, 10)
|
||||
// let r := f_b
|
||||
// let a_6 := mload(1)
|
||||
// let b_7 := 0
|
||||
// let x_8 := mload(a_6)
|
||||
// b_7 := sload(x_8)
|
||||
// let c_9 := 3
|
||||
// mstore(mul(a_6, b_7), mload(x_8))
|
||||
// let y_12 := add(a_6, x_8)
|
||||
// sstore(y_12, 10)
|
||||
// let r := b_7
|
||||
// }
|
||||
// function f(a) -> b
|
||||
// {
|
||||
|
@ -12,10 +12,10 @@
|
||||
// {
|
||||
// {
|
||||
// let verylongvariablename2_1 := 3
|
||||
// let verylongfu_verylongvariablename := verylongvariablename2_1
|
||||
// let verylongfu_verylongvariablename2 := 0
|
||||
// verylongfu_verylongvariablename2 := add(verylongfu_verylongvariablename, verylongfu_verylongvariablename)
|
||||
// mstore(0, verylongfu_verylongvariablename2)
|
||||
// let verylongvariablename_4 := verylongvariablename2_1
|
||||
// let verylongvariablename2_5 := 0
|
||||
// verylongvariablename2_5 := add(verylongvariablename_4, verylongvariablename_4)
|
||||
// mstore(0, verylongvariablename2_5)
|
||||
// mstore(1, verylongvariablename2_1)
|
||||
// }
|
||||
// function verylongfunctionname(verylongvariablename) -> verylongvariablename2
|
||||
|
@ -12,13 +12,13 @@
|
||||
// let _2 := mload(5)
|
||||
// let _4 := mload(4)
|
||||
// let _6 := mload(3)
|
||||
// let f_a := mload(2)
|
||||
// let f_b := _6
|
||||
// let f_c := _4
|
||||
// let f_x := 0
|
||||
// f_x := add(f_a, f_b)
|
||||
// f_x := mul(f_x, f_c)
|
||||
// let _10 := add(f_x, _2)
|
||||
// let a_13 := mload(2)
|
||||
// let b_14 := _6
|
||||
// let c_15 := _4
|
||||
// let x_16 := 0
|
||||
// x_16 := add(a_13, b_14)
|
||||
// x_16 := mul(x_16, c_15)
|
||||
// let _10 := add(x_16, _2)
|
||||
// let y := add(mload(1), _10)
|
||||
// }
|
||||
// function f(a, b, c) -> x
|
||||
|
@ -8,14 +8,14 @@
|
||||
// {
|
||||
// {
|
||||
// let _1 := 7
|
||||
// let f_a := 3
|
||||
// let f_x := 0
|
||||
// f_x := add(f_a, f_a)
|
||||
// let g_b := f_x
|
||||
// let g_c := _1
|
||||
// let g_y := 0
|
||||
// g_y := mul(mload(g_c), f(g_b))
|
||||
// let y_1 := g_y
|
||||
// let a_6 := 3
|
||||
// let x_7 := 0
|
||||
// x_7 := add(a_6, a_6)
|
||||
// let b_8 := x_7
|
||||
// let c_9 := _1
|
||||
// let y_10 := 0
|
||||
// y_10 := mul(mload(c_9), f(b_8))
|
||||
// let y_1 := y_10
|
||||
// }
|
||||
// function f(a) -> x
|
||||
// {
|
||||
@ -23,9 +23,9 @@
|
||||
// }
|
||||
// function g(b, c) -> y
|
||||
// {
|
||||
// let f_a_6 := b
|
||||
// let f_x_7 := 0
|
||||
// f_x_7 := add(f_a_6, f_a_6)
|
||||
// y := mul(mload(c), f_x_7)
|
||||
// let a_13 := b
|
||||
// let x_14 := 0
|
||||
// x_14 := add(a_13, a_13)
|
||||
// y := mul(mload(c), x_14)
|
||||
// }
|
||||
// }
|
||||
|
@ -26,33 +26,33 @@
|
||||
// fullInliner
|
||||
// {
|
||||
// {
|
||||
// let f_x := 100
|
||||
// mstore(0, f_x)
|
||||
// let x_8 := 100
|
||||
// mstore(0, x_8)
|
||||
// mstore(7, h())
|
||||
// g(10)
|
||||
// mstore(1, f_x)
|
||||
// mstore(1, x_8)
|
||||
// }
|
||||
// function f(x)
|
||||
// {
|
||||
// mstore(0, x)
|
||||
// let h_t := 0
|
||||
// h_t := 2
|
||||
// mstore(7, h_t)
|
||||
// let g_x_1 := 10
|
||||
// let g_f_x_8 := 1
|
||||
// mstore(0, g_f_x_8)
|
||||
// let t_20 := 0
|
||||
// t_20 := 2
|
||||
// mstore(7, t_20)
|
||||
// let x_1_21 := 10
|
||||
// let x_14_23 := 1
|
||||
// mstore(0, x_14_23)
|
||||
// mstore(7, h())
|
||||
// g(10)
|
||||
// mstore(1, g_f_x_8)
|
||||
// mstore(1, x_14_23)
|
||||
// mstore(1, x)
|
||||
// }
|
||||
// function g(x_1)
|
||||
// {
|
||||
// let f_x_8 := 1
|
||||
// mstore(0, f_x_8)
|
||||
// let x_14 := 1
|
||||
// mstore(0, x_14)
|
||||
// mstore(7, h())
|
||||
// g(10)
|
||||
// mstore(1, f_x_8)
|
||||
// mstore(1, x_14)
|
||||
// }
|
||||
// function h() -> t
|
||||
// {
|
||||
|
@ -10,13 +10,13 @@
|
||||
// fullInliner
|
||||
// {
|
||||
// {
|
||||
// let f_a := mload(0)
|
||||
// let f_x := 0
|
||||
// let f_y := 0
|
||||
// f_x := mul(f_a, f_a)
|
||||
// f_y := add(f_a, f_x)
|
||||
// let r := f_x
|
||||
// mstore(r, f_y)
|
||||
// let a_3 := mload(0)
|
||||
// let x_4 := 0
|
||||
// let y_5 := 0
|
||||
// x_4 := mul(a_3, a_3)
|
||||
// y_5 := add(a_3, x_4)
|
||||
// let r := x_4
|
||||
// mstore(r, y_5)
|
||||
// }
|
||||
// function f(a) -> x, y
|
||||
// {
|
||||
|
@ -18,45 +18,45 @@
|
||||
// }
|
||||
// function g() -> x_1
|
||||
// {
|
||||
// let f_a := 2
|
||||
// let f_b := 0
|
||||
// f_b := sload(mload(f_a))
|
||||
// let f_a_20 := f_b
|
||||
// let f_b_21 := 0
|
||||
// f_b_21 := sload(mload(f_a_20))
|
||||
// let f_a_23 := f_b_21
|
||||
// let f_b_24 := 0
|
||||
// f_b_24 := sload(mload(f_a_23))
|
||||
// let f_a_26 := f_b_24
|
||||
// let f_b_27 := 0
|
||||
// f_b_27 := sload(mload(f_a_26))
|
||||
// let f_a_29 := f_b_27
|
||||
// let f_b_30 := 0
|
||||
// f_b_30 := sload(mload(f_a_29))
|
||||
// let f_a_32 := f_b_30
|
||||
// let f_b_33 := 0
|
||||
// f_b_33 := sload(mload(f_a_32))
|
||||
// let f_a_35 := f_b_33
|
||||
// let f_b_36 := 0
|
||||
// f_b_36 := sload(mload(f_a_35))
|
||||
// let f_a_38 := f_b_36
|
||||
// let f_b_39 := 0
|
||||
// f_b_39 := sload(mload(f_a_38))
|
||||
// let f_a_41 := f_b_39
|
||||
// let f_b_42 := 0
|
||||
// f_b_42 := sload(mload(f_a_41))
|
||||
// let f_a_44 := f_b_42
|
||||
// let f_b_45 := 0
|
||||
// f_b_45 := sload(mload(f_a_44))
|
||||
// let f_a_47 := f_b_45
|
||||
// let f_b_48 := 0
|
||||
// f_b_48 := sload(mload(f_a_47))
|
||||
// let f_a_50 := f_b_48
|
||||
// let f_b_51 := 0
|
||||
// f_b_51 := sload(mload(f_a_50))
|
||||
// let f_a_53 := f_b_51
|
||||
// let f_b_54 := 0
|
||||
// f_b_54 := sload(mload(f_a_53))
|
||||
// x_1 := f(f(f(f(f(f(f_b_54))))))
|
||||
// let a_20 := 2
|
||||
// let b_21 := 0
|
||||
// b_21 := sload(mload(a_20))
|
||||
// let a_23 := b_21
|
||||
// let b_24 := 0
|
||||
// b_24 := sload(mload(a_23))
|
||||
// let a_26 := b_24
|
||||
// let b_27 := 0
|
||||
// b_27 := sload(mload(a_26))
|
||||
// let a_29 := b_27
|
||||
// let b_30 := 0
|
||||
// b_30 := sload(mload(a_29))
|
||||
// let a_32 := b_30
|
||||
// let b_33 := 0
|
||||
// b_33 := sload(mload(a_32))
|
||||
// let a_35 := b_33
|
||||
// let b_36 := 0
|
||||
// b_36 := sload(mload(a_35))
|
||||
// let a_38 := b_36
|
||||
// let b_39 := 0
|
||||
// b_39 := sload(mload(a_38))
|
||||
// let a_41 := b_39
|
||||
// let b_42 := 0
|
||||
// b_42 := sload(mload(a_41))
|
||||
// let a_44 := b_42
|
||||
// let b_45 := 0
|
||||
// b_45 := sload(mload(a_44))
|
||||
// let a_47 := b_45
|
||||
// let b_48 := 0
|
||||
// b_48 := sload(mload(a_47))
|
||||
// let a_50 := b_48
|
||||
// let b_51 := 0
|
||||
// b_51 := sload(mload(a_50))
|
||||
// let a_53 := b_51
|
||||
// let b_54 := 0
|
||||
// b_54 := sload(mload(a_53))
|
||||
// let a_56 := b_54
|
||||
// let b_57 := 0
|
||||
// b_57 := sload(mload(a_56))
|
||||
// x_1 := f(f(f(f(f(f(b_57))))))
|
||||
// }
|
||||
// }
|
||||
|
@ -11,46 +11,46 @@
|
||||
// fullInliner
|
||||
// {
|
||||
// {
|
||||
// let f_a := 2
|
||||
// let f_b := 0
|
||||
// f_b := sload(mload(f_a))
|
||||
// let f_a_20 := f_b
|
||||
// let f_b_21 := 0
|
||||
// f_b_21 := sload(mload(f_a_20))
|
||||
// let f_a_23 := f_b_21
|
||||
// let f_b_24 := 0
|
||||
// f_b_24 := sload(mload(f_a_23))
|
||||
// let f_a_26 := f_b_24
|
||||
// let f_b_27 := 0
|
||||
// f_b_27 := sload(mload(f_a_26))
|
||||
// let f_a_29 := f_b_27
|
||||
// let f_b_30 := 0
|
||||
// f_b_30 := sload(mload(f_a_29))
|
||||
// let f_a_32 := f_b_30
|
||||
// let f_b_33 := 0
|
||||
// f_b_33 := sload(mload(f_a_32))
|
||||
// let f_a_35 := f_b_33
|
||||
// let f_b_36 := 0
|
||||
// f_b_36 := sload(mload(f_a_35))
|
||||
// let f_a_38 := f_b_36
|
||||
// let f_b_39 := 0
|
||||
// f_b_39 := sload(mload(f_a_38))
|
||||
// let f_a_41 := f_b_39
|
||||
// let f_b_42 := 0
|
||||
// f_b_42 := sload(mload(f_a_41))
|
||||
// let f_a_44 := f_b_42
|
||||
// let f_b_45 := 0
|
||||
// f_b_45 := sload(mload(f_a_44))
|
||||
// let f_a_47 := f_b_45
|
||||
// let f_b_48 := 0
|
||||
// f_b_48 := sload(mload(f_a_47))
|
||||
// let f_a_50 := f_b_48
|
||||
// let f_b_51 := 0
|
||||
// f_b_51 := sload(mload(f_a_50))
|
||||
// let f_a_53 := f_b_51
|
||||
// let f_b_54 := 0
|
||||
// f_b_54 := sload(mload(f_a_53))
|
||||
// let x_1 := f(f(f(f(f(f(f_b_54))))))
|
||||
// let a_20 := 2
|
||||
// let b_21 := 0
|
||||
// b_21 := sload(mload(a_20))
|
||||
// let a_23 := b_21
|
||||
// let b_24 := 0
|
||||
// b_24 := sload(mload(a_23))
|
||||
// let a_26 := b_24
|
||||
// let b_27 := 0
|
||||
// b_27 := sload(mload(a_26))
|
||||
// let a_29 := b_27
|
||||
// let b_30 := 0
|
||||
// b_30 := sload(mload(a_29))
|
||||
// let a_32 := b_30
|
||||
// let b_33 := 0
|
||||
// b_33 := sload(mload(a_32))
|
||||
// let a_35 := b_33
|
||||
// let b_36 := 0
|
||||
// b_36 := sload(mload(a_35))
|
||||
// let a_38 := b_36
|
||||
// let b_39 := 0
|
||||
// b_39 := sload(mload(a_38))
|
||||
// let a_41 := b_39
|
||||
// let b_42 := 0
|
||||
// b_42 := sload(mload(a_41))
|
||||
// let a_44 := b_42
|
||||
// let b_45 := 0
|
||||
// b_45 := sload(mload(a_44))
|
||||
// let a_47 := b_45
|
||||
// let b_48 := 0
|
||||
// b_48 := sload(mload(a_47))
|
||||
// let a_50 := b_48
|
||||
// let b_51 := 0
|
||||
// b_51 := sload(mload(a_50))
|
||||
// let a_53 := b_51
|
||||
// let b_54 := 0
|
||||
// b_54 := sload(mload(a_53))
|
||||
// let a_56 := b_54
|
||||
// let b_57 := 0
|
||||
// b_57 := sload(mload(a_56))
|
||||
// let x_1 := f(f(f(f(f(f(b_57))))))
|
||||
// }
|
||||
// function f(a) -> b
|
||||
// {
|
||||
|
@ -8,8 +8,8 @@
|
||||
// fullInliner
|
||||
// {
|
||||
// {
|
||||
// let f_a := mload(0)
|
||||
// sstore(f_a, f_a)
|
||||
// let a_3 := mload(0)
|
||||
// sstore(a_3, a_3)
|
||||
// }
|
||||
// function f(a)
|
||||
// {
|
||||
|
@ -13,26 +13,26 @@
|
||||
// {
|
||||
// {
|
||||
// for {
|
||||
// let f_a := 0
|
||||
// let f_r := 0
|
||||
// sstore(f_a, 0)
|
||||
// f_r := f_a
|
||||
// let x := f_r
|
||||
// let a_3 := 0
|
||||
// let r_4 := 0
|
||||
// sstore(a_3, 0)
|
||||
// r_4 := a_3
|
||||
// let x := r_4
|
||||
// }
|
||||
// f(x)
|
||||
// {
|
||||
// let f_a_3 := x
|
||||
// let f_r_4 := 0
|
||||
// sstore(f_a_3, 0)
|
||||
// f_r_4 := f_a_3
|
||||
// x := f_r_4
|
||||
// let a_6 := x
|
||||
// let r_7 := 0
|
||||
// sstore(a_6, 0)
|
||||
// r_7 := a_6
|
||||
// x := r_7
|
||||
// }
|
||||
// {
|
||||
// let f_a_6 := x
|
||||
// let f_r_7 := 0
|
||||
// sstore(f_a_6, 0)
|
||||
// f_r_7 := f_a_6
|
||||
// let t := f_r_7
|
||||
// let a_9 := x
|
||||
// let r_10 := 0
|
||||
// sstore(a_9, 0)
|
||||
// r_10 := a_9
|
||||
// let t := r_10
|
||||
// }
|
||||
// }
|
||||
// function f(a) -> r
|
||||
|
@ -13,11 +13,11 @@
|
||||
// {
|
||||
// {
|
||||
// let _1 := 2
|
||||
// let f_a := 7
|
||||
// let f_x := 0
|
||||
// let f_r := mul(f_a, f_a)
|
||||
// f_x := add(f_r, f_r)
|
||||
// pop(add(f_x, _1))
|
||||
// let a_5 := 7
|
||||
// let x_6 := 0
|
||||
// let r_7 := mul(a_5, a_5)
|
||||
// x_6 := add(r_7, r_7)
|
||||
// pop(add(x_6, _1))
|
||||
// }
|
||||
// function f(a) -> x
|
||||
// {
|
||||
|
@ -8,7 +8,7 @@
|
||||
// fullInliner
|
||||
// {
|
||||
// {
|
||||
// let f_a := mload(0)
|
||||
// let a_4 := mload(0)
|
||||
// f(1)
|
||||
// }
|
||||
// function f(a)
|
||||
|
@ -10,11 +10,11 @@
|
||||
// {
|
||||
// {
|
||||
// let _2 := mload(7)
|
||||
// let f_a := sload(mload(2))
|
||||
// let f_x := 0
|
||||
// let f_r := mul(f_a, f_a)
|
||||
// f_x := add(f_r, f_r)
|
||||
// let y := add(f_x, _2)
|
||||
// let a_7 := sload(mload(2))
|
||||
// let x_8 := 0
|
||||
// let r_9 := mul(a_7, a_7)
|
||||
// x_8 := add(r_9, r_9)
|
||||
// let y := add(x_8, _2)
|
||||
// }
|
||||
// function f(a) -> x
|
||||
// {
|
||||
|
@ -1103,17 +1103,17 @@
|
||||
// {
|
||||
// revert(value4, value4)
|
||||
// }
|
||||
// let abi_decode_length := calldataload(_2)
|
||||
// if gt(abi_decode_length, _1)
|
||||
// let length := calldataload(_2)
|
||||
// if gt(length, _1)
|
||||
// {
|
||||
// revert(value4, value4)
|
||||
// }
|
||||
// if gt(add(add(_2, abi_decode_length), 32), dataEnd)
|
||||
// if gt(add(add(_2, length), 32), dataEnd)
|
||||
// {
|
||||
// revert(value4, value4)
|
||||
// }
|
||||
// value2 := add(_2, 32)
|
||||
// value3 := abi_decode_length
|
||||
// value3 := length
|
||||
// let _3 := calldataload(add(headStart, 96))
|
||||
// if iszero(lt(_3, 3))
|
||||
// {
|
||||
|
@ -461,36 +461,36 @@
|
||||
// let _1 := 0x20
|
||||
// let _2 := 0
|
||||
// let _3 := mload(_2)
|
||||
// let abi_encode_pos := _1
|
||||
// let abi_encode_length := mload(_3)
|
||||
// mstore(_1, abi_encode_length)
|
||||
// abi_encode_pos := 64
|
||||
// let abi_encode_srcPtr := add(_3, _1)
|
||||
// let abi_encode_i := _2
|
||||
// let pos := _1
|
||||
// let length := mload(_3)
|
||||
// mstore(_1, length)
|
||||
// pos := 64
|
||||
// let srcPtr := add(_3, _1)
|
||||
// let i := _2
|
||||
// for {
|
||||
// }
|
||||
// lt(abi_encode_i, abi_encode_length)
|
||||
// lt(i, length)
|
||||
// {
|
||||
// abi_encode_i := add(abi_encode_i, 1)
|
||||
// i := add(i, 1)
|
||||
// }
|
||||
// {
|
||||
// let _4 := mload(abi_encode_srcPtr)
|
||||
// let abi_encode_pos_1 := abi_encode_pos
|
||||
// let abi_encode_srcPtr_1 := _4
|
||||
// let abi_encode_i_1 := _2
|
||||
// let _4 := mload(srcPtr)
|
||||
// let pos_1 := pos
|
||||
// let srcPtr_1 := _4
|
||||
// let i_1 := _2
|
||||
// for {
|
||||
// }
|
||||
// lt(abi_encode_i_1, 0x3)
|
||||
// lt(i_1, 0x3)
|
||||
// {
|
||||
// abi_encode_i_1 := add(abi_encode_i_1, 1)
|
||||
// i_1 := add(i_1, 1)
|
||||
// }
|
||||
// {
|
||||
// mstore(abi_encode_pos_1, and(mload(abi_encode_srcPtr_1), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
|
||||
// abi_encode_srcPtr_1 := add(abi_encode_srcPtr_1, _1)
|
||||
// abi_encode_pos_1 := add(abi_encode_pos_1, _1)
|
||||
// mstore(pos_1, and(mload(srcPtr_1), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
|
||||
// srcPtr_1 := add(srcPtr_1, _1)
|
||||
// pos_1 := add(pos_1, _1)
|
||||
// }
|
||||
// abi_encode_srcPtr := add(abi_encode_srcPtr, _1)
|
||||
// abi_encode_pos := add(abi_encode_pos, 0x60)
|
||||
// srcPtr := add(srcPtr, _1)
|
||||
// pos := add(pos, 0x60)
|
||||
// }
|
||||
// let _5 := mload(64)
|
||||
// let _6 := mload(_1)
|
||||
@ -498,22 +498,22 @@
|
||||
// {
|
||||
// revert(_2, _2)
|
||||
// }
|
||||
// let abi_decode_offset := calldataload(add(_6, 64))
|
||||
// let abi_decode := 0xffffffffffffffff
|
||||
// if gt(abi_decode_offset, abi_decode)
|
||||
// let offset := calldataload(add(_6, 64))
|
||||
// let _7 := 0xffffffffffffffff
|
||||
// if gt(offset, _7)
|
||||
// {
|
||||
// revert(_2, _2)
|
||||
// }
|
||||
// let abi_decode_value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(_6, abi_decode_offset), _5)
|
||||
// let abi_decode_offset_1 := calldataload(add(_6, 96))
|
||||
// if gt(abi_decode_offset_1, abi_decode)
|
||||
// let value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(_6, offset), _5)
|
||||
// let offset_1 := calldataload(add(_6, 96))
|
||||
// if gt(offset_1, _7)
|
||||
// {
|
||||
// revert(_2, _2)
|
||||
// }
|
||||
// let abi_decode_value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(_6, abi_decode_offset_1), _5)
|
||||
// let value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(_6, offset_1), _5)
|
||||
// sstore(calldataload(_6), calldataload(add(_6, _1)))
|
||||
// sstore(abi_decode_value2, abi_decode_value3)
|
||||
// sstore(_2, abi_encode_pos)
|
||||
// sstore(value2, value3)
|
||||
// sstore(_2, pos)
|
||||
// function abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(offset, end) -> array
|
||||
// {
|
||||
// if iszero(slt(add(offset, 0x1f), end))
|
||||
@ -543,29 +543,29 @@
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// let abi_decode_dst := allocateMemory(array_allocation_size_t_array$_t_uint256_$2_memory(0x2))
|
||||
// let abi_decode_dst_1 := abi_decode_dst
|
||||
// let abi_decode_src := src
|
||||
// let abi_decode := add(src, 0x40)
|
||||
// if gt(abi_decode, end)
|
||||
// let dst_1 := allocateMemory(array_allocation_size_t_array$_t_uint256_$2_memory(0x2))
|
||||
// let dst_2 := dst_1
|
||||
// let src_1 := src
|
||||
// let _2 := add(src, 0x40)
|
||||
// if gt(_2, end)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// let abi_decode_i := 0
|
||||
// let i_1 := 0
|
||||
// for {
|
||||
// }
|
||||
// lt(abi_decode_i, 0x2)
|
||||
// lt(i_1, 0x2)
|
||||
// {
|
||||
// abi_decode_i := add(abi_decode_i, 1)
|
||||
// i_1 := add(i_1, 1)
|
||||
// }
|
||||
// {
|
||||
// mstore(abi_decode_dst, calldataload(abi_decode_src))
|
||||
// abi_decode_dst := add(abi_decode_dst, _1)
|
||||
// abi_decode_src := add(abi_decode_src, _1)
|
||||
// mstore(dst_1, calldataload(src_1))
|
||||
// dst_1 := add(dst_1, _1)
|
||||
// src_1 := add(src_1, _1)
|
||||
// }
|
||||
// mstore(dst, abi_decode_dst_1)
|
||||
// mstore(dst, dst_2)
|
||||
// dst := add(dst, _1)
|
||||
// src := abi_decode
|
||||
// src := _2
|
||||
// }
|
||||
// }
|
||||
// function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array
|
||||
|
@ -231,107 +231,108 @@
|
||||
// ----
|
||||
// fullSuite
|
||||
// {
|
||||
// let validateJo := 0x80
|
||||
// mstore(validateJo, 7673901602397024137095011250362199966051872585513276903826533215767972925880)
|
||||
// let _1 := 0x80
|
||||
// mstore(_1, 7673901602397024137095011250362199966051872585513276903826533215767972925880)
|
||||
// mstore(0xa0, 8489654445897228341090914135473290831551238522473825886865492707826370766375)
|
||||
// let validateJo_m := calldataload(0x24)
|
||||
// let validateJo_n := calldataload(add(0x04, calldataload(0x04)))
|
||||
// let validateJo_gen_order := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
|
||||
// let validateJo_challenge := mod(calldataload(0x44), validateJo_gen_order)
|
||||
// if gt(validateJo_m, validateJo_n)
|
||||
// let m := calldataload(0x24)
|
||||
// let n := calldataload(add(0x04, calldataload(0x04)))
|
||||
// let gen_order := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
|
||||
// let challenge := mod(calldataload(0x44), gen_order)
|
||||
// if gt(m, n)
|
||||
// {
|
||||
// mstore(0x00, 404)
|
||||
// revert(0x00, 0x20)
|
||||
// }
|
||||
// let validateJo_kn := calldataload(add(calldatasize(), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40))
|
||||
// let kn := calldataload(add(calldatasize(), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40))
|
||||
// mstore(0x2a0, caller())
|
||||
// mstore(0x2c0, validateJo_kn)
|
||||
// mstore(0x2e0, validateJo_m)
|
||||
// validateJo_kn := mulmod(sub(validateJo_gen_order, validateJo_kn), validateJo_challenge, validateJo_gen_order)
|
||||
// hashCommitments(add(0x04, calldataload(0x04)), validateJo_n)
|
||||
// let validateJo_b := add(0x300, mul(validateJo_n, validateJo))
|
||||
// let validateJo_i := 0
|
||||
// let validateJo_i_1 := validateJo_i
|
||||
// mstore(0x2c0, kn)
|
||||
// mstore(0x2e0, m)
|
||||
// kn := mulmod(sub(gen_order, kn), challenge, gen_order)
|
||||
// hashCommitments(add(0x04, calldataload(0x04)), n)
|
||||
// let b := add(0x300, mul(n, _1))
|
||||
// let i := 0
|
||||
// let i_1 := i
|
||||
// for {
|
||||
// }
|
||||
// lt(validateJo_i, validateJo_n)
|
||||
// lt(i, n)
|
||||
// {
|
||||
// validateJo_i := add(validateJo_i, 0x01)
|
||||
// i := add(i, 0x01)
|
||||
// }
|
||||
// {
|
||||
// let validateJo_1 := add(calldataload(0x04), mul(validateJo_i, 0xc0))
|
||||
// let validateJo_k := validateJo_i_1
|
||||
// let validateJo_a := calldataload(add(validateJo_1, 0x44))
|
||||
// let validateJo_c := validateJo_challenge
|
||||
// switch eq(add(validateJo_i, 0x01), validateJo_n)
|
||||
// let _2 := add(calldataload(0x04), mul(i, 0xc0))
|
||||
// let k := i_1
|
||||
// let a := calldataload(add(_2, 0x44))
|
||||
// let c := challenge
|
||||
// switch eq(add(i, 0x01), n)
|
||||
// case 1 {
|
||||
// validateJo_k := validateJo_kn
|
||||
// if eq(validateJo_m, validateJo_n)
|
||||
// k := kn
|
||||
// if eq(m, n)
|
||||
// {
|
||||
// validateJo_k := sub(validateJo_gen_order, validateJo_kn)
|
||||
// k := sub(gen_order, kn)
|
||||
// }
|
||||
// }
|
||||
// case 0 {
|
||||
// validateJo_k := calldataload(add(validateJo_1, 0x24))
|
||||
// k := calldataload(add(_2, 0x24))
|
||||
// }
|
||||
// validateCommitment(add(validateJo_1, 0x24), validateJo_k, validateJo_a)
|
||||
// switch gt(add(validateJo_i, 0x01), validateJo_m)
|
||||
// validateCommitment(add(_2, 0x24), k, a)
|
||||
// switch gt(add(i, 0x01), m)
|
||||
// case 1 {
|
||||
// validateJo_kn := addmod(validateJo_kn, sub(validateJo_gen_order, validateJo_k), validateJo_gen_order)
|
||||
// let validateJo_x := mod(mload(validateJo_i_1), validateJo_gen_order)
|
||||
// validateJo_k := mulmod(validateJo_k, validateJo_x, validateJo_gen_order)
|
||||
// validateJo_a := mulmod(validateJo_a, validateJo_x, validateJo_gen_order)
|
||||
// validateJo_c := mulmod(validateJo_challenge, validateJo_x, validateJo_gen_order)
|
||||
// mstore(validateJo_i_1, keccak256(validateJo_i_1, 0x20))
|
||||
// kn := addmod(kn, sub(gen_order, k), gen_order)
|
||||
// let x := mod(mload(i_1), gen_order)
|
||||
// k := mulmod(k, x, gen_order)
|
||||
// a := mulmod(a, x, gen_order)
|
||||
// c := mulmod(challenge, x, gen_order)
|
||||
// mstore(i_1, keccak256(i_1, 0x20))
|
||||
// }
|
||||
// case 0 {
|
||||
// validateJo_kn := addmod(validateJo_kn, validateJo_k, validateJo_gen_order)
|
||||
// kn := addmod(kn, k, gen_order)
|
||||
// }
|
||||
// let validateJo_2 := 0x40
|
||||
// calldatacopy(0xe0, add(validateJo_1, 164), validateJo_2)
|
||||
// calldatacopy(0x20, add(validateJo_1, 100), validateJo_2)
|
||||
// mstore(0x120, sub(validateJo_gen_order, validateJo_c))
|
||||
// mstore(0x60, validateJo_k)
|
||||
// mstore(0xc0, validateJo_a)
|
||||
// let validateJo_result := call(gas(), 7, validateJo_i_1, 0xe0, 0x60, 0x1a0, validateJo_2)
|
||||
// let validateJo_result_1 := and(validateJo_result, call(gas(), 7, validateJo_i_1, 0x20, 0x60, 0x120, validateJo_2))
|
||||
// let validateJo_result_2 := and(validateJo_result_1, call(gas(), 7, validateJo_i_1, validateJo, 0x60, 0x160, validateJo_2))
|
||||
// let validateJo_result_3 := and(validateJo_result_2, call(gas(), 6, validateJo_i_1, 0x120, validateJo, 0x160, validateJo_2))
|
||||
// validateJo_result := and(validateJo_result_3, call(gas(), 6, validateJo_i_1, 0x160, validateJo, validateJo_b, validateJo_2))
|
||||
// if eq(validateJo_i, validateJo_m)
|
||||
// let _3 := 0x40
|
||||
// calldatacopy(0xe0, add(_2, 164), _3)
|
||||
// calldatacopy(0x20, add(_2, 100), _3)
|
||||
// mstore(0x120, sub(gen_order, c))
|
||||
// let _4 := 0x60
|
||||
// mstore(_4, k)
|
||||
// mstore(0xc0, a)
|
||||
// let result := call(gas(), 7, i_1, 0xe0, _4, 0x1a0, _3)
|
||||
// let result_1 := and(result, call(gas(), 7, i_1, 0x20, _4, 0x120, _3))
|
||||
// let result_2 := and(result_1, call(gas(), 7, i_1, _1, _4, 0x160, _3))
|
||||
// let result_3 := and(result_2, call(gas(), 6, i_1, 0x120, _1, 0x160, _3))
|
||||
// result := and(result_3, call(gas(), 6, i_1, 0x160, _1, b, _3))
|
||||
// if eq(i, m)
|
||||
// {
|
||||
// mstore(0x260, mload(0x20))
|
||||
// mstore(0x280, mload(validateJo_2))
|
||||
// mstore(0x280, mload(_3))
|
||||
// mstore(0x1e0, mload(0xe0))
|
||||
// mstore(0x200, sub(0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47, mload(0x100)))
|
||||
// }
|
||||
// if gt(validateJo_i, validateJo_m)
|
||||
// if gt(i, m)
|
||||
// {
|
||||
// mstore(0x60, validateJo_c)
|
||||
// let validateJo_result_4 := and(validateJo_result, call(gas(), 7, validateJo_i_1, 0x20, 0x60, 0x220, validateJo_2))
|
||||
// let validateJo_result_5 := and(validateJo_result_4, call(gas(), 6, validateJo_i_1, 0x220, validateJo, 0x260, validateJo_2))
|
||||
// validateJo_result := and(validateJo_result_5, call(gas(), 6, validateJo_i_1, 0x1a0, validateJo, 0x1e0, validateJo_2))
|
||||
// mstore(_4, c)
|
||||
// let result_4 := and(result, call(gas(), 7, i_1, 0x20, _4, 0x220, _3))
|
||||
// let result_5 := and(result_4, call(gas(), 6, i_1, 0x220, _1, 0x260, _3))
|
||||
// result := and(result_5, call(gas(), 6, i_1, 0x1a0, _1, 0x1e0, _3))
|
||||
// }
|
||||
// if iszero(validateJo_result)
|
||||
// if iszero(result)
|
||||
// {
|
||||
// mstore(validateJo_i_1, 400)
|
||||
// revert(validateJo_i_1, 0x20)
|
||||
// mstore(i_1, 400)
|
||||
// revert(i_1, 0x20)
|
||||
// }
|
||||
// validateJo_b := add(validateJo_b, validateJo_2)
|
||||
// b := add(b, _3)
|
||||
// }
|
||||
// if lt(validateJo_m, validateJo_n)
|
||||
// if lt(m, n)
|
||||
// {
|
||||
// validatePairing(0x64)
|
||||
// }
|
||||
// if iszero(eq(mod(keccak256(0x2a0, add(validateJo_b, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60)), validateJo_gen_order), validateJo_challenge))
|
||||
// if iszero(eq(mod(keccak256(0x2a0, add(b, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60)), gen_order), challenge))
|
||||
// {
|
||||
// mstore(validateJo_i_1, 404)
|
||||
// revert(validateJo_i_1, 0x20)
|
||||
// mstore(i_1, 404)
|
||||
// revert(i_1, 0x20)
|
||||
// }
|
||||
// mstore(validateJo_i_1, 0x01)
|
||||
// return(validateJo_i_1, 0x20)
|
||||
// mstore(validateJo_i_1, 404)
|
||||
// revert(validateJo_i_1, 0x20)
|
||||
// mstore(i_1, 0x01)
|
||||
// return(i_1, 0x20)
|
||||
// mstore(i_1, 404)
|
||||
// revert(i_1, 0x20)
|
||||
// function validatePairing(t2)
|
||||
// {
|
||||
// let t2_x := calldataload(t2)
|
||||
|
@ -19,10 +19,10 @@
|
||||
// ----
|
||||
// fullSuite
|
||||
// {
|
||||
// let allocate := 0x40
|
||||
// mstore(allocate, add(mload(allocate), 0x20))
|
||||
// let allocate_p := mload(allocate)
|
||||
// mstore(allocate, add(allocate_p, allocate))
|
||||
// mstore(add(allocate_p, 96), 2)
|
||||
// mstore(allocate, 0x20)
|
||||
// let _1 := 0x40
|
||||
// mstore(_1, add(mload(_1), 0x20))
|
||||
// let p := mload(_1)
|
||||
// mstore(_1, add(p, _1))
|
||||
// mstore(add(p, 96), 2)
|
||||
// mstore(_1, 0x20)
|
||||
// }
|
||||
|
Loading…
Reference in New Issue
Block a user