Skip to content

Instantly share code, notes, and snippets.

@rednaxelafx
Created March 6, 2012 13:18
Show Gist options
  • Save rednaxelafx/1986224 to your computer and use it in GitHub Desktop.
Save rednaxelafx/1986224 to your computer and use it in GitHub Desktop.
Example (XS) of adding an intrinsic method to HotSpot C2. Patch against HS20-b12
exclude Main main
dontinline Main doTest
compileonly Main doTest
compileonly FxIntrinsics *
+PrintAssembly
+PrintCompilation
+PrintInlining
CompileThreshold=10
+DisplayVMOutputToStderr
diff -r 20dbc199874e src/share/vm/code/nmethod.cpp
--- a/src/share/vm/code/nmethod.cpp Mon Jan 09 18:02:05 2012 -0800
+++ b/src/share/vm/code/nmethod.cpp Tue Mar 06 21:02:09 2012 +0800
@@ -1873,7 +1873,7 @@
oop nmethod::embeddedOop_at(u_char* p) {
- RelocIterator iter(this, p, p + oopSize);
+ RelocIterator iter(this, p, p + 1);
while (iter.next())
if (iter.type() == relocInfo::oop_type) {
return iter.oop_reloc()->oop_value();
[sajia@211 fxtest]$ java -version
VM option '+PrintAssembly'
VM option '+PrintCompilation'
VM option '+PrintInlining'
VM option 'CompileThreshold=10'
OpenJDK 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output
CompilerOracle: exclude Main.main
CompilerOracle: dontinline Main.doTest
CompilerOracle: compileonly Main.doTest
CompilerOracle: compileonly FxIntrinsics.*
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
OpenJDK 64-Bit Server VM (build 20.0-b12-internal-fastdebug, mixed mode)
[sajia@211 fxtest]$ java -Xbootclasspath/p:. Main
VM option '+PrintAssembly'
VM option '+PrintCompilation'
VM option '+PrintInlining'
VM option 'CompileThreshold=10'
OpenJDK 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output
CompilerOracle: exclude Main.main
CompilerOracle: dontinline Main.doTest
CompilerOracle: compileonly Main.doTest
CompilerOracle: compileonly FxIntrinsics.*
FxIntrinsics.add(): normal Java version called.
10
FxIntrinsics.add(): normal Java version called.
11
FxIntrinsics.add(): normal Java version called.
12
FxIntrinsics.add(): normal Java version called.
13
FxIntrinsics.add(): normal Java version called.
14
FxIntrinsics.add(): normal Java version called.
15
FxIntrinsics.add(): normal Java version called.
16
FxIntrinsics.add(): normal Java version called.
17
FxIntrinsics.add(): normal Java version called.
18
2285 1 Main::doTest (6 bytes)
FxIntrinsics.add(): normal Java version called. 2286 2 FxIntrinsics::add (12 bytes)
19
Loaded disassembler from /home/sajia/testjdk6u30/jre/lib/amd64/server/libhsdis-amd64.so
Loaded disassembler from /home/sajia/testjdk6u30/jre/lib/amd64/server/libhsdis-amd64.so
Inlining intrinsic _add_fx at bci:2 in Main::doTest (6 bytes)
@ 5 java.io.PrintStream::println failed_initial_checks
Decoding compiled method 0x00002aaaab122e50:
Code:
[Disassembling for mach='i386:x86-64']
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} 'doTest' '(II)I' in 'Main'
# parm0: rsi = int
# parm1: rdx = int
# [sp+0x20] (sp of caller)
0x00002aaaab122fa0: push %rbp
0x00002aaaab122fa1: sub $0x10,%rsp
0x00002aaaab122fa5: nop ;*synchronization entry
; - Main::doTest@-1 (line 3)
0x00002aaaab122fa6: mov %esi,%eax
0x00002aaaab122fa8: add %edx,%eax ;*invokestatic add
; - Main::doTest@2 (line 3)
0x00002aaaab122faa: add $0x10,%rsp
0x00002aaaab122fae: pop %rbp
0x00002aaaab122faf: test %eax,-0x425fb5(%rip) # 0x00002aaaaacfd000
; {poll_return}
0x00002aaaab122fb5: retq
0x00002aaaab122fb6: hlt
0x00002aaaab122fb7: hlt
0x00002aaaab122fb8: hlt
0x00002aaaab122fb9: hlt
0x00002aaaab122fba: hlt
0x00002aaaab122fbb: hlt
0x00002aaaab122fbc: hlt
0x00002aaaab122fbd: hlt
0x00002aaaab122fbe: hlt
0x00002aaaab122fbf: hlt
[Exception Handler]
[Stub Code]
0x00002aaaab122fc0: jmpq 0x00002aaaab10b960 ; {no_reloc}
[Deopt Handler Code]
0x00002aaaab122fc5: callq 0x00002aaaab122fca
0x00002aaaab122fca: subq $0x5,(%rsp)
0x00002aaaab122fcf: jmpq 0x00002aaaab0fd7e0 ; {runtime_call}
0x00002aaaab122fd4: int3
0x00002aaaab122fd5: int3
0x00002aaaab122fd6: int3
0x00002aaaab122fd7: int3
Decoding compiled method 0x00002aaaab122b10:
Code:
[Disassembling for mach='i386:x86-64']
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} 'add' '(II)I' in 'FxIntrinsics'
# parm0: rsi = int
# parm1: rdx = int
# [sp+0x30] (sp of caller)
0x00002aaaab122c60: mov %eax,-0x8000(%rsp)
0x00002aaaab122c67: push %rbp
0x00002aaaab122c68: sub $0x20,%rsp ;*synchronization entry
; - FxIntrinsics::add@-1 (line 3)
0x00002aaaab122c6c: mov %edx,(%rsp)
0x00002aaaab122c6f: mov %esi,%ebp
0x00002aaaab122c71: mov $0x60402f038,%r10 ; {oop('java/lang/System')}
0x00002aaaab122c7b: mov 0x25c(%r10),%r11d ;*getstatic out
; - FxIntrinsics::add@0 (line 3)
0x00002aaaab122c82: test %r11d,%r11d
0x00002aaaab122c85: je 0x00002aaaab122cad ;*invokevirtual println
; - FxIntrinsics::add@5 (line 3)
0x00002aaaab122c87: lea (%r12,%r11,8),%rsi ;*getstatic out
; - FxIntrinsics::add@0 (line 3)
0x00002aaaab122c8b: mov $0x604253ef8,%rdx ; {oop("FxIntrinsics.add(): normal Java version called.")}
0x00002aaaab122c95: nop
0x00002aaaab122c96: nop
0x00002aaaab122c97: callq 0x00002aaaab0fc820 ; OopMap{off=60}
;*invokevirtual println
; - FxIntrinsics::add@5 (line 3)
; {optimized virtual_call}
0x00002aaaab122c9c: mov %ebp,%eax
0x00002aaaab122c9e: add (%rsp),%eax ;*iadd
; - FxIntrinsics::add@10 (line 4)
0x00002aaaab122ca1: add $0x20,%rsp
0x00002aaaab122ca5: pop %rbp
0x00002aaaab122ca6: test %eax,-0x425cac(%rip) # 0x00002aaaaacfd000
; {poll_return}
0x00002aaaab122cac: retq
0x00002aaaab122cad: mov $0xfffffff6,%esi
0x00002aaaab122cb2: nop
0x00002aaaab122cb3: callq 0x00002aaaab0fdca0 ; OopMap{off=88}
;*invokevirtual println
; - FxIntrinsics::add@5 (line 3)
; {runtime_call}
0x00002aaaab122cb8: mov $0x2b260130ccb0,%r10 ; {runtime_call}
0x00002aaaab122cc2: rex.WB callq *%r10 ;*invokevirtual println
; - FxIntrinsics::add@5 (line 3)
0x00002aaaab122cc5: mov %rax,%rsi
0x00002aaaab122cc8: add $0x20,%rsp
0x00002aaaab122ccc: pop %rbp
0x00002aaaab122ccd: jmpq 0x00002aaaab1214a0 ; {runtime_call}
0x00002aaaab122cd2: hlt
0x00002aaaab122cd3: hlt
0x00002aaaab122cd4: hlt
0x00002aaaab122cd5: hlt
0x00002aaaab122cd6: hlt
0x00002aaaab122cd7: hlt
0x00002aaaab122cd8: hlt
0x00002aaaab122cd9: hlt
0x00002aaaab122cda: hlt
0x00002aaaab122cdb: hlt
0x00002aaaab122cdc: hlt
0x00002aaaab122cdd: hlt
0x00002aaaab122cde: hlt
0x00002aaaab122cdf: hlt
[Stub Code]
0x00002aaaab122ce0: mov $0x0,%rbx ; {no_reloc}
0x00002aaaab122cea: jmpq 0x00002aaaab122cea ; {runtime_call}
[Exception Handler]
0x00002aaaab122cef: jmpq 0x00002aaaab10b960 ; {runtime_call}
[Deopt Handler Code]
0x00002aaaab122cf4: callq 0x00002aaaab122cf9
0x00002aaaab122cf9: subq $0x5,(%rsp)
0x00002aaaab122cfe: jmpq 0x00002aaaab0fd7e0 ; {runtime_call}
0x00002aaaab122d03: int3
0x00002aaaab122d04: int3
0x00002aaaab122d05: int3
0x00002aaaab122d06: int3
0x00002aaaab122d07: int3
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
[sajia@211 fxtest]$ java -Xbootclasspath/p:. Main 2>vm.log
VM option '+PrintAssembly'
VM option '+PrintCompilation'
VM option '+PrintInlining'
VM option 'CompileThreshold=10'
VM option '+DisplayVMOutputToStderr'
FxIntrinsics.add(): normal Java version called.
10
FxIntrinsics.add(): normal Java version called.
11
FxIntrinsics.add(): normal Java version called.
12
FxIntrinsics.add(): normal Java version called.
13
FxIntrinsics.add(): normal Java version called.
14
FxIntrinsics.add(): normal Java version called.
15
FxIntrinsics.add(): normal Java version called.
16
FxIntrinsics.add(): normal Java version called.
17
FxIntrinsics.add(): normal Java version called.
18
FxIntrinsics.add(): normal Java version called.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
[sajia@211 fxtest]$
public class FxIntrinsics {
public static int add(int x, int y) {
System.out.println("FxIntrinsics.add(): normal Java version called.");
return x + y;
}
}
public class Main {
private static int doTest(int x, int y) {
return FxIntrinsics.add(x, y);
}
public static void main(String[] args) throws Exception {
for (int i = 0; i < 100; i++) {
System.out.println(doTest(i, 10));
Thread.sleep(200);
}
}
}
  LibraryIntrinsic(ciMethod* m, bool is_virtual, vmIntrinsics::ID id)
    : InlineCallGenerator(m),
      _is_virtual(is_virtual),
      _intrinsic_id(id)
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x9ab280]  print_stack_trace_on(outputStream*)+0x20
V  [libjvm.so+0x9ab5e7]  Compile::make_vm_intrinsic(ciMethod*, bool)+0x1a7
V  [libjvm.so+0x59cff6]  Compile::find_intrinsic(ciMethod*, bool)+0x156
V  [libjvm.so+0x69d08a]  Compile::call_generator(ciMethod*, int, bool, JVMState*, bool, float)+0x1ca
V  [libjvm.so+0x69e86e]  Parse::do_call()+0x34e
V  [libjvm.so+0xb514ec]  Parse::do_one_bytecode()+0x92c
V  [libjvm.so+0xb46335]  Parse::do_one_block()+0x415
V  [libjvm.so+0xb469c0]  Parse::do_all_blocks()+0x200
V  [libjvm.so+0xb48610]  Parse::Parse(JVMState*, ciMethod*, float)+0xd90
V  [libjvm.so+0x4a88f7]  ParseGenerator::generate(JVMState*)+0x147
V  [libjvm.so+0x5acf6d]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool)+0x16cd
V  [libjvm.so+0x4a694c]  C2Compiler::compile_method(ciEnv*, ciMethod*, int)+0x25c
V  [libjvm.so+0x5b29de]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x3de
V  [libjvm.so+0x5b4c98]  CompileBroker::compiler_thread_loop()+0x5a8
V  [libjvm.so+0xccfdae]  JavaThread::thread_main_inner()+0xee
V  [libjvm.so+0xb0e1e4]  java_start(Thread*)+0xf4

JVMState* LibraryIntrinsic::generate(JVMState* jvms)

Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x9ab280]  print_stack_trace_on(outputStream*)+0x20
V  [libjvm.so+0x9c6e79]  LibraryIntrinsic::generate(JVMState*)+0x29
V  [libjvm.so+0x69e956]  Parse::do_call()+0x436
V  [libjvm.so+0xb514ec]  Parse::do_one_bytecode()+0x92c
V  [libjvm.so+0xb46335]  Parse::do_one_block()+0x415
V  [libjvm.so+0xb469c0]  Parse::do_all_blocks()+0x200
V  [libjvm.so+0xb48610]  Parse::Parse(JVMState*, ciMethod*, float)+0xd90
V  [libjvm.so+0x4a88f7]  ParseGenerator::generate(JVMState*)+0x147
V  [libjvm.so+0x5acf6d]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool)+0x16cd
V  [libjvm.so+0x4a694c]  C2Compiler::compile_method(ciEnv*, ciMethod*, int)+0x25c
V  [libjvm.so+0x5b29de]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x3de
V  [libjvm.so+0x5b4c98]  CompileBroker::compiler_thread_loop()+0x5a8
V  [libjvm.so+0xccfdae]  JavaThread::thread_main_inner()+0xee
V  [libjvm.so+0xb0e1e4]  java_start(Thread*)+0xf4
private static int doTest(int, int);
  Code:
   Stack=2, Locals=2, Args_size=2
   0:   iload_0
   1:   iload_1
   2:   invokestatic    #2; //Method FxIntrinsics.add:(II)I
   5:   ireturn
  LineNumberTable: 
   line 3: 0
diff -r 20dbc199874e src/share/vm/classfile/vmSymbols.hpp
--- a/src/share/vm/classfile/vmSymbols.hpp Mon Jan 09 18:02:05 2012 -0800
+++ b/src/share/vm/classfile/vmSymbols.hpp Tue Mar 06 21:02:09 2012 +0800
@@ -568,6 +568,10 @@
do_name(log_name,"log") do_name(log10_name,"log10") do_name(pow_name,"pow") \
do_name(exp_name,"exp") do_name(min_name,"min") do_name(max_name,"max") \
\
+ /* FX experimental intrinsics */ \
+ do_class(test_FxIntrinsics, "FxIntrinsics") \
+ do_intrinsic(_add_fx, test_FxIntrinsics, add_method_name, int2_int_signature, F_S) \
+ \
do_intrinsic(_dabs, java_lang_Math, abs_name, double_double_signature, F_S) \
do_intrinsic(_dsin, java_lang_Math, sin_name, double_double_signature, F_S) \
do_intrinsic(_dcos, java_lang_Math, cos_name, double_double_signature, F_S) \
diff -r 20dbc199874e src/share/vm/opto/library_call.cpp
--- a/src/share/vm/opto/library_call.cpp Mon Jan 09 18:02:05 2012 -0800
+++ b/src/share/vm/opto/library_call.cpp Tue Mar 06 21:02:09 2012 +0800
@@ -146,6 +146,7 @@
return generate_method_call(method_id, true, false);
}
+ bool inline_add_fx();
Node* make_string_method_node(int opcode, Node* str1, Node* cnt1, Node* str2, Node* cnt2);
bool inline_string_compareTo();
bool inline_string_indexOf();
@@ -429,6 +430,8 @@
case vmIntrinsics::_getClass:
return inline_native_getClass();
+ case vmIntrinsics::_add_fx:
+ return inline_add_fx();
case vmIntrinsics::_dsin:
case vmIntrinsics::_dcos:
case vmIntrinsics::_dtan:
@@ -812,6 +815,22 @@
}
+//-------------------------------inline_add_fx----------------------------
+bool LibraryCallKit::inline_add_fx() {
+ if (/*!Matcher::has_match_rule(Op_AddFx) || */!UseSSE42Intrinsics) {
+ return false;
+ }
+
+ // make the graph here!
+ int nargs = 2; // 2 ints
+ assert(callee()->signature()->size() == nargs, "add_fx has 2 arguments");
+ Node* x = argument(0); // don't use pop() here, it's for the operand stack, whereas we're taking values from the local variable area now
+ Node* y = argument(1);
+ Node* result = AddI(x, y); // GraphKit::AddI() did a _gvn.transform() already
+ push(result);
+ return true;
+}
+
//------------------------------make_string_method_node------------------------
// Helper method for String intrinsic finctions.
Node* LibraryCallKit::make_string_method_node(int opcode, Node* str1, Node* cnt1, Node* str2, Node* cnt2) {
OpenJDK 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output
CompilerOracle: exclude Main.main
CompilerOracle: dontinline Main.doTest
CompilerOracle: compileonly Main.doTest
CompilerOracle: compileonly FxIntrinsics.*
2284 1 Main::doTest (6 bytes)
2284 2 FxIntrinsics::add (12 bytes)
Loaded disassembler from /home/sajia/testjdk6u30/jre/lib/amd64/server/libhsdis-amd64.so
Loaded disassembler from /home/sajia/testjdk6u30/jre/lib/amd64/server/libhsdis-amd64.so
Inlining intrinsic _add_fx at bci:2 in Main::doTest (6 bytes)
@ 5 java.io.PrintStream::println failed_initial_checks
Decoding compiled method 0x00002aaaab122e50:
Code:
[Disassembling for mach='i386:x86-64']
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} 'doTest' '(II)I' in 'Main'
# parm0: rsi = int
# parm1: rdx = int
# [sp+0x20] (sp of caller)
0x00002aaaab122fa0: push %rbp
0x00002aaaab122fa1: sub $0x10,%rsp
0x00002aaaab122fa5: nop ;*synchronization entry
; - Main::doTest@-1 (line 3)
0x00002aaaab122fa6: mov %esi,%eax
0x00002aaaab122fa8: add %edx,%eax ;*invokestatic add
; - Main::doTest@2 (line 3)
0x00002aaaab122faa: add $0x10,%rsp
0x00002aaaab122fae: pop %rbp
0x00002aaaab122faf: test %eax,-0x425fb5(%rip) # 0x00002aaaaacfd000
; {poll_return}
0x00002aaaab122fb5: retq
0x00002aaaab122fb6: hlt
0x00002aaaab122fb7: hlt
0x00002aaaab122fb8: hlt
0x00002aaaab122fb9: hlt
0x00002aaaab122fba: hlt
0x00002aaaab122fbb: hlt
0x00002aaaab122fbc: hlt
0x00002aaaab122fbd: hlt
0x00002aaaab122fbe: hlt
0x00002aaaab122fbf: hlt
[Exception Handler]
[Stub Code]
0x00002aaaab122fc0: jmpq 0x00002aaaab10b960 ; {no_reloc}
[Deopt Handler Code]
0x00002aaaab122fc5: callq 0x00002aaaab122fca
0x00002aaaab122fca: subq $0x5,(%rsp)
0x00002aaaab122fcf: jmpq 0x00002aaaab0fd7e0 ; {runtime_call}
0x00002aaaab122fd4: int3
0x00002aaaab122fd5: int3
0x00002aaaab122fd6: int3
0x00002aaaab122fd7: int3
Decoding compiled method 0x00002aaaab122b10:
Code:
[Disassembling for mach='i386:x86-64']
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} 'add' '(II)I' in 'FxIntrinsics'
# parm0: rsi = int
# parm1: rdx = int
# [sp+0x30] (sp of caller)
0x00002aaaab122c60: mov %eax,-0x8000(%rsp)
0x00002aaaab122c67: push %rbp
0x00002aaaab122c68: sub $0x20,%rsp ;*synchronization entry
; - FxIntrinsics::add@-1 (line 3)
0x00002aaaab122c6c: mov %edx,(%rsp)
0x00002aaaab122c6f: mov %esi,%ebp
0x00002aaaab122c71: mov $0x60402f038,%r10 ; {oop('java/lang/System')}
0x00002aaaab122c7b: mov 0x25c(%r10),%r11d ;*getstatic out
; - FxIntrinsics::add@0 (line 3)
0x00002aaaab122c82: test %r11d,%r11d
0x00002aaaab122c85: je 0x00002aaaab122cad ;*invokevirtual println
; - FxIntrinsics::add@5 (line 3)
0x00002aaaab122c87: lea (%r12,%r11,8),%rsi ;*getstatic out
; - FxIntrinsics::add@0 (line 3)
0x00002aaaab122c8b: mov $0x604253ef8,%rdx ; {oop("FxIntrinsics.add(): normal Java version called.")}
0x00002aaaab122c95: nop
0x00002aaaab122c96: nop
0x00002aaaab122c97: callq 0x00002aaaab0fc820 ; OopMap{off=60}
;*invokevirtual println
; - FxIntrinsics::add@5 (line 3)
; {optimized virtual_call}
0x00002aaaab122c9c: mov %ebp,%eax
0x00002aaaab122c9e: add (%rsp),%eax ;*iadd
; - FxIntrinsics::add@10 (line 4)
0x00002aaaab122ca1: add $0x20,%rsp
0x00002aaaab122ca5: pop %rbp
0x00002aaaab122ca6: test %eax,-0x425cac(%rip) # 0x00002aaaaacfd000
; {poll_return}
0x00002aaaab122cac: retq
0x00002aaaab122cad: mov $0xfffffff6,%esi
0x00002aaaab122cb2: nop
0x00002aaaab122cb3: callq 0x00002aaaab0fdca0 ; OopMap{off=88}
;*invokevirtual println
; - FxIntrinsics::add@5 (line 3)
; {runtime_call}
0x00002aaaab122cb8: mov $0x2b7cc2817cb0,%r10 ; {runtime_call}
0x00002aaaab122cc2: rex.WB callq *%r10 ;*invokevirtual println
; - FxIntrinsics::add@5 (line 3)
0x00002aaaab122cc5: mov %rax,%rsi
0x00002aaaab122cc8: add $0x20,%rsp
0x00002aaaab122ccc: pop %rbp
0x00002aaaab122ccd: jmpq 0x00002aaaab1214a0 ; {runtime_call}
0x00002aaaab122cd2: hlt
0x00002aaaab122cd3: hlt
0x00002aaaab122cd4: hlt
0x00002aaaab122cd5: hlt
0x00002aaaab122cd6: hlt
0x00002aaaab122cd7: hlt
0x00002aaaab122cd8: hlt
0x00002aaaab122cd9: hlt
0x00002aaaab122cda: hlt
0x00002aaaab122cdb: hlt
0x00002aaaab122cdc: hlt
0x00002aaaab122cdd: hlt
0x00002aaaab122cde: hlt
0x00002aaaab122cdf: hlt
[Stub Code]
0x00002aaaab122ce0: mov $0x0,%rbx ; {no_reloc}
0x00002aaaab122cea: jmpq 0x00002aaaab122cea ; {runtime_call}
[Exception Handler]
0x00002aaaab122cef: jmpq 0x00002aaaab10b960 ; {runtime_call}
[Deopt Handler Code]
0x00002aaaab122cf4: callq 0x00002aaaab122cf9
0x00002aaaab122cf9: subq $0x5,(%rsp)
0x00002aaaab122cfe: jmpq 0x00002aaaab0fd7e0 ; {runtime_call}
0x00002aaaab122d03: int3
0x00002aaaab122d04: int3
0x00002aaaab122d05: int3
0x00002aaaab122d06: int3
0x00002aaaab122d07: int3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment