seafoam 0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. checksums.yaml +7 -0
  2. data/.github/probots.yml +2 -0
  3. data/.github/workflows/rubocop.yml +10 -0
  4. data/.github/workflows/specs.yml +19 -0
  5. data/.gitignore +7 -0
  6. data/.rubocop.yml +34 -0
  7. data/.ruby-version +1 -0
  8. data/.seafoam/config +1 -0
  9. data/CODE_OF_CONDUCT.md +128 -0
  10. data/CONTRIBUTING.md +5 -0
  11. data/Gemfile +2 -0
  12. data/LICENSE.md +7 -0
  13. data/README.md +298 -0
  14. data/bin/bgv2isabelle +53 -0
  15. data/bin/bgv2json +42 -0
  16. data/bin/seafoam +24 -0
  17. data/docs/annotators.md +43 -0
  18. data/docs/bgv.md +284 -0
  19. data/docs/getting-graphs.md +47 -0
  20. data/examples/Fib.java +24 -0
  21. data/examples/MatMult.java +39 -0
  22. data/examples/fib-java.bgv +0 -0
  23. data/examples/fib-js.bgv +0 -0
  24. data/examples/fib-ruby.bgv +0 -0
  25. data/examples/fib.js +15 -0
  26. data/examples/fib.rb +15 -0
  27. data/examples/identity.bgv +0 -0
  28. data/examples/identity.rb +13 -0
  29. data/examples/java/Irreducible.j +35 -0
  30. data/examples/java/IrreducibleDecompiled.java +21 -0
  31. data/examples/java/JavaExamples.java +418 -0
  32. data/examples/java/exampleArithOperator.bgv +0 -0
  33. data/examples/java/exampleArithOperator.cfg +925 -0
  34. data/examples/java/exampleArrayAllocation.bgv +0 -0
  35. data/examples/java/exampleArrayAllocation.cfg +5268 -0
  36. data/examples/java/exampleArrayRead.bgv +0 -0
  37. data/examples/java/exampleArrayRead.cfg +2263 -0
  38. data/examples/java/exampleArrayWrite.bgv +0 -0
  39. data/examples/java/exampleArrayWrite.cfg +2315 -0
  40. data/examples/java/exampleCatch.bgv +0 -0
  41. data/examples/java/exampleCatch.cfg +4150 -0
  42. data/examples/java/exampleCompareOperator.bgv +0 -0
  43. data/examples/java/exampleCompareOperator.cfg +1109 -0
  44. data/examples/java/exampleDoubleSynchronized.bgv +0 -0
  45. data/examples/java/exampleDoubleSynchronized.cfg +26497 -0
  46. data/examples/java/exampleExactArith.bgv +0 -0
  47. data/examples/java/exampleExactArith.cfg +1888 -0
  48. data/examples/java/exampleFieldRead.bgv +0 -0
  49. data/examples/java/exampleFieldRead.cfg +1228 -0
  50. data/examples/java/exampleFieldWrite.bgv +0 -0
  51. data/examples/java/exampleFieldWrite.cfg +1102 -0
  52. data/examples/java/exampleFor.bgv +0 -0
  53. data/examples/java/exampleFor.cfg +3936 -0
  54. data/examples/java/exampleFullEscape.bgv +0 -0
  55. data/examples/java/exampleFullEscape.cfg +5893 -0
  56. data/examples/java/exampleIf.bgv +0 -0
  57. data/examples/java/exampleIf.cfg +2462 -0
  58. data/examples/java/exampleIfNeverTaken.bgv +0 -0
  59. data/examples/java/exampleIfNeverTaken.cfg +2476 -0
  60. data/examples/java/exampleInstanceOfManyImpls.bgv +0 -0
  61. data/examples/java/exampleInstanceOfManyImpls.cfg +6391 -0
  62. data/examples/java/exampleInstanceOfOneImpl.bgv +0 -0
  63. data/examples/java/exampleInstanceOfOneImpl.cfg +2604 -0
  64. data/examples/java/exampleIntSwitch.bgv +0 -0
  65. data/examples/java/exampleIntSwitch.cfg +3121 -0
  66. data/examples/java/exampleInterfaceCallManyImpls.bgv +0 -0
  67. data/examples/java/exampleInterfaceCallManyImpls.cfg +1358 -0
  68. data/examples/java/exampleInterfaceCallOneImpl.bgv +0 -0
  69. data/examples/java/exampleInterfaceCallOneImpl.cfg +3859 -0
  70. data/examples/java/exampleLocalInstanceOf.bgv +0 -0
  71. data/examples/java/exampleLocalInstanceOf.cfg +5276 -0
  72. data/examples/java/exampleLocalSynchronized.bgv +0 -0
  73. data/examples/java/exampleLocalSynchronized.cfg +1364 -0
  74. data/examples/java/exampleLocalVariables.bgv +0 -0
  75. data/examples/java/exampleLocalVariables.cfg +1195 -0
  76. data/examples/java/exampleLocalVariablesState.bgv +0 -0
  77. data/examples/java/exampleLocalVariablesState.cfg +1673 -0
  78. data/examples/java/exampleNestedWhile.bgv +0 -0
  79. data/examples/java/exampleNestedWhile.cfg +15499 -0
  80. data/examples/java/exampleNestedWhileBreak.bgv +0 -0
  81. data/examples/java/exampleNestedWhileBreak.cfg +11162 -0
  82. data/examples/java/exampleNoEscape.bgv +0 -0
  83. data/examples/java/exampleNoEscape.cfg +974 -0
  84. data/examples/java/exampleObjectAllocation.bgv +0 -0
  85. data/examples/java/exampleObjectAllocation.cfg +5287 -0
  86. data/examples/java/examplePartialEscape.bgv +0 -0
  87. data/examples/java/examplePartialEscape.cfg +7042 -0
  88. data/examples/java/examplePhi.bgv +0 -0
  89. data/examples/java/examplePhi.cfg +3227 -0
  90. data/examples/java/exampleReducible.bgv +0 -0
  91. data/examples/java/exampleReducible.cfg +5578 -0
  92. data/examples/java/exampleSimpleCall.bgv +0 -0
  93. data/examples/java/exampleSimpleCall.cfg +1435 -0
  94. data/examples/java/exampleStamp.bgv +0 -0
  95. data/examples/java/exampleStamp.cfg +913 -0
  96. data/examples/java/exampleStaticCall.bgv +0 -0
  97. data/examples/java/exampleStaticCall.cfg +1154 -0
  98. data/examples/java/exampleStringSwitch.bgv +0 -0
  99. data/examples/java/exampleStringSwitch.cfg +15377 -0
  100. data/examples/java/exampleSynchronized.bgv +0 -0
  101. data/examples/java/exampleSynchronized.cfg +26027 -0
  102. data/examples/java/exampleThrow.bgv +0 -0
  103. data/examples/java/exampleThrow.cfg +780 -0
  104. data/examples/java/exampleThrowCatch.bgv +0 -0
  105. data/examples/java/exampleThrowCatch.cfg +744 -0
  106. data/examples/java/exampleUnsafeRead.bgv +0 -0
  107. data/examples/java/exampleUnsafeRead.cfg +912 -0
  108. data/examples/java/exampleUnsafeWrite.bgv +0 -0
  109. data/examples/java/exampleUnsafeWrite.cfg +962 -0
  110. data/examples/java/exampleWhile.bgv +0 -0
  111. data/examples/java/exampleWhile.cfg +3936 -0
  112. data/examples/java/exampleWhileBreak.bgv +0 -0
  113. data/examples/java/exampleWhileBreak.cfg +5963 -0
  114. data/examples/matmult-java.bgv +0 -0
  115. data/examples/matmult-ruby.bgv +0 -0
  116. data/examples/matmult.rb +29 -0
  117. data/examples/overflow.bgv +0 -0
  118. data/examples/overflow.rb +13 -0
  119. data/lib/seafoam.rb +13 -0
  120. data/lib/seafoam/annotators.rb +54 -0
  121. data/lib/seafoam/annotators/fallback.rb +27 -0
  122. data/lib/seafoam/annotators/graal.rb +376 -0
  123. data/lib/seafoam/bgv/bgv_parser.rb +602 -0
  124. data/lib/seafoam/binary/binary_reader.rb +21 -0
  125. data/lib/seafoam/binary/io_binary_reader.rb +88 -0
  126. data/lib/seafoam/colors.rb +18 -0
  127. data/lib/seafoam/commands.rb +447 -0
  128. data/lib/seafoam/config.rb +34 -0
  129. data/lib/seafoam/graph.rb +91 -0
  130. data/lib/seafoam/graphviz_writer.rb +213 -0
  131. data/lib/seafoam/spotlight.rb +28 -0
  132. data/lib/seafoam/version.rb +5 -0
  133. data/seafoam.gemspec +20 -0
  134. data/spec/seafoam/annotators/fallback_spec.rb +69 -0
  135. data/spec/seafoam/annotators/graal_spec.rb +96 -0
  136. data/spec/seafoam/annotators_spec.rb +61 -0
  137. data/spec/seafoam/bgv/bgv_parser_spec.rb +144 -0
  138. data/spec/seafoam/bgv/fixtures/not.bgv +1 -0
  139. data/spec/seafoam/bgv/fixtures/unsupported.bgv +1 -0
  140. data/spec/seafoam/binary/io_binary_reader_spec.rb +176 -0
  141. data/spec/seafoam/command_spec.rb +252 -0
  142. data/spec/seafoam/graph_spec.rb +172 -0
  143. data/spec/seafoam/graphviz_writer_spec.rb +63 -0
  144. data/spec/seafoam/spec_helpers.rb +30 -0
  145. data/spec/seafoam/spotlight_spec.rb +38 -0
  146. data/tools/render-all +36 -0
  147. metadata +238 -0
@@ -0,0 +1,912 @@
1
+ begin_compilation
2
+ name " HotSpotCompilation-361[JavaExamples.exampleUnsafeRead(long)]"
3
+ method "HotSpotCompilation-361[JavaExamples.exampleUnsafeRead(long)]"
4
+ date 1583364092094
5
+ end_compilation
6
+ begin_cfg
7
+ name "Final HIR schedule"
8
+ begin_block
9
+ name "B0"
10
+ from_bci -1
11
+ to_bci -1
12
+ predecessors
13
+ successors
14
+ xhandlers
15
+ flags
16
+ probability 4607182418800017408
17
+ begin_IR
18
+ HIR
19
+ f <@#|@fixed with next>@ <|@
20
+ tid v0 <|@
21
+ d <@d|@=== Debug Properties ===
22
+ stamp: void
23
+ withSpeculationFence: false
24
+ === Inputs ===
25
+ stateAfter: -
26
+ === Succesors ===
27
+ next: i8
28
+ === Usages ===
29
+ === Predecessor ===
30
+ - >@ <|@
31
+ instruction <@StartNode|@org.graalvm.compiler.nodes.StartNode>@ stateAfter: - #next: i8 <|@ <|@
32
+ f <@~|@floating>@ <|@
33
+ tid j1 <|@
34
+ d <@d|@=== Debug Properties ===
35
+ index: 0
36
+ stamp: i64
37
+ uncheckedStamp: [null]
38
+ === Inputs ===
39
+ === Succesors ===
40
+ === Usages ===
41
+ v9
42
+ === Predecessor ===
43
+ - >@ <|@
44
+ instruction <@Parameter|@org.graalvm.compiler.nodes.ParameterNode>@ <|@ <|@
45
+ f <@~|@floating>@ <|@
46
+ tid v9 <|@
47
+ d <@d|@=== Debug Properties ===
48
+ displacement: 0
49
+ scale: Times1
50
+ stamp: void*
51
+ === Inputs ===
52
+ base: j1
53
+ index: -
54
+ === Succesors ===
55
+ === Usages ===
56
+ i8
57
+ === Predecessor ===
58
+ - >@ <|@
59
+ instruction <@AMD64Address|@org.graalvm.compiler.core.amd64.AMD64AddressNode>@ base: j1 index: - <|@ <|@
60
+ f <@#|@fixed with next>@ <|@
61
+ tid i8 <|@
62
+ d <@d|@=== Debug Properties ===
63
+ barrierType: NONE
64
+ forceFixed: true
65
+ location: OFF_HEAP_LOCATION
66
+ nodeSourcePosition: at sun.misc.Unsafe.getInt(long) [bci: -1]
67
+ at JavaExamples.exampleUnsafeRead(JavaExamples.java:317) [bci: 4]
68
+ nullCheck: false
69
+ stamp: i32
70
+ === Inputs ===
71
+ stateBefore: -
72
+ guard: -
73
+ address: v9
74
+ lastLocationAccess: -
75
+ === Succesors ===
76
+ next: v5
77
+ === Usages ===
78
+ v5
79
+ === Predecessor ===
80
+ v0 >@ <|@
81
+ instruction <@Read|@org.graalvm.compiler.nodes.memory.ReadNode>@ stateBefore: - guard: - address: v9 lastLocationAccess: - #next: v5 <|@ <|@
82
+ f <@*|@fixed>@ <|@
83
+ tid v5 <|@
84
+ d <@d|@=== Debug Properties ===
85
+ nodeSourcePosition: at JavaExamples.exampleUnsafeRead(JavaExamples.java:317) [bci: 7]
86
+ stamp: void
87
+ === Inputs ===
88
+ result: i8
89
+ memoryMap: -
90
+ === Succesors ===
91
+ === Usages ===
92
+ === Predecessor ===
93
+ i8 >@ <|@
94
+ instruction <@Return|@org.graalvm.compiler.nodes.ReturnNode>@ result: i8 memoryMap: - <|@ <|@
95
+ end_IR
96
+ end_block
97
+ end_cfg
98
+ begin_cfg
99
+ name "After LIRGeneration"
100
+ begin_block
101
+ name "B0"
102
+ from_bci -1
103
+ to_bci -1
104
+ predecessors
105
+ successors
106
+ xhandlers
107
+ flags
108
+ probability 4607182418800017408
109
+ begin_IR
110
+ LIR
111
+ nr -1 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
112
+ nr -1 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
113
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
114
+ nr -1 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
115
+ nr -1 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
116
+ nr -1 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
117
+ nr -1 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
118
+ end_IR
119
+ end_block
120
+ end_cfg
121
+ begin_bytecodes
122
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
123
+ 3: lload_0
124
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
125
+ 7: ireturn
126
+ <|@
127
+ end_bytecodes
128
+ begin_cfg
129
+ name "After LIR generation"
130
+ begin_block
131
+ name "B0"
132
+ from_bci -1
133
+ to_bci -1
134
+ predecessors
135
+ successors
136
+ xhandlers
137
+ flags
138
+ probability 4607182418800017408
139
+ begin_IR
140
+ HIR
141
+ f <@#|@fixed with next>@ <|@
142
+ tid v0 <|@
143
+ d <@d|@=== Debug Properties ===
144
+ stamp: void
145
+ withSpeculationFence: false
146
+ === Inputs ===
147
+ stateAfter: -
148
+ === Succesors ===
149
+ next: i8
150
+ === Usages ===
151
+ === Predecessor ===
152
+ - >@ <|@
153
+ instruction <@StartNode|@org.graalvm.compiler.nodes.StartNode>@ stateAfter: - #next: i8 <|@ <|@
154
+ f <@~|@floating>@ <|@
155
+ tid j1 <|@
156
+ result v0|QWORD <|@
157
+ d <@d|@=== Debug Properties ===
158
+ index: 0
159
+ stamp: i64
160
+ uncheckedStamp: [null]
161
+ === Inputs ===
162
+ === Succesors ===
163
+ === Usages ===
164
+ v9
165
+ === Predecessor ===
166
+ - >@ <|@
167
+ instruction <@Parameter|@org.graalvm.compiler.nodes.ParameterNode>@ <|@ <|@
168
+ f <@~|@floating>@ <|@
169
+ tid v9 <|@
170
+ result [v0|QWORD] <|@
171
+ d <@d|@=== Debug Properties ===
172
+ displacement: 0
173
+ scale: Times1
174
+ stamp: void*
175
+ === Inputs ===
176
+ base: j1
177
+ index: -
178
+ === Succesors ===
179
+ === Usages ===
180
+ i8
181
+ === Predecessor ===
182
+ - >@ <|@
183
+ instruction <@AMD64Address|@org.graalvm.compiler.core.amd64.AMD64AddressNode>@ base: j1 index: - <|@ <|@
184
+ f <@#|@fixed with next>@ <|@
185
+ tid i8 <|@
186
+ result v1|DWORD <|@
187
+ d <@d|@=== Debug Properties ===
188
+ barrierType: NONE
189
+ forceFixed: true
190
+ location: OFF_HEAP_LOCATION
191
+ nodeSourcePosition: at sun.misc.Unsafe.getInt(long) [bci: -1]
192
+ at JavaExamples.exampleUnsafeRead(JavaExamples.java:317) [bci: 4]
193
+ nullCheck: false
194
+ stamp: i32
195
+ === Inputs ===
196
+ stateBefore: -
197
+ guard: -
198
+ address: v9
199
+ lastLocationAccess: -
200
+ === Succesors ===
201
+ next: v5
202
+ === Usages ===
203
+ v5
204
+ === Predecessor ===
205
+ v0 >@ <|@
206
+ instruction <@Read|@org.graalvm.compiler.nodes.memory.ReadNode>@ stateBefore: - guard: - address: v9 lastLocationAccess: - #next: v5 <|@ <|@
207
+ f <@*|@fixed>@ <|@
208
+ tid v5 <|@
209
+ d <@d|@=== Debug Properties ===
210
+ nodeSourcePosition: at JavaExamples.exampleUnsafeRead(JavaExamples.java:317) [bci: 7]
211
+ stamp: void
212
+ === Inputs ===
213
+ result: i8
214
+ memoryMap: -
215
+ === Succesors ===
216
+ === Usages ===
217
+ === Predecessor ===
218
+ i8 >@ <|@
219
+ instruction <@Return|@org.graalvm.compiler.nodes.ReturnNode>@ result: i8 memoryMap: - <|@ <|@
220
+ end_IR
221
+ begin_IR
222
+ LIR
223
+ nr -1 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
224
+ nr -1 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
225
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
226
+ nr -1 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
227
+ nr -1 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
228
+ nr -1 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
229
+ nr -1 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
230
+ end_IR
231
+ end_block
232
+ end_cfg
233
+ begin_cfg
234
+ name "After ConstantLoadOptimization"
235
+ begin_block
236
+ name "B0"
237
+ from_bci -1
238
+ to_bci -1
239
+ predecessors
240
+ successors
241
+ xhandlers
242
+ flags
243
+ probability 4607182418800017408
244
+ begin_IR
245
+ LIR
246
+ nr -1 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
247
+ nr -1 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
248
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
249
+ nr -1 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
250
+ nr -1 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
251
+ nr -1 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
252
+ nr -1 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
253
+ end_IR
254
+ end_block
255
+ end_cfg
256
+ begin_bytecodes
257
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
258
+ 3: lload_0
259
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
260
+ 7: ireturn
261
+ <|@
262
+ end_bytecodes
263
+ begin_cfg
264
+ name "After SaveCalleeSaveRegisters"
265
+ begin_block
266
+ name "B0"
267
+ from_bci -1
268
+ to_bci -1
269
+ predecessors
270
+ successors
271
+ xhandlers
272
+ flags
273
+ probability 4607182418800017408
274
+ begin_IR
275
+ LIR
276
+ nr -1 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
277
+ nr -1 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
278
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
279
+ nr -1 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
280
+ nr -1 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
281
+ nr -1 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
282
+ nr -1 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
283
+ end_IR
284
+ end_block
285
+ end_cfg
286
+ begin_bytecodes
287
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
288
+ 3: lload_0
289
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
290
+ 7: ireturn
291
+ <|@
292
+ end_bytecodes
293
+ begin_cfg
294
+ name "After PreAllocationOptimizationStage"
295
+ begin_block
296
+ name "B0"
297
+ from_bci -1
298
+ to_bci -1
299
+ predecessors
300
+ successors
301
+ xhandlers
302
+ flags
303
+ probability 4607182418800017408
304
+ begin_IR
305
+ LIR
306
+ nr -1 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
307
+ nr -1 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
308
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
309
+ nr -1 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
310
+ nr -1 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
311
+ nr -1 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
312
+ nr -1 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
313
+ end_IR
314
+ end_block
315
+ end_cfg
316
+ begin_bytecodes
317
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
318
+ 3: lload_0
319
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
320
+ 7: ireturn
321
+ <|@
322
+ end_bytecodes
323
+ begin_cfg
324
+ name "After MarkBasePointers"
325
+ begin_block
326
+ name "B0"
327
+ from_bci -1
328
+ to_bci -1
329
+ predecessors
330
+ successors
331
+ xhandlers
332
+ flags
333
+ probability 4607182418800017408
334
+ begin_IR
335
+ LIR
336
+ nr -1 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
337
+ nr -1 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
338
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
339
+ nr -1 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
340
+ nr -1 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
341
+ nr -1 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
342
+ nr -1 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
343
+ end_IR
344
+ end_block
345
+ end_cfg
346
+ begin_bytecodes
347
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
348
+ 3: lload_0
349
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
350
+ 7: ireturn
351
+ <|@
352
+ end_bytecodes
353
+ begin_cfg
354
+ name "Before register allocation"
355
+ begin_block
356
+ name "B0"
357
+ from_bci -1
358
+ to_bci -1
359
+ predecessors
360
+ successors
361
+ xhandlers
362
+ flags
363
+ probability 4607182418800017408
364
+ begin_IR
365
+ LIR
366
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
367
+ nr 2 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
368
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
369
+ nr 6 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
370
+ nr 8 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
371
+ nr 10 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
372
+ nr 12 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
373
+ end_IR
374
+ end_block
375
+ end_cfg
376
+ begin_bytecodes
377
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
378
+ 3: lload_0
379
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
380
+ 7: ireturn
381
+ <|@
382
+ end_bytecodes
383
+ begin_cfg
384
+ name "After SSALinearScanLifetimeAnalysis"
385
+ begin_block
386
+ name "B0"
387
+ from_bci -1
388
+ to_bci -1
389
+ predecessors
390
+ successors
391
+ xhandlers
392
+ flags
393
+ probability 4607182418800017408
394
+ begin_IR
395
+ LIR
396
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
397
+ nr 2 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
398
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
399
+ nr 6 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
400
+ nr 8 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
401
+ nr 10 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
402
+ nr 12 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
403
+ end_IR
404
+ end_block
405
+ end_cfg
406
+ begin_bytecodes
407
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
408
+ 3: lload_0
409
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
410
+ 7: ireturn
411
+ <|@
412
+ end_bytecodes
413
+ begin_intervals
414
+ name "Before register allocation"
415
+ rax|d fixed "[rax|d]" rax|d v1|d [0, 1[[10, 12[ "NoSpillStore"
416
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
417
+ rsi|q fixed "[rsi|q]" rsi|q -1 [0, 6[ "NoSpillStore"
418
+ v0|q QWORD "[v0|q]" v0|q rsi|q [6, 8[6 MustHaveRegister 8 MustHaveRegister "NoSpillStore"
419
+ v1|d DWORD "[v1|d]" v1|d -1 [8, 10[8 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
420
+ v2|q QWORD "[v2|q]" v2|q rbp|q [2, 12[2 MustHaveRegister 12 ShouldHaveRegister "NoSpillStore"
421
+ end_intervals
422
+ begin_intervals
423
+ name "After register allocation"
424
+ rax|d fixed "[rax|d]" rax|d v1|d [0, 1[[10, 12[ "NoSpillStore"
425
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
426
+ rsi|q fixed "[rsi|q]" rsi|q -1 [0, 6[ "NoSpillStore"
427
+ v0|q QWORD "[rsi|q]" v0|q rsi|q [6, 8[6 MustHaveRegister 8 MustHaveRegister "NoSpillStore"
428
+ v1|d DWORD "[rax|d]" v1|d -1 [8, 10[8 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
429
+ v2|q QWORD "[rbp|q]" v2|q rbp|q [2, 12[2 MustHaveRegister 12 ShouldHaveRegister "NoSpillStore"
430
+ end_intervals
431
+ begin_cfg
432
+ name "After LinearScanRegisterAllocation"
433
+ begin_block
434
+ name "B0"
435
+ from_bci -1
436
+ to_bci -1
437
+ predecessors
438
+ successors
439
+ xhandlers
440
+ flags
441
+ probability 4607182418800017408
442
+ begin_IR
443
+ LIR
444
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
445
+ nr 2 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
446
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
447
+ nr 6 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
448
+ nr 8 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
449
+ nr 10 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
450
+ nr 12 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
451
+ end_IR
452
+ end_block
453
+ end_cfg
454
+ begin_bytecodes
455
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
456
+ 3: lload_0
457
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
458
+ 7: ireturn
459
+ <|@
460
+ end_bytecodes
461
+ begin_intervals
462
+ name "After optimize spill position"
463
+ rax|d fixed "[rax|d]" rax|d v1|d [0, 1[[10, 12[ "NoSpillStore"
464
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
465
+ rsi|q fixed "[rsi|q]" rsi|q -1 [0, 6[ "NoSpillStore"
466
+ v0|q QWORD "[rsi|q]" v0|q rsi|q [6, 8[6 MustHaveRegister 8 MustHaveRegister "NoSpillStore"
467
+ v1|d DWORD "[rax|d]" v1|d -1 [8, 10[8 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
468
+ v2|q QWORD "[rbp|q]" v2|q rbp|q [2, 12[2 MustHaveRegister 12 ShouldHaveRegister "NoSpillStore"
469
+ end_intervals
470
+ begin_cfg
471
+ name "After LinearScanOptimizeSpillPosition"
472
+ begin_block
473
+ name "B0"
474
+ from_bci -1
475
+ to_bci -1
476
+ predecessors
477
+ successors
478
+ xhandlers
479
+ flags
480
+ probability 4607182418800017408
481
+ begin_IR
482
+ LIR
483
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
484
+ nr 2 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
485
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
486
+ nr 6 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
487
+ nr 8 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
488
+ nr 10 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
489
+ nr 12 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
490
+ end_IR
491
+ end_block
492
+ end_cfg
493
+ begin_bytecodes
494
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
495
+ 3: lload_0
496
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
497
+ 7: ireturn
498
+ <|@
499
+ end_bytecodes
500
+ begin_intervals
501
+ name "After resolve data flow"
502
+ rax|d fixed "[rax|d]" rax|d v1|d [0, 1[[10, 12[ "NoSpillStore"
503
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
504
+ rsi|q fixed "[rsi|q]" rsi|q -1 [0, 6[ "NoSpillStore"
505
+ v0|q QWORD "[rsi|q]" v0|q rsi|q [6, 8[6 MustHaveRegister 8 MustHaveRegister "NoSpillStore"
506
+ v1|d DWORD "[rax|d]" v1|d -1 [8, 10[8 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
507
+ v2|q QWORD "[rbp|q]" v2|q rbp|q [2, 12[2 MustHaveRegister 12 ShouldHaveRegister "NoSpillStore"
508
+ end_intervals
509
+ begin_cfg
510
+ name "After SSALinearScanResolveDataFlow"
511
+ begin_block
512
+ name "B0"
513
+ from_bci -1
514
+ to_bci -1
515
+ predecessors
516
+ successors
517
+ xhandlers
518
+ flags
519
+ probability 4607182418800017408
520
+ begin_IR
521
+ LIR
522
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
523
+ nr 2 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
524
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
525
+ nr 6 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
526
+ nr 8 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
527
+ nr 10 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
528
+ nr 12 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
529
+ end_IR
530
+ end_block
531
+ end_cfg
532
+ begin_bytecodes
533
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
534
+ 3: lload_0
535
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
536
+ 7: ireturn
537
+ <|@
538
+ end_bytecodes
539
+ begin_cfg
540
+ name "After SSALinearScanEliminateSpillMove"
541
+ begin_block
542
+ name "B0"
543
+ from_bci -1
544
+ to_bci -1
545
+ predecessors
546
+ successors
547
+ xhandlers
548
+ flags
549
+ probability 4607182418800017408
550
+ begin_IR
551
+ LIR
552
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
553
+ nr 2 <|@ instruction v2|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
554
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
555
+ nr 6 <|@ instruction v0|QWORD = MOVE rsi|QWORD moveKind: QWORD <|@ <|@
556
+ nr 8 <|@ instruction v1|DWORD = MOV [v0|QWORD] size: DWORD <|@ <|@
557
+ nr 10 <|@ instruction rax|DWORD = MOVE v1|DWORD moveKind: DWORD <|@ <|@
558
+ nr 12 <|@ instruction RETURN (savedRbp: v2|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
559
+ end_IR
560
+ end_block
561
+ end_cfg
562
+ begin_bytecodes
563
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
564
+ 3: lload_0
565
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
566
+ 7: ireturn
567
+ <|@
568
+ end_bytecodes
569
+ begin_cfg
570
+ name "After LinearScanAssignLocations"
571
+ begin_block
572
+ name "B0"
573
+ from_bci -1
574
+ to_bci -1
575
+ predecessors
576
+ successors
577
+ xhandlers
578
+ flags
579
+ probability 4607182418800017408
580
+ begin_IR
581
+ LIR
582
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
583
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
584
+ nr 8 <|@ instruction rax|DWORD = MOV [rsi|QWORD] size: DWORD <|@ <|@
585
+ nr 12 <|@ instruction RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
586
+ end_IR
587
+ end_block
588
+ end_cfg
589
+ begin_bytecodes
590
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
591
+ 3: lload_0
592
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
593
+ 7: ireturn
594
+ <|@
595
+ end_bytecodes
596
+ begin_cfg
597
+ name "After LinearScan"
598
+ begin_block
599
+ name "B0"
600
+ from_bci -1
601
+ to_bci -1
602
+ predecessors
603
+ successors
604
+ xhandlers
605
+ flags
606
+ probability 4607182418800017408
607
+ begin_IR
608
+ LIR
609
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
610
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
611
+ nr 8 <|@ instruction rax|DWORD = MOV [rsi|QWORD] size: DWORD <|@ <|@
612
+ nr 12 <|@ instruction RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
613
+ end_IR
614
+ end_block
615
+ end_cfg
616
+ begin_bytecodes
617
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
618
+ 3: lload_0
619
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
620
+ 7: ireturn
621
+ <|@
622
+ end_bytecodes
623
+ begin_cfg
624
+ name "After LSStackSlotAllocator"
625
+ begin_block
626
+ name "B0"
627
+ from_bci -1
628
+ to_bci -1
629
+ predecessors
630
+ successors
631
+ xhandlers
632
+ flags
633
+ probability 4607182418800017408
634
+ begin_IR
635
+ LIR
636
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
637
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
638
+ nr 8 <|@ instruction rax|DWORD = MOV [rsi|QWORD] size: DWORD <|@ <|@
639
+ nr 12 <|@ instruction RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
640
+ end_IR
641
+ end_block
642
+ end_cfg
643
+ begin_bytecodes
644
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
645
+ 3: lload_0
646
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
647
+ 7: ireturn
648
+ <|@
649
+ end_bytecodes
650
+ begin_cfg
651
+ name "After LocationMarker"
652
+ begin_block
653
+ name "B0"
654
+ from_bci -1
655
+ to_bci -1
656
+ predecessors
657
+ successors
658
+ xhandlers
659
+ flags
660
+ probability 4607182418800017408
661
+ begin_IR
662
+ LIR
663
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
664
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
665
+ nr 8 <|@ instruction rax|DWORD = MOV [rsi|QWORD] size: DWORD <|@ <|@
666
+ nr 12 <|@ instruction RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
667
+ end_IR
668
+ end_block
669
+ end_cfg
670
+ begin_bytecodes
671
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
672
+ 3: lload_0
673
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
674
+ 7: ireturn
675
+ <|@
676
+ end_bytecodes
677
+ begin_cfg
678
+ name "After AllocationStage"
679
+ begin_block
680
+ name "B0"
681
+ from_bci -1
682
+ to_bci -1
683
+ predecessors
684
+ successors
685
+ xhandlers
686
+ flags
687
+ probability 4607182418800017408
688
+ begin_IR
689
+ LIR
690
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
691
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
692
+ nr 8 <|@ instruction rax|DWORD = MOV [rsi|QWORD] size: DWORD <|@ <|@
693
+ nr 12 <|@ instruction RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
694
+ end_IR
695
+ end_block
696
+ end_cfg
697
+ begin_bytecodes
698
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
699
+ 3: lload_0
700
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
701
+ 7: ireturn
702
+ <|@
703
+ end_bytecodes
704
+ begin_cfg
705
+ name "After EdgeMoveOptimizer"
706
+ begin_block
707
+ name "B0"
708
+ from_bci -1
709
+ to_bci -1
710
+ predecessors
711
+ successors
712
+ xhandlers
713
+ flags
714
+ probability 4607182418800017408
715
+ begin_IR
716
+ LIR
717
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
718
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
719
+ nr 8 <|@ instruction rax|DWORD = MOV [rsi|QWORD] size: DWORD <|@ <|@
720
+ nr 12 <|@ instruction RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
721
+ end_IR
722
+ end_block
723
+ end_cfg
724
+ begin_bytecodes
725
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
726
+ 3: lload_0
727
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
728
+ 7: ireturn
729
+ <|@
730
+ end_bytecodes
731
+ begin_cfg
732
+ name "After ControlFlowOptimizer"
733
+ begin_block
734
+ name "B0"
735
+ from_bci -1
736
+ to_bci -1
737
+ predecessors
738
+ successors
739
+ xhandlers
740
+ flags
741
+ probability 4607182418800017408
742
+ begin_IR
743
+ LIR
744
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
745
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
746
+ nr 8 <|@ instruction rax|DWORD = MOV [rsi|QWORD] size: DWORD <|@ <|@
747
+ nr 12 <|@ instruction RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
748
+ end_IR
749
+ end_block
750
+ end_cfg
751
+ begin_bytecodes
752
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
753
+ 3: lload_0
754
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
755
+ 7: ireturn
756
+ <|@
757
+ end_bytecodes
758
+ begin_cfg
759
+ name "After RedundantMoveElimination"
760
+ begin_block
761
+ name "B0"
762
+ from_bci -1
763
+ to_bci -1
764
+ predecessors
765
+ successors
766
+ xhandlers
767
+ flags
768
+ probability 4607182418800017408
769
+ begin_IR
770
+ LIR
771
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
772
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
773
+ nr 8 <|@ instruction rax|DWORD = MOV [rsi|QWORD] size: DWORD <|@ <|@
774
+ nr 12 <|@ instruction RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
775
+ end_IR
776
+ end_block
777
+ end_cfg
778
+ begin_bytecodes
779
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
780
+ 3: lload_0
781
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
782
+ 7: ireturn
783
+ <|@
784
+ end_bytecodes
785
+ begin_cfg
786
+ name "After NullCheckOptimizer"
787
+ begin_block
788
+ name "B0"
789
+ from_bci -1
790
+ to_bci -1
791
+ predecessors
792
+ successors
793
+ xhandlers
794
+ flags
795
+ probability 4607182418800017408
796
+ begin_IR
797
+ LIR
798
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
799
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
800
+ nr 8 <|@ instruction rax|DWORD = MOV [rsi|QWORD] size: DWORD <|@ <|@
801
+ nr 12 <|@ instruction RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
802
+ end_IR
803
+ end_block
804
+ end_cfg
805
+ begin_bytecodes
806
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
807
+ 3: lload_0
808
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
809
+ 7: ireturn
810
+ <|@
811
+ end_bytecodes
812
+ begin_cfg
813
+ name "After StackMoveOptimization"
814
+ begin_block
815
+ name "B0"
816
+ from_bci -1
817
+ to_bci -1
818
+ predecessors
819
+ successors
820
+ xhandlers
821
+ flags
822
+ probability 4607182418800017408
823
+ begin_IR
824
+ LIR
825
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
826
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
827
+ nr 8 <|@ instruction rax|DWORD = MOV [rsi|QWORD] size: DWORD <|@ <|@
828
+ nr 12 <|@ instruction RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
829
+ end_IR
830
+ end_block
831
+ end_cfg
832
+ begin_bytecodes
833
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
834
+ 3: lload_0
835
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
836
+ 7: ireturn
837
+ <|@
838
+ end_bytecodes
839
+ begin_cfg
840
+ name "After PostAllocationOptimizationStage"
841
+ begin_block
842
+ name "B0"
843
+ from_bci -1
844
+ to_bci -1
845
+ predecessors
846
+ successors
847
+ xhandlers
848
+ flags
849
+ probability 4607182418800017408
850
+ begin_IR
851
+ LIR
852
+ nr 0 <|@ instruction [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
853
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <|@ <|@
854
+ nr 8 <|@ instruction rax|DWORD = MOV [rsi|QWORD] size: DWORD <|@ <|@
855
+ nr 12 <|@ instruction RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <|@ <|@
856
+ end_IR
857
+ end_block
858
+ end_cfg
859
+ begin_bytecodes
860
+ 0: getstatic #61 // UNSAFE:sun.misc.Unsafe
861
+ 3: lload_0
862
+ 4: invokevirtual #62 // sun.misc.Unsafe.getInt:(long)int
863
+ 7: ireturn
864
+ <|@
865
+ end_bytecodes
866
+ begin_cfg
867
+ name "After code generation"
868
+ end_cfg
869
+ begin_nmethod
870
+ <<<HexCodeFile
871
+ Platform AMD64 64 <||@
872
+ HexCode 0 0f1f4400008b06850500000000c5f877c3e80000000090e80000000090 <||@
873
+ Comment 0 3 <||@
874
+ Comment 0 1 <||@
875
+ Comment 5 block B0 null <||@
876
+ Comment 5 0 [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <||@
877
+ Comment 5 4 [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <||@
878
+ Comment 5 8 rax|DWORD = MOV [rsi|QWORD] size: DWORD <||@
879
+ Comment 7 12 RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <||@
880
+ Comment 7 12 <||@
881
+ Comment 17 {Stub<ExceptionHandlerStub.exceptionHandler>@0x112e24320:CallingConvention[rax|QWORD[.], rdx|QWORD]:CallingConvention[rax|QWORD[.], rdx|QWORD]; temps=rdi|ILLEGAL,xmm14|ILLEGAL,xmm15|ILLEGAL,xmm12|ILLEGAL,xmm13|ILLEGAL,xmm10|ILLEGAL,xmm11|ILLEGAL,xmm7|ILLEGAL,xmm8|ILLEGAL,xmm9|ILLEGAL,xmm0|ILLEGAL,xmm1|ILLEGAL,xmm2|ILLEGAL,xmm3|ILLEGAL,xmm4|ILLEGAL,xmm5|ILLEGAL,xmm6|ILLEGAL,rax|ILLEGAL,rcx|ILLEGAL,rdx|ILLEGAL,rsi|ILLEGAL,r8|ILLEGAL,r9|ILLEGAL,r10|ILLEGAL,r11|ILLEGAL} <||@
882
+ Comment 17 4 <||@
883
+ Comment 23 {Field[name=CompilerToVM::Data::SharedRuntime_deopt_blob_unpack, type=address, offset=0, address=0x1108bc128, value=4610474560]:0x112ce4240} <||@
884
+ Comment 23 5 <||@
885
+ HexCodeFile>>> <|@
886
+ end_nmethod
887
+ begin_compilation
888
+ name " HotSpotCompilation-361[JavaExamples.exampleUnsafeRead(long)]"
889
+ method "HotSpotCompilation-361[JavaExamples.exampleUnsafeRead(long)]"
890
+ date 1583364092109
891
+ end_compilation
892
+ begin_cfg
893
+ name "After code installation"
894
+ end_cfg
895
+ begin_nmethod
896
+ <<<HexCodeFile
897
+ Platform AMD64 64 <||@
898
+ HexCode 112e365a0 0f1f4400008b068505594a93fbc5f877c3e86addfeff90e884dceaff90f4f4f4 <||@
899
+ Comment 0 3 <||@
900
+ Comment 0 1 <||@
901
+ Comment 5 block B0 null <||@
902
+ Comment 5 0 [rsi|QWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <||@
903
+ Comment 5 4 [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13ef98010 slotKind: QWORD <||@
904
+ Comment 5 8 rax|DWORD = MOV [rsi|QWORD] size: DWORD <||@
905
+ Comment 7 12 RETURN (savedRbp: rbp|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@13ae06790 <||@
906
+ Comment 7 12 <||@
907
+ Comment 17 {Stub<ExceptionHandlerStub.exceptionHandler>@0x112e24320:CallingConvention[rax|QWORD[.], rdx|QWORD]:CallingConvention[rax|QWORD[.], rdx|QWORD]; temps=rdi|ILLEGAL,xmm14|ILLEGAL,xmm15|ILLEGAL,xmm12|ILLEGAL,xmm13|ILLEGAL,xmm10|ILLEGAL,xmm11|ILLEGAL,xmm7|ILLEGAL,xmm8|ILLEGAL,xmm9|ILLEGAL,xmm0|ILLEGAL,xmm1|ILLEGAL,xmm2|ILLEGAL,xmm3|ILLEGAL,xmm4|ILLEGAL,xmm5|ILLEGAL,xmm6|ILLEGAL,rax|ILLEGAL,rcx|ILLEGAL,rdx|ILLEGAL,rsi|ILLEGAL,r8|ILLEGAL,r9|ILLEGAL,r10|ILLEGAL,r11|ILLEGAL} <||@
908
+ Comment 17 4 <||@
909
+ Comment 23 {Field[name=CompilerToVM::Data::SharedRuntime_deopt_blob_unpack, type=address, offset=0, address=0x1108bc128, value=4610474560]:0x112ce4240} <||@
910
+ Comment 23 5 <||@
911
+ HexCodeFile>>> <|@
912
+ end_nmethod