Skip to content

Instantly share code, notes, and snippets.

@stsypanov
stsypanov / gist:d2524f98477d633fb1d4a2510fedeea6
Created December 10, 2021 07:17
StackOverflow question 70272651 baseline
0x00007fed70eb4b6a: cmp $0x8,%rcx
╭ 0x00007fed70eb4b6e: jg 0x00007fed70eb4b80
│ 0x00007fed70eb4b70: dec %rcx
│╭ 0x00007fed70eb4b73: js 0x00007fed70eb4bc4
││↗ 0x00007fed70eb4b75: mov %rax,(%rdi,%rcx,8)
│││ 0x00007fed70eb4b79: dec %rcx
││╰ 0x00007fed70eb4b7c: jge 0x00007fed70eb4b75
││ ╭ 0x00007fed70eb4b7e: jmp 0x00007fed70eb4bc4
↘│ │ 0x00007fed70eb4b80: vpxor %ymm0,%ymm0,%ymm0
│ │╭ 0x00007fed70eb4b84: jmp 0x00007fed70eb4b96
@stsypanov
stsypanov / gist:16c787e4f9fa3dd122522f16331b68b7
Created December 10, 2021 07:16
StackOverflow question 70272651 String constructor patched
0x00007f6b88eb5fea: cmp $0x8,%rcx
╭ 0x00007f6b88eb5fee: jg 0x00007f6b88eb6000
│ 0x00007f6b88eb5ff0: dec %rcx
│╭ 0x00007f6b88eb5ff3: js 0x00007f6b88eb6044
││↗ 0x00007f6b88eb5ff5: mov %rax,(%rdi,%rcx,8)
│││ 0x00007f6b88eb5ff9: dec %rcx
││╰ 0x00007f6b88eb5ffc: jge 0x00007f6b88eb5ff5
││ ╭ 0x00007f6b88eb5ffe: jmp 0x00007f6b88eb6044
↘│ │ 0x00007f6b88eb6000: vpxor %ymm0,%ymm0,%ymm0
│ │╭ 0x00007f6b88eb6004: jmp 0x00007f6b88eb6016
....[Hottest Region 1]..............................................................................
C2, level 4, org.tsypanov.sb.misc.jmh_generated.LoopyBenchmarks_goodOldLoop_jmhTest::goodOldLoop_avgt_jmhStub, version 584 (130 bytes)
0x00007fb4512539bd: mov 0x50(%rsp),%r9
0x00007fb4512539c2: movzbl 0x94(%r9),%r11d ;*getfield isDone
; - org.tsypanov.sb.misc.jmh_generated.LoopyBenchmarks_goodOldLoop_jmhTest::goodOldLoop_avgt_jmhStub@27 (line 188)
; implicit exception: dispatches to 0x00007fb451253bb5
0x00007fb4512539ca: test %r11d,%r11d
0x00007fb4512539cd: jne 0x00007fb451253a85 ;*ifeq
; - org.tsypanov.sb.misc.jmh_generated.LoopyBenchmarks_goodOldLoop_jmhTest::goodOldLoop_avgt_jmhStub@30 (line 188)
@stsypanov
stsypanov / DecodeBenchmark.java
Created September 11, 2020 14:46
Бенчмарк для статьи на хабре
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Fork(jvmArgsAppend = {"-Xms2g", "-Xmx2g"})
public class DecodeBenchmark {
@Benchmark
public String uriDecode(Data data) {
return uriDecode(data.encoded, data.charset);
}
@stsypanov
stsypanov / asm_11.txt
Created September 1, 2020 08:54
Assembly for ConcurrentReferenceHashMap instantiation on Java 11
c2, level 4, org.springframework.util.ConcurrentReferenceHashMap$Segment::<init>, version 598 (355 bytes)
0x00007efc103f7782: mov %r15,%rsi
0x00007efc103f7785: movabs $0x7efc28aae8e0,%r10
0x00007efc103f778f: callq *%r10
╭ 0x00007efc103f7792: jmp 0x00007efc103f77a1
│ 0x00007efc103f7794: mov %rdi,-0x8(%r11,%r10,1) ;*putfield sync {reexecute=0 rethrow=0 return_oop=0}
│ ; - java.util.concurrent.locks.ReentrantLock::<init>@12 (line 239)
│ ; - org.springframework.util.ConcurrentReferenceHashMap$Segment::<init>@6 (line 484)
│ 0x00007efc103f7799: add $0xfffffffffffffff8,%r10 ;*putfield this$0 {reexecute=0 rethrow=0 return_oop=0}
@stsypanov
stsypanov / asm_16.txt
Created August 14, 2020 07:27
Assembly for ConcurrentReferenceHashMap instantiation on Java 16 EAP
....[Hottest Region 1]..............................................................................
c2, level 4, org.springframework.util.ConcurrentReferenceHashMap::<init>, version 1056 (1832 bytes)
# parm3: r8:r8 = 'org/springframework/util/ConcurrentReferenceHashMap$ReferenceType'
# [sp+0x80] (sp of caller)
0x00007fc3dcb52640: mov 0x8(%rsi),%r10d ; {no_reloc}
0x00007fc3dcb52644: movabs $0x800000000,%r11
0x00007fc3dcb5264e: add %r11,%r10
0x00007fc3dcb52651: cmp %r10,%rax
0x00007fc3dcb52654: jne 0x00007fc3d504c400 ; {runtime_call ic_miss_stub}
@stsypanov
stsypanov / asm_14.txt
Last active August 13, 2020 14:46
Assembly for ConcurrentReferenceHashMap instantiation on Java 14
....[Hottest Region 1]..............................................................................
c2, level 4, org.springframework.util.ConcurrentReferenceHashMap::<init>, version 1086 (1978 bytes)
# parm3: r8:r8 = 'org/springframework/util/ConcurrentReferenceHashMap$ReferenceType'
# [sp+0xb0] (sp of caller)
0x00007f3717d45b60: mov 0x8(%rsi),%r10d ; {no_reloc}
0x00007f3717d45b64: movabs $0x800000000,%r12
0x00007f3717d45b6e: add %r12,%r10
0x00007f3717d45b71: xor %r12,%r12
0x00007f3717d45b74: cmp %r10,%rax
@stsypanov
stsypanov / asm_8
Last active August 13, 2020 14:39
Assembly for ConcurrentReferenceHashMap instantiation on Java 8
....[Hottest Region 1]..............................................................................
C2, level 4, org.springframework.util.ConcurrentReferenceHashMap::<init>, version 607 (1169 bytes)
; - org.springframework.util.ConcurrentReferenceHashMap::<init>@81 (line 180)
0x00007f32d9276f62: movslq %r10d,%r9 ;*i2l ; - org.springframework.util.ConcurrentReferenceHashMap::<init>@93 (line 181)
0.04% 0x00007f32d9276f65: movabs $0x7f32d51ff000,%rcx
0x00007f32d9276f6f: mov %r12b,(%rcx,%r11,1) ;*putfield referenceType
; - org.springframework.util.ConcurrentReferenceHashMap::<init>@81 (line 180)
0x00007f32d9276f73: test %r9,%r9
0x00007f32d9276f76: je 0x00007f32d9277819 ;*ldiv
....[Hottest Region 1]..............................................................................
c2, level 4, java.net.URLEncoder::encode, version 1019 (1467 bytes)
0x00007fddb4b63848: dc4c 8914 | 244f 8d54
0x00007fddb4b63850: ;*iflt {reexecute=0 rethrow=0 return_oop=0}
; - java.lang.String::checkIndex@1 (line 3691)
; - java.lang.StringUTF16::checkIndex@5 (line 1624)
; - java.lang.StringUTF16::charAt@2 (line 1421)
; - java.lang.String::charAt@21 (line 713)
; - java.net.URLEncoder::encode@45 (line 228)
....[Hottest Region 1]..............................................................................
c2, level 4, java.net.URLEncoder::encode, version 1032 (1487 bytes)
0x00007f5d18b6c7c8: d44c 891c | 244f 8d5c
0x00007f5d18b6c7d0: ;*if_icmplt {reexecute=0 rethrow=0 return_oop=0}
; - java.lang.String::checkIndex@6 (line 3691)
; - java.lang.StringUTF16::checkIndex@5 (line 1584)
; - java.lang.StringUTF16::charAt@2 (line 1381)
; - java.lang.String::charAt@21 (line 714)
; - java.net.URLEncoder::encode@45 (line 228)