mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Use .slot and .offest to access storage items.
This commit is contained in:
+4
-4
@@ -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;
|
||||
}
|
||||
|
||||
+2
-2
@@ -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;
|
||||
}
|
||||
|
||||
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ contract C {
|
||||
assembly {
|
||||
function f() { return(0, 0) }
|
||||
f()
|
||||
c_slot := s_slot
|
||||
c.slot := s.slot
|
||||
}
|
||||
c;
|
||||
}
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ contract C {
|
||||
function f() internal pure {
|
||||
S storage c;
|
||||
assembly {
|
||||
c_slot := s_slot
|
||||
c.slot := s.slot
|
||||
}
|
||||
c;
|
||||
}
|
||||
|
||||
+4
-4
@@ -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;
|
||||
|
||||
+3
-3
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user