Created
March 17, 2021 17:54
-
-
Save hrkrshnn/e6bf827d1ee136f03fd3de34f0ceaf93 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff -u /tmp/empty_bytesold.yul /tmp/empty_bytesnew.yul | |
| --- /tmp/empty_bytesold.yul 2021-03-17 18:53:59.463802461 +0100 | |
| +++ /tmp/empty_bytesnew.yul 2021-03-17 18:53:23.319922761 +0100 | |
| @@ -87,20 +87,21 @@ | |
| { | |
| let data := sload(array) | |
| let oldLen := extract_byte_array_length(data) | |
| - let _1 := add(oldLen, 1) | |
| + let _1 := 1 | |
| + let _2 := add(oldLen, _1) | |
| switch lt(oldLen, 32) | |
| case 0 { | |
| - sstore(array, add(mul(2, _1), 1)) | |
| + sstore(array, add(shl(_1, _2), _1)) | |
| } | |
| default { | |
| - switch lt(_1, 32) | |
| + switch lt(_2, 32) | |
| case 0 { | |
| mstore(slot, array) | |
| sstore(keccak256(slot, 32), and(not(255), data)) | |
| - sstore(array, add(mul(2, _1), 1)) | |
| + sstore(array, add(shl(_1, _2), _1)) | |
| } | |
| default { | |
| - sstore(array, or(and(data, not(shr(mul(8, _1), not(0)))), mul(2, _1))) | |
| + sstore(array, or(and(data, not(shr(shl(3, _2), not(0)))), shl(_1, _2))) | |
| } | |
| } | |
| let slot_1, offset_1 := storage_array_index_access_bytes(array, oldLen) | |
| @@ -109,7 +110,7 @@ | |
| } | |
| function extract_byte_array_length(data) -> length | |
| { | |
| - length := div(data, 2) | |
| + length := shr(1, data) | |
| let outOfPlaceEncoding := and(data, 1) | |
| if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) } | |
| if eq(outOfPlaceEncoding, lt(length, 32)) | |
| @@ -122,7 +123,7 @@ | |
| function fun_a(var_index) -> var | |
| { | |
| let _1, _2 := storage_array_index_access_bytes(var, var_index) | |
| - var := shl(248, shr(mul(_2, 8), sload(_1))) | |
| + var := shl(248, shr(shl(3, _2), sload(_1))) | |
| } | |
| function fun_f() | |
| { | |
| @@ -147,7 +148,7 @@ | |
| let _1, _2 := array_push_zero_bytes_storage_ptr(var_i) | |
| let _3 := 0xff | |
| let _4 := sload(_1) | |
| - let shiftBits := mul(_2, 8) | |
| + let shiftBits := shl(3, _2) | |
| let mask := shl(shiftBits, _3) | |
| sstore(_1, or(and(_4, not(mask)), and(shl(shiftBits, and(var_i_1, _3)), mask))) | |
| } | |
| @@ -166,7 +167,7 @@ | |
| case 0 { | |
| mstore(slot, array) | |
| let data := keccak256(slot, 0x20) | |
| - slot := add(data, div(index, 0x20)) | |
| + slot := add(data, shr(5, index)) | |
| } | |
| default { slot := array } | |
| } | |
| Diff finished. Wed Mar 17 18:54:06 2021 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment