Use .slot and .offest to access storage items.

This commit is contained in:
chriseth
2020-07-13 14:59:22 +02:00
parent 8eee3ed3a2
commit fc2e9ec2ff
60 changed files with 158 additions and 133 deletions
@@ -4,28 +4,28 @@ contract C {
function f() internal pure {
S storage c;
assembly {
for {} eq(0,0) { c_slot := s_slot } {}
for {} eq(0,0) { c.slot := s.slot } {}
}
c;
}
function g() internal pure {
S storage c;
assembly {
for {} eq(0,1) { c_slot := s_slot } {}
for {} eq(0,1) { c.slot := s.slot } {}
}
c;
}
function h() internal pure {
S storage c;
assembly {
for {} eq(0,0) {} { c_slot := s_slot }
for {} eq(0,0) {} { c.slot := s.slot }
}
c;
}
function i() internal pure {
S storage c;
assembly {
for {} eq(0,1) {} { c_slot := s_slot }
for {} eq(0,1) {} { c.slot := s.slot }
}
c;
}
@@ -4,14 +4,14 @@ contract C {
function f() internal pure {
S storage c;
assembly {
for { c_slot := s_slot } iszero(0) {} {}
for { c.slot := s.slot } iszero(0) {} {}
}
c;
}
function g() internal pure {
S storage c;
assembly {
for { c_slot := s_slot } iszero(1) {} {}
for { c.slot := s.slot } iszero(1) {} {}
}
c;
}
@@ -4,7 +4,7 @@ contract C {
function f(bool flag) internal pure {
S storage c;
assembly {
if flag { c_slot := s_slot }
if flag { c.slot := s.slot }
}
c;
}
@@ -7,7 +7,7 @@ contract C {
assembly {
function f() { return(0, 0) }
f()
c_slot := s_slot
c.slot := s.slot
}
c;
}
@@ -4,7 +4,7 @@ contract C {
function f() internal pure {
S storage c;
assembly {
c_slot := s_slot
c.slot := s.slot
}
c;
}
@@ -5,7 +5,7 @@ contract C {
S storage c;
assembly {
switch a
case 0 { c_slot := s_slot }
case 0 { c.slot := s.slot }
}
c;
}
@@ -13,8 +13,8 @@ contract C {
S storage c;
assembly {
switch flag
case 0 { c_slot := s_slot }
case 1 { c_slot := s_slot }
case 0 { c.slot := s.slot }
case 1 { c.slot := s.slot }
}
c;
}
@@ -22,7 +22,7 @@ contract C {
S storage c;
assembly {
switch a
case 0 { c_slot := s_slot }
case 0 { c.slot := s.slot }
default { return(0,0) }
}
c;
@@ -5,8 +5,8 @@ contract C {
S storage c;
assembly {
switch flag
case 0 { c_slot := s_slot }
default { c_slot := s_slot }
case 0 { c.slot := s.slot }
default { c.slot := s.slot }
}
c;
}
@@ -15,7 +15,7 @@ contract C {
assembly {
switch a
case 0 { revert(0, 0) }
default { c_slot := s_slot }
default { c.slot := s.slot }
}
c;
}