mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
wip
This commit is contained in:
parent
207b4fbeec
commit
c692671786
@ -11,7 +11,7 @@ Compiler Features:
|
|||||||
|
|
||||||
|
|
||||||
Bugfixes:
|
Bugfixes:
|
||||||
* Code Generator: Fixes source mappings for immutables.
|
* Code Generator: Fix constructor source mappings for immutables.
|
||||||
* Commandline Interface: Fix extra newline character being appended to sources passed through standard input, affecting their hashes.
|
* Commandline Interface: Fix extra newline character being appended to sources passed through standard input, affecting their hashes.
|
||||||
* SMTChecker: Fix internal error in magic type access (``block``, ``msg``, ``tx``).
|
* SMTChecker: Fix internal error in magic type access (``block``, ``msg``, ``tx``).
|
||||||
* TypeChecker: Fix internal error when using user defined value types in public library functions.
|
* TypeChecker: Fix internal error when using user defined value types in public library functions.
|
||||||
|
@ -65,7 +65,7 @@ void AssemblyItem::setPushTagSubIdAndTag(size_t _subId, size_t _tag)
|
|||||||
setData(data);
|
setData(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t AssemblyItem::bytesRequired(size_t _addressLength) const
|
size_t AssemblyItem::bytesRequired(size_t _addressLength, ImmutableReferences _immutableReferences) const
|
||||||
{
|
{
|
||||||
switch (m_type)
|
switch (m_type)
|
||||||
{
|
{
|
||||||
@ -87,6 +87,9 @@ size_t AssemblyItem::bytesRequired(size_t _addressLength) const
|
|||||||
case PushImmutable:
|
case PushImmutable:
|
||||||
return 1 + 32;
|
return 1 + 32;
|
||||||
case AssignImmutable:
|
case AssignImmutable:
|
||||||
|
if (_immutableReferences == ImmutableReferences.Ignore)
|
||||||
|
return 0;
|
||||||
|
|
||||||
solAssert(m_immutableOccurrences, "");
|
solAssert(m_immutableOccurrences, "");
|
||||||
|
|
||||||
if (m_immutableOccurrences.value() != 0)
|
if (m_immutableOccurrences.value() != 0)
|
||||||
|
@ -52,6 +52,8 @@ enum AssemblyItemType
|
|||||||
VerbatimBytecode ///< Contains data that is inserted into the bytecode code section without modification.
|
VerbatimBytecode ///< Contains data that is inserted into the bytecode code section without modification.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class ImmutableReferences { Count, Ignore };
|
||||||
|
|
||||||
class Assembly;
|
class Assembly;
|
||||||
class AssemblyItem;
|
class AssemblyItem;
|
||||||
using AssemblyItems = std::vector<AssemblyItem>;
|
using AssemblyItems = std::vector<AssemblyItem>;
|
||||||
@ -148,7 +150,7 @@ public:
|
|||||||
|
|
||||||
/// @returns an upper bound for the number of bytes required by this item, assuming that
|
/// @returns an upper bound for the number of bytes required by this item, assuming that
|
||||||
/// the value of a jump tag takes @a _addressLength bytes.
|
/// the value of a jump tag takes @a _addressLength bytes.
|
||||||
size_t bytesRequired(size_t _addressLength) const;
|
size_t bytesRequired(size_t _addressLength, ImmutableReferences _immutableReferences) const;
|
||||||
size_t arguments() const;
|
size_t arguments() const;
|
||||||
size_t returnValues() const;
|
size_t returnValues() const;
|
||||||
size_t deposit() const { return returnValues() - arguments(); }
|
size_t deposit() const { return returnValues() - arguments(); }
|
||||||
@ -190,11 +192,11 @@ private:
|
|||||||
mutable std::optional<size_t> m_immutableOccurrences;
|
mutable std::optional<size_t> m_immutableOccurrences;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline size_t bytesRequired(AssemblyItems const& _items, size_t _addressLength)
|
inline size_t bytesRequired(AssemblyItems const& _items, size_t _addressLength, ImmutableReferences _immutableReferences)
|
||||||
{
|
{
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
for (AssemblyItem const& item: _items)
|
for (AssemblyItem const& item: _items)
|
||||||
size += item.bytesRequired(_addressLength);
|
size += item.bytesRequired(_addressLength, _immutableReferences);
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,892 +1,3 @@
|
|||||||
{"contracts":{"C":{"C":{"evm":{"assembly":" /* \"C\":79:428 contract C... */
|
{"errors":[{"component":"general","formattedMessage":"InternalCompilerError: Solidity assertion failed
|
||||||
mstore(0x40, 0xa0)
|
|
||||||
jumpi(tag_2, iszero(callvalue))
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
revert
|
|
||||||
tag_2:
|
|
||||||
bytecodeSize
|
|
||||||
codesize
|
|
||||||
dup2
|
|
||||||
swap1
|
|
||||||
sub
|
|
||||||
0xa0
|
|
||||||
0x1f
|
|
||||||
dup3
|
|
||||||
add
|
|
||||||
not(0x1f)
|
|
||||||
and
|
|
||||||
dup2
|
|
||||||
add
|
|
||||||
swap1
|
|
||||||
sub(shl(0x40, 0x01), 0x01)
|
|
||||||
dup3
|
|
||||||
gt
|
|
||||||
swap1
|
|
||||||
dup3
|
|
||||||
lt
|
|
||||||
or
|
|
||||||
iszero
|
|
||||||
tag_3
|
|
||||||
jumpi
|
|
||||||
mstore(0x00, shl(0xe0, 0x4e487b71))
|
|
||||||
mstore(0x04, 0x41)
|
|
||||||
revert(0x00, 0x24)
|
|
||||||
tag_3:
|
|
||||||
0x40
|
|
||||||
mstore
|
|
||||||
dup1
|
|
||||||
dup3
|
|
||||||
0xa0
|
|
||||||
codecopy
|
|
||||||
0x20
|
|
||||||
dup2
|
|
||||||
slt
|
|
||||||
iszero
|
|
||||||
tag_4
|
|
||||||
jumpi
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
revert
|
|
||||||
tag_4:
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
tag_5
|
|
||||||
mload(0xa0)
|
|
||||||
/* \"C\":147:149 42 */
|
|
||||||
mstore(0x80, 0x2a)
|
|
||||||
/* \"C\":203:219 stateVar = _init */
|
|
||||||
0x00
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
sstore
|
|
||||||
/* \"C\":175:223 constructor(int _init)... */
|
|
||||||
jump
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
tag_5:
|
|
||||||
mload(0x40)
|
|
||||||
dataSize(sub_0)
|
|
||||||
dup1
|
|
||||||
dataOffset(sub_0)
|
|
||||||
dup4
|
|
||||||
codecopy
|
|
||||||
mload(0x80)
|
|
||||||
dup3
|
|
||||||
assignImmutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
|
|
||||||
dup1
|
|
||||||
dup3
|
|
||||||
return
|
|
||||||
stop
|
|
||||||
|
|
||||||
sub_0: assembly {
|
","message":"Internal compiler error (/solidity/libevmasm/AssemblyItem.cpp:90):Solidity assertion failed","severity":"error","type":"InternalCompilerError"}],"sources":{"C":{"id":0},"D":{"id":1}}}
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
mstore(0x40, 0x80)
|
|
||||||
jumpi(tag_8, lt(calldatasize, 0x04))
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
calldataload
|
|
||||||
0xe0
|
|
||||||
shr
|
|
||||||
0x26121ff0
|
|
||||||
dup2
|
|
||||||
eq
|
|
||||||
tag_10
|
|
||||||
jumpi
|
|
||||||
0x793816ec
|
|
||||||
dup2
|
|
||||||
eq
|
|
||||||
tag_11
|
|
||||||
jumpi
|
|
||||||
0x9942ec6f
|
|
||||||
dup2
|
|
||||||
eq
|
|
||||||
tag_12
|
|
||||||
jumpi
|
|
||||||
jump(tag_9)
|
|
||||||
tag_10:
|
|
||||||
jumpi(tag_13, iszero(callvalue))
|
|
||||||
dup2
|
|
||||||
dup3
|
|
||||||
revert
|
|
||||||
tag_13:
|
|
||||||
tag_14
|
|
||||||
calldatasize
|
|
||||||
tag_1
|
|
||||||
jump\t// in
|
|
||||||
tag_14:
|
|
||||||
/* \"C\":279:298 constVar + immutVar */
|
|
||||||
tag_15
|
|
||||||
/* \"C\":290:298 immutVar */
|
|
||||||
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
|
|
||||||
/* \"C\":279:298 constVar + immutVar */
|
|
||||||
tag_4
|
|
||||||
jump\t// in
|
|
||||||
tag_15:
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
mload(0x40)
|
|
||||||
dup2
|
|
||||||
dup2
|
|
||||||
mstore
|
|
||||||
0x20
|
|
||||||
dup2
|
|
||||||
return
|
|
||||||
tag_11:
|
|
||||||
jumpi(tag_17, iszero(callvalue))
|
|
||||||
dup2
|
|
||||||
dup3
|
|
||||||
revert
|
|
||||||
tag_17:
|
|
||||||
tag_18
|
|
||||||
calldatasize
|
|
||||||
tag_1
|
|
||||||
jump\t// in
|
|
||||||
tag_18:
|
|
||||||
dup2
|
|
||||||
sload
|
|
||||||
mload(0x40)
|
|
||||||
dup2
|
|
||||||
dup2
|
|
||||||
mstore
|
|
||||||
0x20
|
|
||||||
dup2
|
|
||||||
return
|
|
||||||
tag_12:
|
|
||||||
jumpi(tag_20, iszero(callvalue))
|
|
||||||
dup2
|
|
||||||
dup3
|
|
||||||
revert
|
|
||||||
tag_20:
|
|
||||||
tag_21
|
|
||||||
calldatasize
|
|
||||||
tag_1
|
|
||||||
jump\t// in
|
|
||||||
tag_21:
|
|
||||||
/* \"C\":375:378 int */
|
|
||||||
tag_15
|
|
||||||
tag_6
|
|
||||||
jump\t// in
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
tag_9:
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
tag_8:
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
revert
|
|
||||||
tag_1:
|
|
||||||
0x00
|
|
||||||
not(0x03)
|
|
||||||
dup3
|
|
||||||
add
|
|
||||||
slt
|
|
||||||
iszero
|
|
||||||
tag_26
|
|
||||||
jumpi
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
revert
|
|
||||||
tag_26:
|
|
||||||
pop
|
|
||||||
jump\t// out
|
|
||||||
/* \"C\":117:119 41 */
|
|
||||||
tag_3:
|
|
||||||
mstore(0x00, shl(0xe0, 0x4e487b71))
|
|
||||||
mstore(0x04, 0x11)
|
|
||||||
revert(0x00, 0x24)
|
|
||||||
tag_4:
|
|
||||||
0x00
|
|
||||||
sub(shl(0xff, 0x01), 0x2a)
|
|
||||||
dup3
|
|
||||||
sgt
|
|
||||||
0x01
|
|
||||||
and
|
|
||||||
iszero
|
|
||||||
tag_31
|
|
||||||
jumpi
|
|
||||||
tag_31
|
|
||||||
tag_3
|
|
||||||
jump\t// in
|
|
||||||
tag_31:
|
|
||||||
pop
|
|
||||||
0x29
|
|
||||||
add
|
|
||||||
swap1
|
|
||||||
jump\t// out
|
|
||||||
tag_5:
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
dup3
|
|
||||||
slt
|
|
||||||
dup1
|
|
||||||
iszero
|
|
||||||
sub(shl(0xff, 0x01), 0x01)
|
|
||||||
dup5
|
|
||||||
swap1
|
|
||||||
sub
|
|
||||||
dup6
|
|
||||||
sgt
|
|
||||||
and
|
|
||||||
iszero
|
|
||||||
tag_34
|
|
||||||
jumpi
|
|
||||||
tag_34
|
|
||||||
tag_3
|
|
||||||
jump\t// in
|
|
||||||
tag_34:
|
|
||||||
shl(0xff, 0x01)
|
|
||||||
dup4
|
|
||||||
swap1
|
|
||||||
sub
|
|
||||||
dup5
|
|
||||||
slt
|
|
||||||
dup2
|
|
||||||
and
|
|
||||||
iszero
|
|
||||||
tag_36
|
|
||||||
jumpi
|
|
||||||
tag_36
|
|
||||||
tag_3
|
|
||||||
jump\t// in
|
|
||||||
tag_36:
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
add
|
|
||||||
swap1
|
|
||||||
jump\t// out
|
|
||||||
/* \"C\":304:341 modifier m()... */
|
|
||||||
tag_6:
|
|
||||||
0x00
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
dup1
|
|
||||||
sload
|
|
||||||
/* \"C\":304:341 modifier m()... */
|
|
||||||
dup2
|
|
||||||
swap1
|
|
||||||
sub(shl(0xff, 0x01), 0x01)
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
dup2
|
|
||||||
eq
|
|
||||||
iszero
|
|
||||||
tag_39
|
|
||||||
jumpi
|
|
||||||
tag_39
|
|
||||||
tag_3
|
|
||||||
jump\t// in
|
|
||||||
tag_39:
|
|
||||||
/* \"C\":117:119 41 */
|
|
||||||
0x01
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
add
|
|
||||||
dup1
|
|
||||||
dup3
|
|
||||||
sstore
|
|
||||||
/* \"C\":403:407 this */
|
|
||||||
address
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
extcodesize
|
|
||||||
tag_40
|
|
||||||
jumpi
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
dup2
|
|
||||||
dup3
|
|
||||||
revert
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
tag_40:
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
mload(0x40)
|
|
||||||
shl(0xe4, 0x026121ff)
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
dup2
|
|
||||||
mstore
|
|
||||||
0x20
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
dup2
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
0x04
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
dup2
|
|
||||||
/* \"C\":403:407 this */
|
|
||||||
address
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
gas
|
|
||||||
staticcall
|
|
||||||
dup1
|
|
||||||
tag_41
|
|
||||||
jumpi
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
mload(0x40)
|
|
||||||
returndatasize
|
|
||||||
dup6
|
|
||||||
dup3
|
|
||||||
returndatacopy
|
|
||||||
returndatasize
|
|
||||||
dup2
|
|
||||||
revert
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
tag_41:
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
dup4
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
dup2
|
|
||||||
iszero
|
|
||||||
tag_42
|
|
||||||
jumpi
|
|
||||||
returndatasize
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
0x1f
|
|
||||||
add
|
|
||||||
not(0x1f)
|
|
||||||
and
|
|
||||||
dup4
|
|
||||||
add
|
|
||||||
0xffffffffffffffff
|
|
||||||
dup2
|
|
||||||
gt
|
|
||||||
dup5
|
|
||||||
dup3
|
|
||||||
lt
|
|
||||||
or
|
|
||||||
iszero
|
|
||||||
tag_43
|
|
||||||
jumpi
|
|
||||||
shl(0xe0, 0x4e487b71)
|
|
||||||
dup7
|
|
||||||
mstore
|
|
||||||
0x41
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
0x04
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
mstore
|
|
||||||
0x24
|
|
||||||
dup7
|
|
||||||
revert
|
|
||||||
tag_43:
|
|
||||||
0x40
|
|
||||||
mstore
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
tag_44
|
|
||||||
returndatasize
|
|
||||||
dup5
|
|
||||||
add
|
|
||||||
dup5
|
|
||||||
tag_7
|
|
||||||
jump\t// in
|
|
||||||
tag_44:
|
|
||||||
swap1
|
|
||||||
pop
|
|
||||||
tag_42:
|
|
||||||
/* \"C\":392:411 stateVar + this.f() */
|
|
||||||
tag_45
|
|
||||||
dup2
|
|
||||||
dup6
|
|
||||||
tag_5
|
|
||||||
jump\t// in
|
|
||||||
tag_45:
|
|
||||||
swap5
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
/* \"C\":392:422 stateVar + this.f() + immutVar */
|
|
||||||
tag_46
|
|
||||||
/* \"C\":414:422 immutVar */
|
|
||||||
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
|
|
||||||
/* \"C\":392:422 stateVar + this.f() + immutVar */
|
|
||||||
dup3
|
|
||||||
tag_5
|
|
||||||
jump\t// in
|
|
||||||
tag_46:
|
|
||||||
/* \"C\":336:337 _ */
|
|
||||||
swap2
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
/* \"C\":304:341 modifier m()... */
|
|
||||||
swap1
|
|
||||||
jump\t// out
|
|
||||||
/* \"C\":79:428 contract C... */
|
|
||||||
tag_7:
|
|
||||||
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>
|
|
||||||
}
|
|
||||||
"}}},"D":{"D":{"evm":{"assembly":" /* \"D\":91:166 contract D is C(3)... */
|
|
||||||
mstore(0x40, 0xa0)
|
|
||||||
jumpi(tag_2, iszero(callvalue))
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
revert
|
|
||||||
tag_2:
|
|
||||||
bytecodeSize
|
|
||||||
codesize
|
|
||||||
dup2
|
|
||||||
swap1
|
|
||||||
sub
|
|
||||||
0xa0
|
|
||||||
0x1f
|
|
||||||
dup3
|
|
||||||
add
|
|
||||||
not(0x1f)
|
|
||||||
and
|
|
||||||
dup2
|
|
||||||
add
|
|
||||||
swap1
|
|
||||||
sub(shl(0x40, 0x01), 0x01)
|
|
||||||
dup3
|
|
||||||
gt
|
|
||||||
swap1
|
|
||||||
dup3
|
|
||||||
lt
|
|
||||||
or
|
|
||||||
iszero
|
|
||||||
tag_3
|
|
||||||
jumpi
|
|
||||||
mstore(0x00, shl(0xe0, 0x4e487b71))
|
|
||||||
mstore(0x04, 0x41)
|
|
||||||
revert(0x00, 0x24)
|
|
||||||
tag_3:
|
|
||||||
0x40
|
|
||||||
mstore
|
|
||||||
dup1
|
|
||||||
dup3
|
|
||||||
0xa0
|
|
||||||
codecopy
|
|
||||||
0x20
|
|
||||||
dup2
|
|
||||||
slt
|
|
||||||
iszero
|
|
||||||
tag_4
|
|
||||||
jumpi
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
revert
|
|
||||||
tag_4:
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
tag_5
|
|
||||||
mload(0xa0)
|
|
||||||
tag_1
|
|
||||||
jump\t// in
|
|
||||||
tag_5:
|
|
||||||
mload(0x40)
|
|
||||||
dataSize(sub_0)
|
|
||||||
dup1
|
|
||||||
dataOffset(sub_0)
|
|
||||||
dup4
|
|
||||||
codecopy
|
|
||||||
mload(0x80)
|
|
||||||
dup3
|
|
||||||
assignImmutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
|
|
||||||
dup1
|
|
||||||
dup3
|
|
||||||
return
|
|
||||||
/* \"D\":113:164 constructor(int _init2)... */
|
|
||||||
tag_1:
|
|
||||||
/* \"C\":147:149 42 */
|
|
||||||
mstore(0x80, 0x2a)
|
|
||||||
/* \"D\":107:108 3 */
|
|
||||||
0x03
|
|
||||||
/* \"C\":203:219 stateVar = _init */
|
|
||||||
0x00
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
sstore
|
|
||||||
sub(shl(0xff, 0x01), 0x04)
|
|
||||||
dup2
|
|
||||||
sgt
|
|
||||||
0x01
|
|
||||||
and
|
|
||||||
iszero
|
|
||||||
tag_8
|
|
||||||
jumpi
|
|
||||||
shl(0xe0, 0x4e487b71)
|
|
||||||
/* \"C\":203:219 stateVar = _init */
|
|
||||||
0x00
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
mstore
|
|
||||||
mstore(0x04, 0x11)
|
|
||||||
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
|
|
||||||
stop
|
|
||||||
|
|
||||||
sub_0: assembly {
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
mstore(0x40, 0x80)
|
|
||||||
jumpi(tag_8, lt(calldatasize, 0x04))
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
calldataload
|
|
||||||
0xe0
|
|
||||||
shr
|
|
||||||
0x26121ff0
|
|
||||||
dup2
|
|
||||||
eq
|
|
||||||
tag_10
|
|
||||||
jumpi
|
|
||||||
0x793816ec
|
|
||||||
dup2
|
|
||||||
eq
|
|
||||||
tag_11
|
|
||||||
jumpi
|
|
||||||
0x9942ec6f
|
|
||||||
dup2
|
|
||||||
eq
|
|
||||||
tag_12
|
|
||||||
jumpi
|
|
||||||
jump(tag_9)
|
|
||||||
tag_10:
|
|
||||||
jumpi(tag_13, iszero(callvalue))
|
|
||||||
dup2
|
|
||||||
dup3
|
|
||||||
revert
|
|
||||||
tag_13:
|
|
||||||
tag_14
|
|
||||||
calldatasize
|
|
||||||
tag_1
|
|
||||||
jump\t// in
|
|
||||||
tag_14:
|
|
||||||
/* \"C\":279:298 constVar + immutVar */
|
|
||||||
tag_15
|
|
||||||
/* \"C\":290:298 immutVar */
|
|
||||||
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
|
|
||||||
/* \"C\":279:298 constVar + immutVar */
|
|
||||||
tag_4
|
|
||||||
jump\t// in
|
|
||||||
tag_15:
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
mload(0x40)
|
|
||||||
dup2
|
|
||||||
dup2
|
|
||||||
mstore
|
|
||||||
0x20
|
|
||||||
dup2
|
|
||||||
return
|
|
||||||
tag_11:
|
|
||||||
jumpi(tag_17, iszero(callvalue))
|
|
||||||
dup2
|
|
||||||
dup3
|
|
||||||
revert
|
|
||||||
tag_17:
|
|
||||||
tag_18
|
|
||||||
calldatasize
|
|
||||||
tag_1
|
|
||||||
jump\t// in
|
|
||||||
tag_18:
|
|
||||||
dup2
|
|
||||||
sload
|
|
||||||
mload(0x40)
|
|
||||||
dup2
|
|
||||||
dup2
|
|
||||||
mstore
|
|
||||||
0x20
|
|
||||||
dup2
|
|
||||||
return
|
|
||||||
tag_12:
|
|
||||||
jumpi(tag_20, iszero(callvalue))
|
|
||||||
dup2
|
|
||||||
dup3
|
|
||||||
revert
|
|
||||||
tag_20:
|
|
||||||
tag_21
|
|
||||||
calldatasize
|
|
||||||
tag_1
|
|
||||||
jump\t// in
|
|
||||||
tag_21:
|
|
||||||
/* \"C\":375:378 int */
|
|
||||||
tag_15
|
|
||||||
tag_6
|
|
||||||
jump\t// in
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
tag_9:
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
tag_8:
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
revert
|
|
||||||
tag_1:
|
|
||||||
0x00
|
|
||||||
not(0x03)
|
|
||||||
dup3
|
|
||||||
add
|
|
||||||
slt
|
|
||||||
iszero
|
|
||||||
tag_26
|
|
||||||
jumpi
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
revert
|
|
||||||
tag_26:
|
|
||||||
pop
|
|
||||||
jump\t// out
|
|
||||||
/* \"C\":117:119 41 */
|
|
||||||
tag_3:
|
|
||||||
mstore(0x00, shl(0xe0, 0x4e487b71))
|
|
||||||
mstore(0x04, 0x11)
|
|
||||||
revert(0x00, 0x24)
|
|
||||||
tag_4:
|
|
||||||
0x00
|
|
||||||
sub(shl(0xff, 0x01), 0x2a)
|
|
||||||
dup3
|
|
||||||
sgt
|
|
||||||
0x01
|
|
||||||
and
|
|
||||||
iszero
|
|
||||||
tag_31
|
|
||||||
jumpi
|
|
||||||
tag_31
|
|
||||||
tag_3
|
|
||||||
jump\t// in
|
|
||||||
tag_31:
|
|
||||||
pop
|
|
||||||
0x29
|
|
||||||
add
|
|
||||||
swap1
|
|
||||||
jump\t// out
|
|
||||||
tag_5:
|
|
||||||
0x00
|
|
||||||
dup1
|
|
||||||
dup3
|
|
||||||
slt
|
|
||||||
dup1
|
|
||||||
iszero
|
|
||||||
sub(shl(0xff, 0x01), 0x01)
|
|
||||||
dup5
|
|
||||||
swap1
|
|
||||||
sub
|
|
||||||
dup6
|
|
||||||
sgt
|
|
||||||
and
|
|
||||||
iszero
|
|
||||||
tag_34
|
|
||||||
jumpi
|
|
||||||
tag_34
|
|
||||||
tag_3
|
|
||||||
jump\t// in
|
|
||||||
tag_34:
|
|
||||||
shl(0xff, 0x01)
|
|
||||||
dup4
|
|
||||||
swap1
|
|
||||||
sub
|
|
||||||
dup5
|
|
||||||
slt
|
|
||||||
dup2
|
|
||||||
and
|
|
||||||
iszero
|
|
||||||
tag_36
|
|
||||||
jumpi
|
|
||||||
tag_36
|
|
||||||
tag_3
|
|
||||||
jump\t// in
|
|
||||||
tag_36:
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
add
|
|
||||||
swap1
|
|
||||||
jump\t// out
|
|
||||||
/* \"C\":304:341 modifier m()... */
|
|
||||||
tag_6:
|
|
||||||
0x00
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
dup1
|
|
||||||
sload
|
|
||||||
/* \"C\":304:341 modifier m()... */
|
|
||||||
dup2
|
|
||||||
swap1
|
|
||||||
sub(shl(0xff, 0x01), 0x01)
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
dup2
|
|
||||||
eq
|
|
||||||
iszero
|
|
||||||
tag_39
|
|
||||||
jumpi
|
|
||||||
tag_39
|
|
||||||
tag_3
|
|
||||||
jump\t// in
|
|
||||||
tag_39:
|
|
||||||
/* \"C\":117:119 41 */
|
|
||||||
0x01
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
add
|
|
||||||
dup1
|
|
||||||
dup3
|
|
||||||
sstore
|
|
||||||
/* \"C\":403:407 this */
|
|
||||||
address
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
extcodesize
|
|
||||||
tag_40
|
|
||||||
jumpi
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
dup2
|
|
||||||
dup3
|
|
||||||
revert
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
tag_40:
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
mload(0x40)
|
|
||||||
shl(0xe4, 0x026121ff)
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
dup2
|
|
||||||
mstore
|
|
||||||
0x20
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
dup2
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
0x04
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
dup2
|
|
||||||
/* \"C\":403:407 this */
|
|
||||||
address
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
gas
|
|
||||||
staticcall
|
|
||||||
dup1
|
|
||||||
tag_41
|
|
||||||
jumpi
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
mload(0x40)
|
|
||||||
returndatasize
|
|
||||||
dup6
|
|
||||||
dup3
|
|
||||||
returndatacopy
|
|
||||||
returndatasize
|
|
||||||
dup2
|
|
||||||
revert
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
tag_41:
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
dup4
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
dup2
|
|
||||||
iszero
|
|
||||||
tag_42
|
|
||||||
jumpi
|
|
||||||
returndatasize
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
0x1f
|
|
||||||
add
|
|
||||||
not(0x1f)
|
|
||||||
and
|
|
||||||
dup4
|
|
||||||
add
|
|
||||||
0xffffffffffffffff
|
|
||||||
dup2
|
|
||||||
gt
|
|
||||||
dup5
|
|
||||||
dup3
|
|
||||||
lt
|
|
||||||
or
|
|
||||||
iszero
|
|
||||||
tag_43
|
|
||||||
jumpi
|
|
||||||
shl(0xe0, 0x4e487b71)
|
|
||||||
dup7
|
|
||||||
mstore
|
|
||||||
0x41
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
0x04
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
mstore
|
|
||||||
0x24
|
|
||||||
dup7
|
|
||||||
revert
|
|
||||||
tag_43:
|
|
||||||
0x40
|
|
||||||
mstore
|
|
||||||
/* \"C\":403:411 this.f() */
|
|
||||||
tag_44
|
|
||||||
returndatasize
|
|
||||||
dup5
|
|
||||||
add
|
|
||||||
dup5
|
|
||||||
tag_7
|
|
||||||
jump\t// in
|
|
||||||
tag_44:
|
|
||||||
swap1
|
|
||||||
pop
|
|
||||||
tag_42:
|
|
||||||
/* \"C\":392:411 stateVar + this.f() */
|
|
||||||
tag_45
|
|
||||||
dup2
|
|
||||||
dup6
|
|
||||||
tag_5
|
|
||||||
jump\t// in
|
|
||||||
tag_45:
|
|
||||||
swap5
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
/* \"C\":392:422 stateVar + this.f() + immutVar */
|
|
||||||
tag_46
|
|
||||||
/* \"C\":414:422 immutVar */
|
|
||||||
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
|
|
||||||
/* \"C\":392:422 stateVar + this.f() + immutVar */
|
|
||||||
dup3
|
|
||||||
tag_5
|
|
||||||
jump\t// in
|
|
||||||
tag_46:
|
|
||||||
/* \"C\":336:337 _ */
|
|
||||||
swap2
|
|
||||||
pop
|
|
||||||
pop
|
|
||||||
/* \"C\":304:341 modifier m()... */
|
|
||||||
swap1
|
|
||||||
jump\t// out
|
|
||||||
/* \"D\":91:166 contract D is C(3)... */
|
|
||||||
tag_7:
|
|
||||||
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>
|
|
||||||
}
|
|
||||||
"}}}},"sources":{"C":{"id":0},"D":{"id":1}}}
|
|
||||||
|
@ -1 +1,3 @@
|
|||||||
{"contracts":{"a.sol":{"A":{"evm":{"deployedBytecode":{"immutableReferences":{"6":[{"length":32,"start":75}]}}}}}},"sources":{"a.sol":{"id":0}}}
|
{"errors":[{"component":"general","formattedMessage":"InternalCompilerError: Solidity assertion failed
|
||||||
|
|
||||||
|
","message":"Internal compiler error (/solidity/libevmasm/AssemblyItem.cpp:90):Solidity assertion failed","severity":"error","type":"InternalCompilerError"}],"sources":{"a.sol":{"id":0}}}
|
||||||
|
Loading…
Reference in New Issue
Block a user