Skip to content

Commit c4b6f5f

Browse files
committed
test: Properly clear storage dirty flag
Clear storage dirty flag between transactions in EVMHost. The EIP-2200 dirty flag should be persisted only in a single transaction.
1 parent d472c94 commit c4b6f5f

26 files changed

+132
-106
lines changed

test/EVMHost.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,13 @@ void EVMHost::newTransactionFrame()
174174
{
175175
// Clear EIP-2929 account access indicator
176176
recorded_account_accesses.clear();
177-
// Clear EIP-2929 storage access indicator
177+
178178
for (auto& [address, account]: accounts)
179179
for (auto& [slot, value]: account.storage)
180-
value.access_status = EVMC_ACCESS_COLD;
180+
{
181+
value.access_status = EVMC_ACCESS_COLD; // Clear EIP-2929 storage access indicator
182+
value.dirty = false; // Clear EIP-2200 dirty slot flag
183+
}
181184
// Process selfdestruct list
182185
for (auto& [address, _]: recorded_selfdestructs)
183186
accounts.erase(address);

test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2_in_modifier_used_in_v1_contract.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@ contract C is B {
3939
// ----
4040
// test() -> 5, 10
4141
// gas irOptimized: 87337
42-
// gas legacy: 98881
42+
// gas legacy: 104481

test/libsolidity/semanticTests/array/byte_array_storage_layout.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ contract c {
4646
// storageEmpty -> 0
4747
// test_long() -> 67
4848
// gas irOptimized: 89148
49-
// gas legacy: 103039
50-
// gas legacyOptimized: 100493
49+
// gas legacy: 105839
50+
// gas legacyOptimized: 103293
5151
// storageEmpty -> 0
5252
// test_pop() -> 1780731860627700044960722568376592200742329637303199754547598369979433020
5353
// gas legacy: 61930

test/libsolidity/semanticTests/array/copying/array_copy_including_array.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ contract c {
4040
// gas legacyOptimized: 4548309
4141
// storageEmpty -> 1
4242
// clear() -> 0, 0
43-
// gas irOptimized: 4477223
44-
// gas legacy: 4410748
45-
// gas legacyOptimized: 4382489
43+
// gas irOptimized: 4517023
44+
// gas legacy: 4450548
45+
// gas legacyOptimized: 4422289
4646
// storageEmpty -> 1

test/libsolidity/semanticTests/array/copying/array_nested_memory_to_storage.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,6 @@ contract Test {
4444
// test1() -> 3
4545
// test2() -> 6
4646
// test3() -> 24
47-
// gas irOptimized: 133260
48-
// gas legacy: 134283
49-
// gas legacyOptimized: 133393
47+
// gas irOptimized: 155660
48+
// gas legacy: 156683
49+
// gas legacyOptimized: 155793

test/libsolidity/semanticTests/array/copying/bytes_storage_to_storage.sol

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,21 @@ contract c {
2121
// gas legacy: 124296
2222
// gas legacyOptimized: 119119
2323
// f(uint256): 32 -> 0x20, 0x20, 1780731860627700044960722568376592200742329637303199754547598369979440671
24-
// gas irOptimized: 118565
25-
// gas legacy: 135251
26-
// gas legacyOptimized: 130091
24+
// gas irOptimized: 124165
25+
// gas legacy: 140851
26+
// gas legacyOptimized: 135691
2727
// f(uint256): 33 -> 0x20, 33, 1780731860627700044960722568376592200742329637303199754547598369979440671, 0x2000000000000000000000000000000000000000000000000000000000000000
28-
// gas irOptimized: 125184
29-
// gas legacy: 142835
30-
// gas legacyOptimized: 137008
28+
// gas irOptimized: 130784
29+
// gas legacy: 148435
30+
// gas legacyOptimized: 142608
3131
// f(uint256): 63 -> 0x20, 0x3f, 1780731860627700044960722568376592200742329637303199754547598369979440671, 14532552714582660066924456880521368950258152170031413196862950297402215316992
32-
// gas irOptimized: 128584
33-
// gas legacy: 160875
34-
// gas legacyOptimized: 150938
32+
// gas irOptimized: 139784
33+
// gas legacy: 172075
34+
// gas legacyOptimized: 162138
3535
// f(uint256): 12 -> 0x20, 0x0c, 0x0102030405060708090a0b0000000000000000000000000000000000000000
3636
// gas legacy: 59345
3737
// gas legacyOptimized: 57279
3838
// f(uint256): 129 -> 0x20, 0x81, 1780731860627700044960722568376592200742329637303199754547598369979440671, 0x202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f, 29063324697304692433803953038474361308315562010425523193971352996434451193439, 0x606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f, -57896044618658097711785492504343953926634992332820282019728792003956564819968
39-
// gas irOptimized: 357699
40-
// gas legacy: 421674
41-
// gas legacyOptimized: 402977
39+
// gas irOptimized: 442899
40+
// gas legacy: 506874
41+
// gas legacyOptimized: 488177

test/libsolidity/semanticTests/array/copying/copy_byte_array_in_struct_to_storage.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ contract C {
3939
// gas legacy: 181047
4040
// gas legacyOptimized: 180029
4141
// g() -> 0x40, 0xc0, 0x49, 0x3132333435363738393031323334353637383930313233343536373839303120, 0x3132333435363738393031323334353637383930313233343536373839303120, 0x3132333435363738390000000000000000000000000000000000000000000000, 0x11, 0x3132333435363738393233343536373839000000000000000000000000000000
42-
// gas irOptimized: 107097
43-
// gas legacy: 110201
44-
// gas legacyOptimized: 107353
42+
// gas irOptimized: 121097
43+
// gas legacy: 124201
44+
// gas legacyOptimized: 121353
4545
// h() -> 0x40, 0x60, 0x00, 0x00
4646
// storageEmpty -> 1

test/libsolidity/semanticTests/array/copying/function_type_array_to_storage.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,6 @@ contract C {
5151
// gas legacyOptimized: 117021
5252
// test2() -> 0x20, 0x14, "[b called][a called]"
5353
// test3() -> 0x20, 0x14, "[b called][a called]"
54-
// gas irOptimized: 103256
55-
// gas legacy: 102814
56-
// gas legacyOptimized: 101706
54+
// gas irOptimized: 106056
55+
// gas legacy: 105614
56+
// gas legacyOptimized: 104506

test/libsolidity/semanticTests/array/dynamic_array_cleanup.sol

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ contract c {
1919
// gas legacyOptimized: 517027
2020
// storageEmpty -> 0
2121
// halfClear() ->
22+
// gas irOptimized: 113961
23+
// gas legacy: 113257
24+
// gas legacyOptimized: 113120
2225
// storageEmpty -> 0
2326
// fullClear() ->
2427
// storageEmpty -> 1

test/libsolidity/semanticTests/array/fixed_array_cleanup.sol

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,7 @@ contract c {
1717
// gas legacyOptimized: 467500
1818
// storageEmpty -> 0
1919
// clear() ->
20+
// gas irOptimized: 122148
21+
// gas legacy: 122440
22+
// gas legacyOptimized: 122259
2023
// storageEmpty -> 1

0 commit comments

Comments
 (0)