Skip to content

Instantly share code, notes, and snippets.

diff -u /tmp/reusingold.txt /tmp/reusing.txt
--- /tmp/reusingold.txt 2021-03-22 12:23:35.290709927 +0100
+++ /tmp/reusing.txt 2021-03-22 12:23:16.920786319 +0100
@@ -131,7 +131,7 @@
swap1
return
- auxdata: 0xa264697066735822122092e4a282bcac8bb0c90d357bcdb873ddc1bc9588a447d0d6ac847a207259854264736f6c637827302e382e332d646576656c6f702e323032312e332e32322b636f6d6d69742e36363732396134660058
+ auxdata: 0xa2646970667358221220cb392b335ceb7bfe45123f746e570e298856eb44c7a5c553f31ba6cd6734aff564736f6c63782b302e382e332d646576656c6f702e323032312e332e32322b636f6d6d69742e63336265636666652e6d6f64005c
}
diff -u /tmp/old.txt /tmp/new.txt
--- /tmp/old.txt 2021-03-22 11:58:22.634671326 +0100
+++ /tmp/new.txt 2021-03-22 12:20:11.249520574 +0100
@@ -168,43 +168,53 @@
swap1
mstore
0x40
- swap1
+ dup1
+ dup3
diff -u /tmp/mappingold.txt /tmp/mappingnew.txt
--- /tmp/mappingold.txt 2021-03-22 12:11:07.170537477 +0100
+++ /tmp/mappingnew.txt 2021-03-22 12:14:29.386786152 +0100
@@ -1,5 +1,3 @@
-#+begin_example
-
======= <stdin>:test =======
EVM assembly:
/* "<stdin>":0:848 contract test {... */
@@ -287,47 +285,57 @@
diff -u /tmp/old.yul /tmp/new.yul
--- /tmp/old.yul 2021-03-19 16:47:59.858994927 +0100
+++ /tmp/new.yul 2021-03-19 16:47:37.248088138 +0100
@@ -20,89 +20,92 @@
code {
{
mstore(64, 128)
- let _1 := 4
- if iszero(lt(calldatasize(), _1))
+ if iszero(lt(calldatasize(), 4))
diff -u /tmp/storage_old.yul /tmp/storage_new.yul
--- /tmp/storage_old.yul 2021-03-17 19:24:43.543597140 +0100
+++ /tmp/storage_new.yul 2021-03-17 19:23:55.565803795 +0100
@@ -57,7 +57,7 @@
function array_allocation_size_array_function_internal_nonpayable_returns_uint256_dyn(length) -> size
{
if gt(length, 0xffffffffffffffff) { panic_error_0x41() }
- size := add(mul(length, 0x20), 0x20)
+ size := add(shl(5, length), 0x20)
}
diff -u /tmp/bytesoldasm.txt /tmp/bytesnewasm.txt
--- /tmp/bytesoldasm.txt 2021-03-17 19:05:31.347238919 +0100
+++ /tmp/bytesnewasm.txt 2021-03-17 19:05:49.723160704 +0100
@@ -446,13 +446,13 @@
jump // out
/* "#utility.yul":591:971 */
tag_24:
- /* "#utility.yul":676:677 */
- 0x02
+ /* "#utility.yul":670:671 */
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)
diff -u /tmp/oldshl.yul /tmp/newshift.yul
--- /tmp/oldshl.yul 2021-03-17 18:44:04.237380823 +0100
+++ /tmp/newshift.yul 2021-03-17 18:43:27.529644560 +0100
@@ -163,7 +163,8 @@
if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }
let oldLen := extract_byte_array_length(sload(slot))
let srcOffset := 0
- srcOffset := 0x20
+ let srcOffset_1 := 0x20
+ srcOffset := srcOffset_1
@hrkrshnn
hrkrshnn / keccak.diff
Created March 16, 2021 16:56
Diff for the PR on evaluating keccak during optimization
diff -u /tmp/old.yul /tmp/new.yul
--- /tmp/old.yul 2021-03-16 17:45:13.547418050 +0100
+++ /tmp/new.yul 2021-03-16 17:45:54.528230735 +0100
@@ -159,7 +159,7 @@
revert(var, 0x24)
}
mstore(var, 0x01)
- var := and(shr(mul(var, 8), sload(add(keccak256(var, 0x20), var_i))), sub(shl(160, 1), 1))
+ var := and(shr(mul(var, 8), sload(add(80084422859880547211683076133703299733277748156566366325829078699459944778998, var_i))), sub(shl(160, 1), 1))
}
diff -u /tmp/unoptimized.asm /tmp/optimized.asm
--- /tmp/unoptimized.asm 2021-03-05 15:19:26.247774760 +0100
+++ /tmp/optimized.asm 2021-03-05 15:18:51.144917661 +0100
@@ -3,14 +3,19 @@
Pretty printed source:
object "object" {
code {
- for { let i_0 := 0 } lt(i_0, 0x60) { i_0 := add(i_0, 0x20) }
{
- mstore(0, 0x11)