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,2263 @@
1
+ begin_compilation
2
+ name " HotSpotCompilation-130[JavaExamples.exampleArrayRead(int[], int)]"
3
+ method "HotSpotCompilation-130[JavaExamples.exampleArrayRead(int[], int)]"
4
+ date 1583364091890
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 "B1" "B2"
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: i42
28
+ === Usages ===
29
+ === Predecessor ===
30
+ - >@ <|@
31
+ instruction <@StartNode|@org.graalvm.compiler.nodes.StartNode>@ stateAfter: - #next: i42 <|@ <|@
32
+ f <@~|@floating>@ <|@
33
+ tid a1 <|@
34
+ d <@d|@=== Debug Properties ===
35
+ index: 0
36
+ stamp: a# [I
37
+ uncheckedStamp: [null]
38
+ === Inputs ===
39
+ === Succesors ===
40
+ === Usages ===
41
+ ?3 v45 v44
42
+ === Predecessor ===
43
+ - >@ <|@
44
+ instruction <@Parameter|@org.graalvm.compiler.nodes.ParameterNode>@ <|@ <|@
45
+ f <@~|@floating>@ <|@
46
+ tid i2 <|@
47
+ d <@d|@=== Debug Properties ===
48
+ index: 1
49
+ stamp: i32
50
+ uncheckedStamp: [null]
51
+ === Inputs ===
52
+ === Succesors ===
53
+ === Usages ===
54
+ ?3 v45 v12
55
+ === Predecessor ===
56
+ - >@ <|@
57
+ instruction <@Parameter|@org.graalvm.compiler.nodes.ParameterNode>@ <|@ <|@
58
+ tid ?3 <|@
59
+ d <@d|@=== Debug Properties ===
60
+ bci: 0
61
+ code: ResolvedJavaMethodBytecode<JavaExamples.exampleArrayRead(int[], int)>
62
+ duringCall: false
63
+ localsSize: 2
64
+ locksSize: 0
65
+ rethrowException: false
66
+ sourceFile: JavaExamples.java
67
+ sourceLine: 313
68
+ stackSize: 0
69
+ === Inputs ===
70
+ outerFrameState: -
71
+ values: a1 i2
72
+ === Succesors ===
73
+ === Usages ===
74
+ v39 i42
75
+ === Predecessor ===
76
+ - >@ <|@
77
+ instruction <@FrameState|@org.graalvm.compiler.nodes.FrameState>@ outerFrameState: - values: a1 i2 <|@ <|@
78
+ f <@~|@floating>@ <|@
79
+ tid v44 <|@
80
+ d <@d|@=== Debug Properties ===
81
+ displacement: 12
82
+ scale: Times1
83
+ stamp: void*
84
+ === Inputs ===
85
+ base: a1
86
+ index: -
87
+ === Succesors ===
88
+ === Usages ===
89
+ i42
90
+ === Predecessor ===
91
+ - >@ <|@
92
+ instruction <@AMD64Address|@org.graalvm.compiler.core.amd64.AMD64AddressNode>@ base: a1 index: - <|@ <|@
93
+ f <@#|@fixed with next>@ <|@
94
+ tid i42 <|@
95
+ d <@d|@=== Debug Properties ===
96
+ barrierType: NONE
97
+ forceFixed: false
98
+ location: [].length:final
99
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
100
+ nullCheck: true
101
+ stamp: i32 [0 - 2147483647] ⇈000000007fffffff
102
+ === Inputs ===
103
+ stateBefore: ?3
104
+ guard: -
105
+ address: v44
106
+ lastLocationAccess: -
107
+ === Succesors ===
108
+ next: v32
109
+ === Usages ===
110
+ v12
111
+ === Predecessor ===
112
+ v0 >@ <|@
113
+ instruction <@Read|@org.graalvm.compiler.nodes.memory.ReadNode>@ stateBefore: ?3 guard: - address: v44 lastLocationAccess: - #next: v32 <|@ <|@
114
+ f <@~|@floating>@ <|@
115
+ tid v12 <|@
116
+ d <@d|@=== Debug Properties ===
117
+ condition: BT
118
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
119
+ op: org.graalvm.compiler.nodes.calc.IntegerBelowNode$BelowOp@136e382d8
120
+ stamp: void
121
+ unorderedIsTrue: false
122
+ === Inputs ===
123
+ x: i2
124
+ y: i42
125
+ === Succesors ===
126
+ === Usages ===
127
+ v32
128
+ === Predecessor ===
129
+ - >@ <|@
130
+ instruction <@|<||@org.graalvm.compiler.nodes.calc.IntegerBelowNode>@ x: i2 y: i42 <|@ <|@
131
+ f <@*|@fixed>@ <|@
132
+ tid v32 <|@
133
+ d <@d|@=== Debug Properties ===
134
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
135
+ stamp: void
136
+ trueSuccessorProbability: 1.0
137
+ === Inputs ===
138
+ condition: v12
139
+ === Succesors ===
140
+ trueSuccessor: v29
141
+ falseSuccessor: v31
142
+ === Usages ===
143
+ === Predecessor ===
144
+ i42 >@ <|@
145
+ instruction <@If|@org.graalvm.compiler.nodes.IfNode>@ condition: v12 #trueSuccessor: v29 #falseSuccessor: v31 <|@ <|@
146
+ end_IR
147
+ end_block
148
+ begin_block
149
+ name "B1"
150
+ from_bci -1
151
+ to_bci -1
152
+ predecessors "B0"
153
+ successors
154
+ xhandlers
155
+ flags
156
+ probability 4607182418800017408
157
+ begin_IR
158
+ HIR
159
+ f <@#|@fixed with next>@ <|@
160
+ tid v29 <|@
161
+ d <@d|@=== Debug Properties ===
162
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
163
+ stamp: void
164
+ withSpeculationFence: false
165
+ === Inputs ===
166
+ === Succesors ===
167
+ next: i43
168
+ === Usages ===
169
+ === Predecessor ===
170
+ v32 >@ <|@
171
+ instruction <@Begin|@org.graalvm.compiler.nodes.BeginNode>@ #next: i43 <|@ <|@
172
+ f <@~|@floating>@ <|@
173
+ tid v45 <|@
174
+ d <@d|@=== Debug Properties ===
175
+ displacement: 16
176
+ scale: Times4
177
+ stamp: void*
178
+ === Inputs ===
179
+ base: a1
180
+ index: i2
181
+ === Succesors ===
182
+ === Usages ===
183
+ i43
184
+ === Predecessor ===
185
+ - >@ <|@
186
+ instruction <@AMD64Address|@org.graalvm.compiler.core.amd64.AMD64AddressNode>@ base: a1 index: i2 <|@ <|@
187
+ f <@#|@fixed with next>@ <|@
188
+ tid i43 <|@
189
+ d <@d|@=== Debug Properties ===
190
+ barrierType: NONE
191
+ forceFixed: false
192
+ location: Array: int
193
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
194
+ nullCheck: false
195
+ stamp: i32
196
+ === Inputs ===
197
+ stateBefore: -
198
+ guard: -
199
+ address: v45
200
+ lastLocationAccess: -
201
+ === Succesors ===
202
+ next: v5
203
+ === Usages ===
204
+ v5
205
+ === Predecessor ===
206
+ v29 >@ <|@
207
+ instruction <@Read|@org.graalvm.compiler.nodes.memory.ReadNode>@ stateBefore: - guard: - address: v45 lastLocationAccess: - #next: v5 <|@ <|@
208
+ f <@*|@fixed>@ <|@
209
+ tid v5 <|@
210
+ d <@d|@=== Debug Properties ===
211
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 3]
212
+ stamp: void
213
+ === Inputs ===
214
+ result: i43
215
+ memoryMap: -
216
+ === Succesors ===
217
+ === Usages ===
218
+ === Predecessor ===
219
+ i43 >@ <|@
220
+ instruction <@Return|@org.graalvm.compiler.nodes.ReturnNode>@ result: i43 memoryMap: - <|@ <|@
221
+ end_IR
222
+ end_block
223
+ begin_block
224
+ name "B2"
225
+ from_bci -1
226
+ to_bci -1
227
+ predecessors "B0"
228
+ successors
229
+ xhandlers
230
+ flags
231
+ probability 2355382605114769408
232
+ begin_IR
233
+ HIR
234
+ f <@#|@fixed with next>@ <|@
235
+ tid v31 <|@
236
+ d <@d|@=== Debug Properties ===
237
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
238
+ stamp: void
239
+ withSpeculationFence: false
240
+ === Inputs ===
241
+ === Succesors ===
242
+ next: v39
243
+ === Usages ===
244
+ === Predecessor ===
245
+ v32 >@ <|@
246
+ instruction <@Begin|@org.graalvm.compiler.nodes.BeginNode>@ #next: v39 <|@ <|@
247
+ f <@~|@floating>@ <|@
248
+ tid j36 <|@
249
+ d <@d|@=== Debug Properties ===
250
+ isDefaultStable: false
251
+ rawvalue: 0
252
+ stableDimension: 0
253
+ stamp: i64 [0] ⇈0000000000000000
254
+ stampKind: i64
255
+ value: long[0|0x0]
256
+ === Inputs ===
257
+ === Succesors ===
258
+ === Usages ===
259
+ v39
260
+ === Predecessor ===
261
+ - >@ <|@
262
+ instruction <@Constant|@org.graalvm.compiler.nodes.ConstantNode>@ <|@ <|@
263
+ f <@~|@floating>@ <|@
264
+ tid i41 <|@
265
+ d <@d|@=== Debug Properties ===
266
+ isDefaultStable: false
267
+ rawvalue: -3355
268
+ stableDimension: 0
269
+ stamp: i32 [-3355] ⇊00000000fffff2e5 ⇈00000000fffff2e5
270
+ stampKind: i32
271
+ value: int[-3355|0xfffffffffffff2e5]
272
+ === Inputs ===
273
+ === Succesors ===
274
+ === Usages ===
275
+ v39
276
+ === Predecessor ===
277
+ - >@ <|@
278
+ instruction <@Constant|@org.graalvm.compiler.nodes.ConstantNode>@ <|@ <|@
279
+ f <@*|@fixed>@ <|@
280
+ tid v39 <|@
281
+ d <@d|@=== Debug Properties ===
282
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
283
+ stamp: void
284
+ === Inputs ===
285
+ stateBefore: ?3
286
+ actionAndReason: i41
287
+ speculation: j36
288
+ === Succesors ===
289
+ === Usages ===
290
+ === Predecessor ===
291
+ v31 >@ <|@
292
+ instruction <@DynamicDeoptimize|@org.graalvm.compiler.nodes.DynamicDeoptimizeNode>@ stateBefore: ?3 actionAndReason: i41 speculation: j36 <|@ <|@
293
+ end_IR
294
+ end_block
295
+ end_cfg
296
+ begin_cfg
297
+ name "After LIRGeneration"
298
+ begin_block
299
+ name "B0"
300
+ from_bci -1
301
+ to_bci -1
302
+ predecessors
303
+ successors "B1" "B2"
304
+ xhandlers
305
+ flags
306
+ probability 4607182418800017408
307
+ begin_IR
308
+ LIR
309
+ nr -1 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
310
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
311
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
312
+ nr -1 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
313
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
314
+ nr -1 <|@ st <@st|@JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
315
+ locals: v0|QWORD[.] v1|DWORD
316
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
317
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
318
+ end_IR
319
+ end_block
320
+ begin_block
321
+ name "B1"
322
+ from_bci -1
323
+ to_bci -1
324
+ predecessors "B0"
325
+ successors
326
+ xhandlers
327
+ flags
328
+ probability 4607182418800017408
329
+ begin_IR
330
+ LIR
331
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
332
+ nr -1 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
333
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
334
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
335
+ end_IR
336
+ end_block
337
+ begin_block
338
+ name "B2"
339
+ from_bci -1
340
+ to_bci -1
341
+ predecessors "B0"
342
+ successors
343
+ xhandlers
344
+ flags
345
+ probability 2355382605114769408
346
+ begin_IR
347
+ LIR
348
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
349
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
350
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
351
+ nr -1 <|@ st <@st|@JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
352
+ locals: v0|QWORD[.] v1|DWORD
353
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
354
+ end_IR
355
+ end_block
356
+ end_cfg
357
+ begin_bytecodes
358
+ 0: aload_0
359
+ 1: iload_1
360
+ 2: iaload
361
+ 3: ireturn
362
+ <|@
363
+ end_bytecodes
364
+ begin_cfg
365
+ name "After LIR generation"
366
+ begin_block
367
+ name "B0"
368
+ from_bci -1
369
+ to_bci -1
370
+ predecessors
371
+ successors "B1" "B2"
372
+ xhandlers
373
+ flags
374
+ probability 4607182418800017408
375
+ begin_IR
376
+ HIR
377
+ f <@#|@fixed with next>@ <|@
378
+ tid v0 <|@
379
+ d <@d|@=== Debug Properties ===
380
+ stamp: void
381
+ withSpeculationFence: false
382
+ === Inputs ===
383
+ stateAfter: -
384
+ === Succesors ===
385
+ next: i42
386
+ === Usages ===
387
+ === Predecessor ===
388
+ - >@ <|@
389
+ instruction <@StartNode|@org.graalvm.compiler.nodes.StartNode>@ stateAfter: - #next: i42 <|@ <|@
390
+ f <@~|@floating>@ <|@
391
+ tid a1 <|@
392
+ result v0|QWORD[.] <|@
393
+ d <@d|@=== Debug Properties ===
394
+ index: 0
395
+ stamp: a# [I
396
+ uncheckedStamp: [null]
397
+ === Inputs ===
398
+ === Succesors ===
399
+ === Usages ===
400
+ ?3 v45 v44
401
+ === Predecessor ===
402
+ - >@ <|@
403
+ instruction <@Parameter|@org.graalvm.compiler.nodes.ParameterNode>@ <|@ <|@
404
+ f <@~|@floating>@ <|@
405
+ tid i2 <|@
406
+ result v1|DWORD <|@
407
+ d <@d|@=== Debug Properties ===
408
+ index: 1
409
+ stamp: i32
410
+ uncheckedStamp: [null]
411
+ === Inputs ===
412
+ === Succesors ===
413
+ === Usages ===
414
+ ?3 v45 v12
415
+ === Predecessor ===
416
+ - >@ <|@
417
+ instruction <@Parameter|@org.graalvm.compiler.nodes.ParameterNode>@ <|@ <|@
418
+ tid ?3 <|@
419
+ d <@d|@=== Debug Properties ===
420
+ bci: 0
421
+ code: ResolvedJavaMethodBytecode<JavaExamples.exampleArrayRead(int[], int)>
422
+ duringCall: false
423
+ localsSize: 2
424
+ locksSize: 0
425
+ rethrowException: false
426
+ sourceFile: JavaExamples.java
427
+ sourceLine: 313
428
+ stackSize: 0
429
+ === Inputs ===
430
+ outerFrameState: -
431
+ values: a1 i2
432
+ === Succesors ===
433
+ === Usages ===
434
+ v39 i42
435
+ === Predecessor ===
436
+ - >@ <|@
437
+ instruction <@FrameState|@org.graalvm.compiler.nodes.FrameState>@ outerFrameState: - values: a1 i2 <|@ <|@
438
+ f <@~|@floating>@ <|@
439
+ tid v44 <|@
440
+ result [v0|QWORD[.] + 12] <|@
441
+ d <@d|@=== Debug Properties ===
442
+ displacement: 12
443
+ scale: Times1
444
+ stamp: void*
445
+ === Inputs ===
446
+ base: a1
447
+ index: -
448
+ === Succesors ===
449
+ === Usages ===
450
+ i42
451
+ === Predecessor ===
452
+ - >@ <|@
453
+ instruction <@AMD64Address|@org.graalvm.compiler.core.amd64.AMD64AddressNode>@ base: a1 index: - <|@ <|@
454
+ f <@#|@fixed with next>@ <|@
455
+ tid i42 <|@
456
+ result INTERIOR_MATCH <|@
457
+ d <@d|@=== Debug Properties ===
458
+ barrierType: NONE
459
+ forceFixed: false
460
+ location: [].length:final
461
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
462
+ nullCheck: true
463
+ stamp: i32 [0 - 2147483647] ⇈000000007fffffff
464
+ === Inputs ===
465
+ stateBefore: ?3
466
+ guard: -
467
+ address: v44
468
+ lastLocationAccess: -
469
+ === Succesors ===
470
+ next: v32
471
+ === Usages ===
472
+ v12
473
+ === Predecessor ===
474
+ v0 >@ <|@
475
+ instruction <@Read|@org.graalvm.compiler.nodes.memory.ReadNode>@ stateBefore: ?3 guard: - address: v44 lastLocationAccess: - #next: v32 <|@ <|@
476
+ f <@~|@floating>@ <|@
477
+ tid v12 <|@
478
+ result INTERIOR_MATCH <|@
479
+ d <@d|@=== Debug Properties ===
480
+ condition: BT
481
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
482
+ op: org.graalvm.compiler.nodes.calc.IntegerBelowNode$BelowOp@136e382d8
483
+ stamp: void
484
+ unorderedIsTrue: false
485
+ === Inputs ===
486
+ x: i2
487
+ y: i42
488
+ === Succesors ===
489
+ === Usages ===
490
+ v32
491
+ === Predecessor ===
492
+ - >@ <|@
493
+ instruction <@|<||@org.graalvm.compiler.nodes.calc.IntegerBelowNode>@ x: i2 y: i42 <|@ <|@
494
+ f <@*|@fixed>@ <|@
495
+ tid v32 <|@
496
+ result org.graalvm.compiler.core.match.ComplexMatchValue@13bdcebd8 <|@
497
+ d <@d|@=== Debug Properties ===
498
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
499
+ stamp: void
500
+ trueSuccessorProbability: 1.0
501
+ === Inputs ===
502
+ condition: v12
503
+ === Succesors ===
504
+ trueSuccessor: v29
505
+ falseSuccessor: v31
506
+ === Usages ===
507
+ === Predecessor ===
508
+ i42 >@ <|@
509
+ instruction <@If|@org.graalvm.compiler.nodes.IfNode>@ condition: v12 #trueSuccessor: v29 #falseSuccessor: v31 <|@ <|@
510
+ end_IR
511
+ begin_IR
512
+ LIR
513
+ nr -1 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
514
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
515
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
516
+ nr -1 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
517
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
518
+ nr -1 <|@ st <@st|@JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
519
+ locals: v0|QWORD[.] v1|DWORD
520
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
521
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
522
+ end_IR
523
+ end_block
524
+ begin_block
525
+ name "B1"
526
+ from_bci -1
527
+ to_bci -1
528
+ predecessors "B0"
529
+ successors
530
+ xhandlers
531
+ flags
532
+ probability 4607182418800017408
533
+ begin_IR
534
+ HIR
535
+ f <@#|@fixed with next>@ <|@
536
+ tid v29 <|@
537
+ d <@d|@=== Debug Properties ===
538
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
539
+ stamp: void
540
+ withSpeculationFence: false
541
+ === Inputs ===
542
+ === Succesors ===
543
+ next: i43
544
+ === Usages ===
545
+ === Predecessor ===
546
+ v32 >@ <|@
547
+ instruction <@Begin|@org.graalvm.compiler.nodes.BeginNode>@ #next: i43 <|@ <|@
548
+ f <@~|@floating>@ <|@
549
+ tid v45 <|@
550
+ result [v0|QWORD[.] + v1|DWORD * 4 + 16] <|@
551
+ d <@d|@=== Debug Properties ===
552
+ displacement: 16
553
+ scale: Times4
554
+ stamp: void*
555
+ === Inputs ===
556
+ base: a1
557
+ index: i2
558
+ === Succesors ===
559
+ === Usages ===
560
+ i43
561
+ === Predecessor ===
562
+ - >@ <|@
563
+ instruction <@AMD64Address|@org.graalvm.compiler.core.amd64.AMD64AddressNode>@ base: a1 index: i2 <|@ <|@
564
+ f <@#|@fixed with next>@ <|@
565
+ tid i43 <|@
566
+ result v2|DWORD <|@
567
+ d <@d|@=== Debug Properties ===
568
+ barrierType: NONE
569
+ forceFixed: false
570
+ location: Array: int
571
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
572
+ nullCheck: false
573
+ stamp: i32
574
+ === Inputs ===
575
+ stateBefore: -
576
+ guard: -
577
+ address: v45
578
+ lastLocationAccess: -
579
+ === Succesors ===
580
+ next: v5
581
+ === Usages ===
582
+ v5
583
+ === Predecessor ===
584
+ v29 >@ <|@
585
+ instruction <@Read|@org.graalvm.compiler.nodes.memory.ReadNode>@ stateBefore: - guard: - address: v45 lastLocationAccess: - #next: v5 <|@ <|@
586
+ f <@*|@fixed>@ <|@
587
+ tid v5 <|@
588
+ d <@d|@=== Debug Properties ===
589
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 3]
590
+ stamp: void
591
+ === Inputs ===
592
+ result: i43
593
+ memoryMap: -
594
+ === Succesors ===
595
+ === Usages ===
596
+ === Predecessor ===
597
+ i43 >@ <|@
598
+ instruction <@Return|@org.graalvm.compiler.nodes.ReturnNode>@ result: i43 memoryMap: - <|@ <|@
599
+ end_IR
600
+ begin_IR
601
+ LIR
602
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
603
+ nr -1 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
604
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
605
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
606
+ end_IR
607
+ end_block
608
+ begin_block
609
+ name "B2"
610
+ from_bci -1
611
+ to_bci -1
612
+ predecessors "B0"
613
+ successors
614
+ xhandlers
615
+ flags
616
+ probability 2355382605114769408
617
+ begin_IR
618
+ HIR
619
+ f <@#|@fixed with next>@ <|@
620
+ tid v31 <|@
621
+ d <@d|@=== Debug Properties ===
622
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
623
+ stamp: void
624
+ withSpeculationFence: false
625
+ === Inputs ===
626
+ === Succesors ===
627
+ next: v39
628
+ === Usages ===
629
+ === Predecessor ===
630
+ v32 >@ <|@
631
+ instruction <@Begin|@org.graalvm.compiler.nodes.BeginNode>@ #next: v39 <|@ <|@
632
+ f <@~|@floating>@ <|@
633
+ tid j36 <|@
634
+ result long[0|0x0] <|@
635
+ d <@d|@=== Debug Properties ===
636
+ isDefaultStable: false
637
+ rawvalue: 0
638
+ stableDimension: 0
639
+ stamp: i64 [0] ⇈0000000000000000
640
+ stampKind: i64
641
+ value: long[0|0x0]
642
+ === Inputs ===
643
+ === Succesors ===
644
+ === Usages ===
645
+ v39
646
+ === Predecessor ===
647
+ - >@ <|@
648
+ instruction <@Constant|@org.graalvm.compiler.nodes.ConstantNode>@ <|@ <|@
649
+ f <@~|@floating>@ <|@
650
+ tid i41 <|@
651
+ result int[-3355|0xfffffffffffff2e5] <|@
652
+ d <@d|@=== Debug Properties ===
653
+ isDefaultStable: false
654
+ rawvalue: -3355
655
+ stableDimension: 0
656
+ stamp: i32 [-3355] ⇊00000000fffff2e5 ⇈00000000fffff2e5
657
+ stampKind: i32
658
+ value: int[-3355|0xfffffffffffff2e5]
659
+ === Inputs ===
660
+ === Succesors ===
661
+ === Usages ===
662
+ v39
663
+ === Predecessor ===
664
+ - >@ <|@
665
+ instruction <@Constant|@org.graalvm.compiler.nodes.ConstantNode>@ <|@ <|@
666
+ f <@*|@fixed>@ <|@
667
+ tid v39 <|@
668
+ d <@d|@=== Debug Properties ===
669
+ nodeSourcePosition: at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 2]
670
+ stamp: void
671
+ === Inputs ===
672
+ stateBefore: ?3
673
+ actionAndReason: i41
674
+ speculation: j36
675
+ === Succesors ===
676
+ === Usages ===
677
+ === Predecessor ===
678
+ v31 >@ <|@
679
+ instruction <@DynamicDeoptimize|@org.graalvm.compiler.nodes.DynamicDeoptimizeNode>@ stateBefore: ?3 actionAndReason: i41 speculation: j36 <|@ <|@
680
+ end_IR
681
+ begin_IR
682
+ LIR
683
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
684
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
685
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
686
+ nr -1 <|@ st <@st|@JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
687
+ locals: v0|QWORD[.] v1|DWORD
688
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
689
+ end_IR
690
+ end_block
691
+ end_cfg
692
+ begin_cfg
693
+ name "After ConstantLoadOptimization"
694
+ begin_block
695
+ name "B0"
696
+ from_bci -1
697
+ to_bci -1
698
+ predecessors
699
+ successors "B1" "B2"
700
+ xhandlers
701
+ flags
702
+ probability 4607182418800017408
703
+ begin_IR
704
+ LIR
705
+ nr -1 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
706
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
707
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
708
+ nr -1 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
709
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
710
+ nr -1 <|@ st <@st|@JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
711
+ locals: v0|QWORD[.] v1|DWORD
712
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
713
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
714
+ end_IR
715
+ end_block
716
+ begin_block
717
+ name "B1"
718
+ from_bci -1
719
+ to_bci -1
720
+ predecessors "B0"
721
+ successors
722
+ xhandlers
723
+ flags
724
+ probability 4607182418800017408
725
+ begin_IR
726
+ LIR
727
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
728
+ nr -1 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
729
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
730
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
731
+ end_IR
732
+ end_block
733
+ begin_block
734
+ name "B2"
735
+ from_bci -1
736
+ to_bci -1
737
+ predecessors "B0"
738
+ successors
739
+ xhandlers
740
+ flags
741
+ probability 2355382605114769408
742
+ begin_IR
743
+ LIR
744
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
745
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
746
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
747
+ nr -1 <|@ st <@st|@JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
748
+ locals: v0|QWORD[.] v1|DWORD
749
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
750
+ end_IR
751
+ end_block
752
+ end_cfg
753
+ begin_bytecodes
754
+ 0: aload_0
755
+ 1: iload_1
756
+ 2: iaload
757
+ 3: ireturn
758
+ <|@
759
+ end_bytecodes
760
+ begin_cfg
761
+ name "After SaveCalleeSaveRegisters"
762
+ begin_block
763
+ name "B0"
764
+ from_bci -1
765
+ to_bci -1
766
+ predecessors
767
+ successors "B1" "B2"
768
+ xhandlers
769
+ flags
770
+ probability 4607182418800017408
771
+ begin_IR
772
+ LIR
773
+ nr -1 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
774
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
775
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
776
+ nr -1 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
777
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
778
+ nr -1 <|@ st <@st|@JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
779
+ locals: v0|QWORD[.] v1|DWORD
780
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
781
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
782
+ end_IR
783
+ end_block
784
+ begin_block
785
+ name "B1"
786
+ from_bci -1
787
+ to_bci -1
788
+ predecessors "B0"
789
+ successors
790
+ xhandlers
791
+ flags
792
+ probability 4607182418800017408
793
+ begin_IR
794
+ LIR
795
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
796
+ nr -1 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
797
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
798
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
799
+ end_IR
800
+ end_block
801
+ begin_block
802
+ name "B2"
803
+ from_bci -1
804
+ to_bci -1
805
+ predecessors "B0"
806
+ successors
807
+ xhandlers
808
+ flags
809
+ probability 2355382605114769408
810
+ begin_IR
811
+ LIR
812
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
813
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
814
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
815
+ nr -1 <|@ st <@st|@JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
816
+ locals: v0|QWORD[.] v1|DWORD
817
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
818
+ end_IR
819
+ end_block
820
+ end_cfg
821
+ begin_bytecodes
822
+ 0: aload_0
823
+ 1: iload_1
824
+ 2: iaload
825
+ 3: ireturn
826
+ <|@
827
+ end_bytecodes
828
+ begin_cfg
829
+ name "After PreAllocationOptimizationStage"
830
+ begin_block
831
+ name "B0"
832
+ from_bci -1
833
+ to_bci -1
834
+ predecessors
835
+ successors "B1" "B2"
836
+ xhandlers
837
+ flags
838
+ probability 4607182418800017408
839
+ begin_IR
840
+ LIR
841
+ nr -1 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
842
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
843
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
844
+ nr -1 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
845
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
846
+ nr -1 <|@ st <@st|@JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
847
+ locals: v0|QWORD[.] v1|DWORD
848
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
849
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
850
+ end_IR
851
+ end_block
852
+ begin_block
853
+ name "B1"
854
+ from_bci -1
855
+ to_bci -1
856
+ predecessors "B0"
857
+ successors
858
+ xhandlers
859
+ flags
860
+ probability 4607182418800017408
861
+ begin_IR
862
+ LIR
863
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
864
+ nr -1 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
865
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
866
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
867
+ end_IR
868
+ end_block
869
+ begin_block
870
+ name "B2"
871
+ from_bci -1
872
+ to_bci -1
873
+ predecessors "B0"
874
+ successors
875
+ xhandlers
876
+ flags
877
+ probability 2355382605114769408
878
+ begin_IR
879
+ LIR
880
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
881
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
882
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
883
+ nr -1 <|@ st <@st|@JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
884
+ locals: v0|QWORD[.] v1|DWORD
885
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
886
+ end_IR
887
+ end_block
888
+ end_cfg
889
+ begin_bytecodes
890
+ 0: aload_0
891
+ 1: iload_1
892
+ 2: iaload
893
+ 3: ireturn
894
+ <|@
895
+ end_bytecodes
896
+ begin_cfg
897
+ name "After MarkBasePointers"
898
+ begin_block
899
+ name "B0"
900
+ from_bci -1
901
+ to_bci -1
902
+ predecessors
903
+ successors "B1" "B2"
904
+ xhandlers
905
+ flags
906
+ probability 4607182418800017408
907
+ begin_IR
908
+ LIR
909
+ nr -1 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
910
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
911
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
912
+ nr -1 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
913
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
914
+ nr -1 <|@ st <@st|@live-base-pointers: []
915
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
916
+ locals: v0|QWORD[.] v1|DWORD
917
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
918
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
919
+ end_IR
920
+ end_block
921
+ begin_block
922
+ name "B1"
923
+ from_bci -1
924
+ to_bci -1
925
+ predecessors "B0"
926
+ successors
927
+ xhandlers
928
+ flags
929
+ probability 4607182418800017408
930
+ begin_IR
931
+ LIR
932
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
933
+ nr -1 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
934
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
935
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
936
+ end_IR
937
+ end_block
938
+ begin_block
939
+ name "B2"
940
+ from_bci -1
941
+ to_bci -1
942
+ predecessors "B0"
943
+ successors
944
+ xhandlers
945
+ flags
946
+ probability 2355382605114769408
947
+ begin_IR
948
+ LIR
949
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
950
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
951
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
952
+ nr -1 <|@ st <@st|@live-base-pointers: []
953
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
954
+ locals: v0|QWORD[.] v1|DWORD
955
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
956
+ end_IR
957
+ end_block
958
+ end_cfg
959
+ begin_bytecodes
960
+ 0: aload_0
961
+ 1: iload_1
962
+ 2: iaload
963
+ 3: ireturn
964
+ <|@
965
+ end_bytecodes
966
+ begin_cfg
967
+ name "Before register allocation"
968
+ begin_block
969
+ name "B0"
970
+ from_bci -1
971
+ to_bci -1
972
+ predecessors
973
+ successors "B1" "B2"
974
+ xhandlers
975
+ flags
976
+ probability 4607182418800017408
977
+ begin_IR
978
+ LIR
979
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
980
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
981
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
982
+ nr 6 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
983
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
984
+ nr 10 <|@ st <@st|@live-base-pointers: []
985
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
986
+ locals: v0|QWORD[.] v1|DWORD
987
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
988
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
989
+ end_IR
990
+ end_block
991
+ begin_block
992
+ name "B1"
993
+ from_bci -1
994
+ to_bci -1
995
+ predecessors "B0"
996
+ successors
997
+ xhandlers
998
+ flags
999
+ probability 4607182418800017408
1000
+ begin_IR
1001
+ LIR
1002
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1003
+ nr 16 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
1004
+ nr 18 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
1005
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1006
+ end_IR
1007
+ end_block
1008
+ begin_block
1009
+ name "B2"
1010
+ from_bci -1
1011
+ to_bci -1
1012
+ predecessors "B0"
1013
+ successors
1014
+ xhandlers
1015
+ flags
1016
+ probability 2355382605114769408
1017
+ begin_IR
1018
+ LIR
1019
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1020
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1021
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1022
+ nr 28 <|@ st <@st|@live-base-pointers: []
1023
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1024
+ locals: v0|QWORD[.] v1|DWORD
1025
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1026
+ end_IR
1027
+ end_block
1028
+ end_cfg
1029
+ begin_bytecodes
1030
+ 0: aload_0
1031
+ 1: iload_1
1032
+ 2: iaload
1033
+ 3: ireturn
1034
+ <|@
1035
+ end_bytecodes
1036
+ begin_cfg
1037
+ name "After SSALinearScanLifetimeAnalysis"
1038
+ begin_block
1039
+ name "B0"
1040
+ from_bci -1
1041
+ to_bci -1
1042
+ predecessors
1043
+ successors "B1" "B2"
1044
+ xhandlers
1045
+ flags
1046
+ probability 4607182418800017408
1047
+ begin_IR
1048
+ LIR
1049
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1050
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1051
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1052
+ nr 6 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
1053
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
1054
+ nr 10 <|@ st <@st|@live-base-pointers: []
1055
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1056
+ locals: v0|QWORD[.] v1|DWORD
1057
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1058
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1059
+ end_IR
1060
+ end_block
1061
+ begin_block
1062
+ name "B1"
1063
+ from_bci -1
1064
+ to_bci -1
1065
+ predecessors "B0"
1066
+ successors
1067
+ xhandlers
1068
+ flags
1069
+ probability 4607182418800017408
1070
+ begin_IR
1071
+ LIR
1072
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1073
+ nr 16 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
1074
+ nr 18 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
1075
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1076
+ end_IR
1077
+ end_block
1078
+ begin_block
1079
+ name "B2"
1080
+ from_bci -1
1081
+ to_bci -1
1082
+ predecessors "B0"
1083
+ successors
1084
+ xhandlers
1085
+ flags
1086
+ probability 2355382605114769408
1087
+ begin_IR
1088
+ LIR
1089
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1090
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1091
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1092
+ nr 28 <|@ st <@st|@live-base-pointers: []
1093
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1094
+ locals: v0|QWORD[.] v1|DWORD
1095
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1096
+ end_IR
1097
+ end_block
1098
+ end_cfg
1099
+ begin_bytecodes
1100
+ 0: aload_0
1101
+ 1: iload_1
1102
+ 2: iaload
1103
+ 3: ireturn
1104
+ <|@
1105
+ end_bytecodes
1106
+ begin_intervals
1107
+ name "Before register allocation"
1108
+ rax|d fixed "[rax|d]" rax|d v2|d [0, 1[[18, 20[ "NoSpillStore"
1109
+ rdx|d fixed "[rdx|d]" rdx|d -1 [0, 8[ "NoSpillStore"
1110
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
1111
+ rsi|q fixed "[rsi|q]" rsi|q -1 [0, 6[ "NoSpillStore"
1112
+ v0|q QWORD "[v0|q]" v0|q rsi|q [6, 16[[22, 29[6 MustHaveRegister 10 MustHaveRegister 16 MustHaveRegister "NoSpillStore"
1113
+ v1|d DWORD "[v1|d]" v1|d rdx|d [8, 16[[22, 29[8 MustHaveRegister 10 MustHaveRegister 16 MustHaveRegister "NoSpillStore"
1114
+ v2|d DWORD "[v2|d]" v2|d -1 [16, 18[16 MustHaveRegister 18 ShouldHaveRegister "NoSpillStore"
1115
+ end_intervals
1116
+ begin_intervals
1117
+ name "After register allocation"
1118
+ rax|d fixed "[rax|d]" rax|d v2|d [0, 1[[18, 20[ "NoSpillStore"
1119
+ rdx|d fixed "[rdx|d]" rdx|d -1 [0, 8[ "NoSpillStore"
1120
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
1121
+ rsi|q fixed "[rsi|q]" rsi|q -1 [0, 6[ "NoSpillStore"
1122
+ v0|q QWORD "[rsi|q]" v0|q rsi|q [6, 16[[22, 29[6 MustHaveRegister 10 MustHaveRegister 16 MustHaveRegister "NoSpillStore"
1123
+ v1|d DWORD "[rdx|d]" v1|d rdx|d [8, 16[[22, 29[8 MustHaveRegister 10 MustHaveRegister 16 MustHaveRegister "NoSpillStore"
1124
+ v2|d DWORD "[rax|d]" v2|d -1 [16, 18[16 MustHaveRegister 18 ShouldHaveRegister "NoSpillStore"
1125
+ end_intervals
1126
+ begin_cfg
1127
+ name "After LinearScanRegisterAllocation"
1128
+ begin_block
1129
+ name "B0"
1130
+ from_bci -1
1131
+ to_bci -1
1132
+ predecessors
1133
+ successors "B1" "B2"
1134
+ xhandlers
1135
+ flags
1136
+ probability 4607182418800017408
1137
+ begin_IR
1138
+ LIR
1139
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1140
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1141
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1142
+ nr 6 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
1143
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
1144
+ nr 10 <|@ st <@st|@live-base-pointers: []
1145
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1146
+ locals: v0|QWORD[.] v1|DWORD
1147
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1148
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1149
+ end_IR
1150
+ end_block
1151
+ begin_block
1152
+ name "B1"
1153
+ from_bci -1
1154
+ to_bci -1
1155
+ predecessors "B0"
1156
+ successors
1157
+ xhandlers
1158
+ flags
1159
+ probability 4607182418800017408
1160
+ begin_IR
1161
+ LIR
1162
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1163
+ nr 16 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
1164
+ nr 18 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
1165
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1166
+ end_IR
1167
+ end_block
1168
+ begin_block
1169
+ name "B2"
1170
+ from_bci -1
1171
+ to_bci -1
1172
+ predecessors "B0"
1173
+ successors
1174
+ xhandlers
1175
+ flags
1176
+ probability 2355382605114769408
1177
+ begin_IR
1178
+ LIR
1179
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1180
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1181
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1182
+ nr 28 <|@ st <@st|@live-base-pointers: []
1183
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1184
+ locals: v0|QWORD[.] v1|DWORD
1185
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1186
+ end_IR
1187
+ end_block
1188
+ end_cfg
1189
+ begin_bytecodes
1190
+ 0: aload_0
1191
+ 1: iload_1
1192
+ 2: iaload
1193
+ 3: ireturn
1194
+ <|@
1195
+ end_bytecodes
1196
+ begin_intervals
1197
+ name "After optimize spill position"
1198
+ rax|d fixed "[rax|d]" rax|d v2|d [0, 1[[18, 20[ "NoSpillStore"
1199
+ rdx|d fixed "[rdx|d]" rdx|d -1 [0, 8[ "NoSpillStore"
1200
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
1201
+ rsi|q fixed "[rsi|q]" rsi|q -1 [0, 6[ "NoSpillStore"
1202
+ v0|q QWORD "[rsi|q]" v0|q rsi|q [6, 16[[22, 29[6 MustHaveRegister 10 MustHaveRegister 16 MustHaveRegister "NoSpillStore"
1203
+ v1|d DWORD "[rdx|d]" v1|d rdx|d [8, 16[[22, 29[8 MustHaveRegister 10 MustHaveRegister 16 MustHaveRegister "NoSpillStore"
1204
+ v2|d DWORD "[rax|d]" v2|d -1 [16, 18[16 MustHaveRegister 18 ShouldHaveRegister "NoSpillStore"
1205
+ end_intervals
1206
+ begin_cfg
1207
+ name "After LinearScanOptimizeSpillPosition"
1208
+ begin_block
1209
+ name "B0"
1210
+ from_bci -1
1211
+ to_bci -1
1212
+ predecessors
1213
+ successors "B1" "B2"
1214
+ xhandlers
1215
+ flags
1216
+ probability 4607182418800017408
1217
+ begin_IR
1218
+ LIR
1219
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1220
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1221
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1222
+ nr 6 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
1223
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
1224
+ nr 10 <|@ st <@st|@live-base-pointers: []
1225
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1226
+ locals: v0|QWORD[.] v1|DWORD
1227
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1228
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1229
+ end_IR
1230
+ end_block
1231
+ begin_block
1232
+ name "B1"
1233
+ from_bci -1
1234
+ to_bci -1
1235
+ predecessors "B0"
1236
+ successors
1237
+ xhandlers
1238
+ flags
1239
+ probability 4607182418800017408
1240
+ begin_IR
1241
+ LIR
1242
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1243
+ nr 16 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
1244
+ nr 18 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
1245
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1246
+ end_IR
1247
+ end_block
1248
+ begin_block
1249
+ name "B2"
1250
+ from_bci -1
1251
+ to_bci -1
1252
+ predecessors "B0"
1253
+ successors
1254
+ xhandlers
1255
+ flags
1256
+ probability 2355382605114769408
1257
+ begin_IR
1258
+ LIR
1259
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1260
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1261
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1262
+ nr 28 <|@ st <@st|@live-base-pointers: []
1263
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1264
+ locals: v0|QWORD[.] v1|DWORD
1265
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1266
+ end_IR
1267
+ end_block
1268
+ end_cfg
1269
+ begin_bytecodes
1270
+ 0: aload_0
1271
+ 1: iload_1
1272
+ 2: iaload
1273
+ 3: ireturn
1274
+ <|@
1275
+ end_bytecodes
1276
+ begin_intervals
1277
+ name "After resolve data flow"
1278
+ rax|d fixed "[rax|d]" rax|d v2|d [0, 1[[18, 20[ "NoSpillStore"
1279
+ rdx|d fixed "[rdx|d]" rdx|d -1 [0, 8[ "NoSpillStore"
1280
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
1281
+ rsi|q fixed "[rsi|q]" rsi|q -1 [0, 6[ "NoSpillStore"
1282
+ v0|q QWORD "[rsi|q]" v0|q rsi|q [6, 16[[22, 29[6 MustHaveRegister 10 MustHaveRegister 16 MustHaveRegister "NoSpillStore"
1283
+ v1|d DWORD "[rdx|d]" v1|d rdx|d [8, 16[[22, 29[8 MustHaveRegister 10 MustHaveRegister 16 MustHaveRegister "NoSpillStore"
1284
+ v2|d DWORD "[rax|d]" v2|d -1 [16, 18[16 MustHaveRegister 18 ShouldHaveRegister "NoSpillStore"
1285
+ end_intervals
1286
+ begin_cfg
1287
+ name "After SSALinearScanResolveDataFlow"
1288
+ begin_block
1289
+ name "B0"
1290
+ from_bci -1
1291
+ to_bci -1
1292
+ predecessors
1293
+ successors "B1" "B2"
1294
+ xhandlers
1295
+ flags
1296
+ probability 4607182418800017408
1297
+ begin_IR
1298
+ LIR
1299
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1300
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1301
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1302
+ nr 6 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
1303
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
1304
+ nr 10 <|@ st <@st|@live-base-pointers: []
1305
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1306
+ locals: v0|QWORD[.] v1|DWORD
1307
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1308
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1309
+ end_IR
1310
+ end_block
1311
+ begin_block
1312
+ name "B1"
1313
+ from_bci -1
1314
+ to_bci -1
1315
+ predecessors "B0"
1316
+ successors
1317
+ xhandlers
1318
+ flags
1319
+ probability 4607182418800017408
1320
+ begin_IR
1321
+ LIR
1322
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1323
+ nr 16 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
1324
+ nr 18 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
1325
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1326
+ end_IR
1327
+ end_block
1328
+ begin_block
1329
+ name "B2"
1330
+ from_bci -1
1331
+ to_bci -1
1332
+ predecessors "B0"
1333
+ successors
1334
+ xhandlers
1335
+ flags
1336
+ probability 2355382605114769408
1337
+ begin_IR
1338
+ LIR
1339
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1340
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1341
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1342
+ nr 28 <|@ st <@st|@live-base-pointers: []
1343
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1344
+ locals: v0|QWORD[.] v1|DWORD
1345
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1346
+ end_IR
1347
+ end_block
1348
+ end_cfg
1349
+ begin_bytecodes
1350
+ 0: aload_0
1351
+ 1: iload_1
1352
+ 2: iaload
1353
+ 3: ireturn
1354
+ <|@
1355
+ end_bytecodes
1356
+ begin_cfg
1357
+ name "After SSALinearScanEliminateSpillMove"
1358
+ begin_block
1359
+ name "B0"
1360
+ from_bci -1
1361
+ to_bci -1
1362
+ predecessors
1363
+ successors "B1" "B2"
1364
+ xhandlers
1365
+ flags
1366
+ probability 4607182418800017408
1367
+ begin_IR
1368
+ LIR
1369
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1370
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1371
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1372
+ nr 6 <|@ instruction v0|QWORD[.] = MOVE rsi|QWORD[.] moveKind: QWORD <|@ <|@
1373
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
1374
+ nr 10 <|@ st <@st|@live-base-pointers: []
1375
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1376
+ locals: v0|QWORD[.] v1|DWORD
1377
+ >@ <|@ instruction CMP (x: v1|DWORD, y: [v0|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1378
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1379
+ end_IR
1380
+ end_block
1381
+ begin_block
1382
+ name "B1"
1383
+ from_bci -1
1384
+ to_bci -1
1385
+ predecessors "B0"
1386
+ successors
1387
+ xhandlers
1388
+ flags
1389
+ probability 4607182418800017408
1390
+ begin_IR
1391
+ LIR
1392
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1393
+ nr 16 <|@ instruction v2|DWORD = MOV [v0|QWORD[.] + v1|DWORD * 4 + 16] size: DWORD <|@ <|@
1394
+ nr 18 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
1395
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1396
+ end_IR
1397
+ end_block
1398
+ begin_block
1399
+ name "B2"
1400
+ from_bci -1
1401
+ to_bci -1
1402
+ predecessors "B0"
1403
+ successors
1404
+ xhandlers
1405
+ flags
1406
+ probability 2355382605114769408
1407
+ begin_IR
1408
+ LIR
1409
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1410
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1411
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1412
+ nr 28 <|@ st <@st|@live-base-pointers: []
1413
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1414
+ locals: v0|QWORD[.] v1|DWORD
1415
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1416
+ end_IR
1417
+ end_block
1418
+ end_cfg
1419
+ begin_bytecodes
1420
+ 0: aload_0
1421
+ 1: iload_1
1422
+ 2: iaload
1423
+ 3: ireturn
1424
+ <|@
1425
+ end_bytecodes
1426
+ begin_cfg
1427
+ name "After LinearScanAssignLocations"
1428
+ begin_block
1429
+ name "B0"
1430
+ from_bci -1
1431
+ to_bci -1
1432
+ predecessors
1433
+ successors "B1" "B2"
1434
+ xhandlers
1435
+ flags
1436
+ probability 4607182418800017408
1437
+ begin_IR
1438
+ LIR
1439
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1440
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1441
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1442
+ nr 10 <|@ st <@st|@live-base-pointers: []
1443
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1444
+ locals: rsi|QWORD[.] rdx|DWORD
1445
+ >@ <|@ instruction CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1446
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1447
+ end_IR
1448
+ end_block
1449
+ begin_block
1450
+ name "B1"
1451
+ from_bci -1
1452
+ to_bci -1
1453
+ predecessors "B0"
1454
+ successors
1455
+ xhandlers
1456
+ flags
1457
+ probability 4607182418800017408
1458
+ begin_IR
1459
+ LIR
1460
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1461
+ nr 16 <|@ instruction rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <|@ <|@
1462
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1463
+ end_IR
1464
+ end_block
1465
+ begin_block
1466
+ name "B2"
1467
+ from_bci -1
1468
+ to_bci -1
1469
+ predecessors "B0"
1470
+ successors
1471
+ xhandlers
1472
+ flags
1473
+ probability 2355382605114769408
1474
+ begin_IR
1475
+ LIR
1476
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1477
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1478
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1479
+ nr 28 <|@ st <@st|@live-base-pointers: []
1480
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1481
+ locals: rsi|QWORD[.] rdx|DWORD
1482
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1483
+ end_IR
1484
+ end_block
1485
+ end_cfg
1486
+ begin_bytecodes
1487
+ 0: aload_0
1488
+ 1: iload_1
1489
+ 2: iaload
1490
+ 3: ireturn
1491
+ <|@
1492
+ end_bytecodes
1493
+ begin_cfg
1494
+ name "After LinearScan"
1495
+ begin_block
1496
+ name "B0"
1497
+ from_bci -1
1498
+ to_bci -1
1499
+ predecessors
1500
+ successors "B1" "B2"
1501
+ xhandlers
1502
+ flags
1503
+ probability 4607182418800017408
1504
+ begin_IR
1505
+ LIR
1506
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1507
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1508
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1509
+ nr 10 <|@ st <@st|@live-base-pointers: []
1510
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1511
+ locals: rsi|QWORD[.] rdx|DWORD
1512
+ >@ <|@ instruction CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1513
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1514
+ end_IR
1515
+ end_block
1516
+ begin_block
1517
+ name "B1"
1518
+ from_bci -1
1519
+ to_bci -1
1520
+ predecessors "B0"
1521
+ successors
1522
+ xhandlers
1523
+ flags
1524
+ probability 4607182418800017408
1525
+ begin_IR
1526
+ LIR
1527
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1528
+ nr 16 <|@ instruction rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <|@ <|@
1529
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1530
+ end_IR
1531
+ end_block
1532
+ begin_block
1533
+ name "B2"
1534
+ from_bci -1
1535
+ to_bci -1
1536
+ predecessors "B0"
1537
+ successors
1538
+ xhandlers
1539
+ flags
1540
+ probability 2355382605114769408
1541
+ begin_IR
1542
+ LIR
1543
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1544
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1545
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1546
+ nr 28 <|@ st <@st|@live-base-pointers: []
1547
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1548
+ locals: rsi|QWORD[.] rdx|DWORD
1549
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1550
+ end_IR
1551
+ end_block
1552
+ end_cfg
1553
+ begin_bytecodes
1554
+ 0: aload_0
1555
+ 1: iload_1
1556
+ 2: iaload
1557
+ 3: ireturn
1558
+ <|@
1559
+ end_bytecodes
1560
+ begin_cfg
1561
+ name "After LSStackSlotAllocator"
1562
+ begin_block
1563
+ name "B0"
1564
+ from_bci -1
1565
+ to_bci -1
1566
+ predecessors
1567
+ successors "B1" "B2"
1568
+ xhandlers
1569
+ flags
1570
+ probability 4607182418800017408
1571
+ begin_IR
1572
+ LIR
1573
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1574
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1575
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1576
+ nr 10 <|@ st <@st|@live-base-pointers: []
1577
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1578
+ locals: rsi|QWORD[.] rdx|DWORD
1579
+ >@ <|@ instruction CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1580
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1581
+ end_IR
1582
+ end_block
1583
+ begin_block
1584
+ name "B1"
1585
+ from_bci -1
1586
+ to_bci -1
1587
+ predecessors "B0"
1588
+ successors
1589
+ xhandlers
1590
+ flags
1591
+ probability 4607182418800017408
1592
+ begin_IR
1593
+ LIR
1594
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1595
+ nr 16 <|@ instruction rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <|@ <|@
1596
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1597
+ end_IR
1598
+ end_block
1599
+ begin_block
1600
+ name "B2"
1601
+ from_bci -1
1602
+ to_bci -1
1603
+ predecessors "B0"
1604
+ successors
1605
+ xhandlers
1606
+ flags
1607
+ probability 2355382605114769408
1608
+ begin_IR
1609
+ LIR
1610
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1611
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1612
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1613
+ nr 28 <|@ st <@st|@live-base-pointers: []
1614
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1615
+ locals: rsi|QWORD[.] rdx|DWORD
1616
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1617
+ end_IR
1618
+ end_block
1619
+ end_cfg
1620
+ begin_bytecodes
1621
+ 0: aload_0
1622
+ 1: iload_1
1623
+ 2: iaload
1624
+ 3: ireturn
1625
+ <|@
1626
+ end_bytecodes
1627
+ begin_cfg
1628
+ name "After LocationMarker"
1629
+ begin_block
1630
+ name "B0"
1631
+ from_bci -1
1632
+ to_bci -1
1633
+ predecessors
1634
+ successors "B1" "B2"
1635
+ xhandlers
1636
+ flags
1637
+ probability 4607182418800017408
1638
+ begin_IR
1639
+ LIR
1640
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1641
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1642
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1643
+ nr 10 <|@ st <@st|@reference-map: [rsi:0]
1644
+ live-base-pointers: []
1645
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1646
+ locals: rsi|QWORD[.] rdx|DWORD
1647
+ >@ <|@ instruction CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1648
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1649
+ end_IR
1650
+ end_block
1651
+ begin_block
1652
+ name "B1"
1653
+ from_bci -1
1654
+ to_bci -1
1655
+ predecessors "B0"
1656
+ successors
1657
+ xhandlers
1658
+ flags
1659
+ probability 4607182418800017408
1660
+ begin_IR
1661
+ LIR
1662
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1663
+ nr 16 <|@ instruction rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <|@ <|@
1664
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1665
+ end_IR
1666
+ end_block
1667
+ begin_block
1668
+ name "B2"
1669
+ from_bci -1
1670
+ to_bci -1
1671
+ predecessors "B0"
1672
+ successors
1673
+ xhandlers
1674
+ flags
1675
+ probability 2355382605114769408
1676
+ begin_IR
1677
+ LIR
1678
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1679
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1680
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1681
+ nr 28 <|@ st <@st|@reference-map: [rsi:0]
1682
+ live-base-pointers: []
1683
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1684
+ locals: rsi|QWORD[.] rdx|DWORD
1685
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1686
+ end_IR
1687
+ end_block
1688
+ end_cfg
1689
+ begin_bytecodes
1690
+ 0: aload_0
1691
+ 1: iload_1
1692
+ 2: iaload
1693
+ 3: ireturn
1694
+ <|@
1695
+ end_bytecodes
1696
+ begin_cfg
1697
+ name "After AllocationStage"
1698
+ begin_block
1699
+ name "B0"
1700
+ from_bci -1
1701
+ to_bci -1
1702
+ predecessors
1703
+ successors "B1" "B2"
1704
+ xhandlers
1705
+ flags
1706
+ probability 4607182418800017408
1707
+ begin_IR
1708
+ LIR
1709
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1710
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1711
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1712
+ nr 10 <|@ st <@st|@reference-map: [rsi:0]
1713
+ live-base-pointers: []
1714
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1715
+ locals: rsi|QWORD[.] rdx|DWORD
1716
+ >@ <|@ instruction CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1717
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1718
+ end_IR
1719
+ end_block
1720
+ begin_block
1721
+ name "B1"
1722
+ from_bci -1
1723
+ to_bci -1
1724
+ predecessors "B0"
1725
+ successors
1726
+ xhandlers
1727
+ flags
1728
+ probability 4607182418800017408
1729
+ begin_IR
1730
+ LIR
1731
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1732
+ nr 16 <|@ instruction rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <|@ <|@
1733
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1734
+ end_IR
1735
+ end_block
1736
+ begin_block
1737
+ name "B2"
1738
+ from_bci -1
1739
+ to_bci -1
1740
+ predecessors "B0"
1741
+ successors
1742
+ xhandlers
1743
+ flags
1744
+ probability 2355382605114769408
1745
+ begin_IR
1746
+ LIR
1747
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1748
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1749
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1750
+ nr 28 <|@ st <@st|@reference-map: [rsi:0]
1751
+ live-base-pointers: []
1752
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1753
+ locals: rsi|QWORD[.] rdx|DWORD
1754
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1755
+ end_IR
1756
+ end_block
1757
+ end_cfg
1758
+ begin_bytecodes
1759
+ 0: aload_0
1760
+ 1: iload_1
1761
+ 2: iaload
1762
+ 3: ireturn
1763
+ <|@
1764
+ end_bytecodes
1765
+ begin_cfg
1766
+ name "After EdgeMoveOptimizer"
1767
+ begin_block
1768
+ name "B0"
1769
+ from_bci -1
1770
+ to_bci -1
1771
+ predecessors
1772
+ successors "B1" "B2"
1773
+ xhandlers
1774
+ flags
1775
+ probability 4607182418800017408
1776
+ begin_IR
1777
+ LIR
1778
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1779
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1780
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1781
+ nr 10 <|@ st <@st|@reference-map: [rsi:0]
1782
+ live-base-pointers: []
1783
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1784
+ locals: rsi|QWORD[.] rdx|DWORD
1785
+ >@ <|@ instruction CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1786
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1787
+ end_IR
1788
+ end_block
1789
+ begin_block
1790
+ name "B1"
1791
+ from_bci -1
1792
+ to_bci -1
1793
+ predecessors "B0"
1794
+ successors
1795
+ xhandlers
1796
+ flags
1797
+ probability 4607182418800017408
1798
+ begin_IR
1799
+ LIR
1800
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1801
+ nr 16 <|@ instruction rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <|@ <|@
1802
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1803
+ end_IR
1804
+ end_block
1805
+ begin_block
1806
+ name "B2"
1807
+ from_bci -1
1808
+ to_bci -1
1809
+ predecessors "B0"
1810
+ successors
1811
+ xhandlers
1812
+ flags
1813
+ probability 2355382605114769408
1814
+ begin_IR
1815
+ LIR
1816
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1817
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1818
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1819
+ nr 28 <|@ st <@st|@reference-map: [rsi:0]
1820
+ live-base-pointers: []
1821
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1822
+ locals: rsi|QWORD[.] rdx|DWORD
1823
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1824
+ end_IR
1825
+ end_block
1826
+ end_cfg
1827
+ begin_bytecodes
1828
+ 0: aload_0
1829
+ 1: iload_1
1830
+ 2: iaload
1831
+ 3: ireturn
1832
+ <|@
1833
+ end_bytecodes
1834
+ begin_cfg
1835
+ name "After ControlFlowOptimizer"
1836
+ begin_block
1837
+ name "B0"
1838
+ from_bci -1
1839
+ to_bci -1
1840
+ predecessors
1841
+ successors "B1" "B2"
1842
+ xhandlers
1843
+ flags
1844
+ probability 4607182418800017408
1845
+ begin_IR
1846
+ LIR
1847
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1848
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1849
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1850
+ nr 10 <|@ st <@st|@reference-map: [rsi:0]
1851
+ live-base-pointers: []
1852
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1853
+ locals: rsi|QWORD[.] rdx|DWORD
1854
+ >@ <|@ instruction CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1855
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1856
+ end_IR
1857
+ end_block
1858
+ begin_block
1859
+ name "B1"
1860
+ from_bci -1
1861
+ to_bci -1
1862
+ predecessors "B0"
1863
+ successors
1864
+ xhandlers
1865
+ flags
1866
+ probability 4607182418800017408
1867
+ begin_IR
1868
+ LIR
1869
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1870
+ nr 16 <|@ instruction rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <|@ <|@
1871
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1872
+ end_IR
1873
+ end_block
1874
+ begin_block
1875
+ name "B2"
1876
+ from_bci -1
1877
+ to_bci -1
1878
+ predecessors "B0"
1879
+ successors
1880
+ xhandlers
1881
+ flags
1882
+ probability 2355382605114769408
1883
+ begin_IR
1884
+ LIR
1885
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1886
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1887
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1888
+ nr 28 <|@ st <@st|@reference-map: [rsi:0]
1889
+ live-base-pointers: []
1890
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1891
+ locals: rsi|QWORD[.] rdx|DWORD
1892
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1893
+ end_IR
1894
+ end_block
1895
+ end_cfg
1896
+ begin_bytecodes
1897
+ 0: aload_0
1898
+ 1: iload_1
1899
+ 2: iaload
1900
+ 3: ireturn
1901
+ <|@
1902
+ end_bytecodes
1903
+ begin_cfg
1904
+ name "After RedundantMoveElimination"
1905
+ begin_block
1906
+ name "B0"
1907
+ from_bci -1
1908
+ to_bci -1
1909
+ predecessors
1910
+ successors "B1" "B2"
1911
+ xhandlers
1912
+ flags
1913
+ probability 4607182418800017408
1914
+ begin_IR
1915
+ LIR
1916
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1917
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1918
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1919
+ nr 10 <|@ st <@st|@reference-map: [rsi:0]
1920
+ live-base-pointers: []
1921
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1922
+ locals: rsi|QWORD[.] rdx|DWORD
1923
+ >@ <|@ instruction CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1924
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1925
+ end_IR
1926
+ end_block
1927
+ begin_block
1928
+ name "B1"
1929
+ from_bci -1
1930
+ to_bci -1
1931
+ predecessors "B0"
1932
+ successors
1933
+ xhandlers
1934
+ flags
1935
+ probability 4607182418800017408
1936
+ begin_IR
1937
+ LIR
1938
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1939
+ nr 16 <|@ instruction rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <|@ <|@
1940
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
1941
+ end_IR
1942
+ end_block
1943
+ begin_block
1944
+ name "B2"
1945
+ from_bci -1
1946
+ to_bci -1
1947
+ predecessors "B0"
1948
+ successors
1949
+ xhandlers
1950
+ flags
1951
+ probability 2355382605114769408
1952
+ begin_IR
1953
+ LIR
1954
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1955
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
1956
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1957
+ nr 28 <|@ st <@st|@reference-map: [rsi:0]
1958
+ live-base-pointers: []
1959
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1960
+ locals: rsi|QWORD[.] rdx|DWORD
1961
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1962
+ end_IR
1963
+ end_block
1964
+ end_cfg
1965
+ begin_bytecodes
1966
+ 0: aload_0
1967
+ 1: iload_1
1968
+ 2: iaload
1969
+ 3: ireturn
1970
+ <|@
1971
+ end_bytecodes
1972
+ begin_cfg
1973
+ name "After NullCheckOptimizer"
1974
+ begin_block
1975
+ name "B0"
1976
+ from_bci -1
1977
+ to_bci -1
1978
+ predecessors
1979
+ successors "B1" "B2"
1980
+ xhandlers
1981
+ flags
1982
+ probability 4607182418800017408
1983
+ begin_IR
1984
+ LIR
1985
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1986
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1987
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
1988
+ nr 10 <|@ st <@st|@reference-map: [rsi:0]
1989
+ live-base-pointers: []
1990
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
1991
+ locals: rsi|QWORD[.] rdx|DWORD
1992
+ >@ <|@ instruction CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
1993
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
1994
+ end_IR
1995
+ end_block
1996
+ begin_block
1997
+ name "B1"
1998
+ from_bci -1
1999
+ to_bci -1
2000
+ predecessors "B0"
2001
+ successors
2002
+ xhandlers
2003
+ flags
2004
+ probability 4607182418800017408
2005
+ begin_IR
2006
+ LIR
2007
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
2008
+ nr 16 <|@ instruction rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <|@ <|@
2009
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
2010
+ end_IR
2011
+ end_block
2012
+ begin_block
2013
+ name "B2"
2014
+ from_bci -1
2015
+ to_bci -1
2016
+ predecessors "B0"
2017
+ successors
2018
+ xhandlers
2019
+ flags
2020
+ probability 2355382605114769408
2021
+ begin_IR
2022
+ LIR
2023
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
2024
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
2025
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
2026
+ nr 28 <|@ st <@st|@reference-map: [rsi:0]
2027
+ live-base-pointers: []
2028
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
2029
+ locals: rsi|QWORD[.] rdx|DWORD
2030
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
2031
+ end_IR
2032
+ end_block
2033
+ end_cfg
2034
+ begin_bytecodes
2035
+ 0: aload_0
2036
+ 1: iload_1
2037
+ 2: iaload
2038
+ 3: ireturn
2039
+ <|@
2040
+ end_bytecodes
2041
+ begin_cfg
2042
+ name "After StackMoveOptimization"
2043
+ begin_block
2044
+ name "B0"
2045
+ from_bci -1
2046
+ to_bci -1
2047
+ predecessors
2048
+ successors "B1" "B2"
2049
+ xhandlers
2050
+ flags
2051
+ probability 4607182418800017408
2052
+ begin_IR
2053
+ LIR
2054
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
2055
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
2056
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
2057
+ nr 10 <|@ st <@st|@reference-map: [rsi:0]
2058
+ live-base-pointers: []
2059
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
2060
+ locals: rsi|QWORD[.] rdx|DWORD
2061
+ >@ <|@ instruction CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
2062
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
2063
+ end_IR
2064
+ end_block
2065
+ begin_block
2066
+ name "B1"
2067
+ from_bci -1
2068
+ to_bci -1
2069
+ predecessors "B0"
2070
+ successors
2071
+ xhandlers
2072
+ flags
2073
+ probability 4607182418800017408
2074
+ begin_IR
2075
+ LIR
2076
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
2077
+ nr 16 <|@ instruction rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <|@ <|@
2078
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
2079
+ end_IR
2080
+ end_block
2081
+ begin_block
2082
+ name "B2"
2083
+ from_bci -1
2084
+ to_bci -1
2085
+ predecessors "B0"
2086
+ successors
2087
+ xhandlers
2088
+ flags
2089
+ probability 2355382605114769408
2090
+ begin_IR
2091
+ LIR
2092
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
2093
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
2094
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
2095
+ nr 28 <|@ st <@st|@reference-map: [rsi:0]
2096
+ live-base-pointers: []
2097
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
2098
+ locals: rsi|QWORD[.] rdx|DWORD
2099
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
2100
+ end_IR
2101
+ end_block
2102
+ end_cfg
2103
+ begin_bytecodes
2104
+ 0: aload_0
2105
+ 1: iload_1
2106
+ 2: iaload
2107
+ 3: ireturn
2108
+ <|@
2109
+ end_bytecodes
2110
+ begin_cfg
2111
+ name "After PostAllocationOptimizationStage"
2112
+ begin_block
2113
+ name "B0"
2114
+ from_bci -1
2115
+ to_bci -1
2116
+ predecessors
2117
+ successors "B1" "B2"
2118
+ xhandlers
2119
+ flags
2120
+ probability 4607182418800017408
2121
+ begin_IR
2122
+ LIR
2123
+ nr 0 <|@ instruction [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
2124
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
2125
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <|@ <|@
2126
+ nr 10 <|@ st <@st|@reference-map: [rsi:0]
2127
+ live-base-pointers: []
2128
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
2129
+ locals: rsi|QWORD[.] rdx|DWORD
2130
+ >@ <|@ instruction CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <|@ <|@
2131
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <|@ <|@
2132
+ end_IR
2133
+ end_block
2134
+ begin_block
2135
+ name "B1"
2136
+ from_bci -1
2137
+ to_bci -1
2138
+ predecessors "B0"
2139
+ successors
2140
+ xhandlers
2141
+ flags
2142
+ probability 4607182418800017408
2143
+ begin_IR
2144
+ LIR
2145
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
2146
+ nr 16 <|@ instruction rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <|@ <|@
2147
+ nr 20 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <|@ <|@
2148
+ end_IR
2149
+ end_block
2150
+ begin_block
2151
+ name "B2"
2152
+ from_bci -1
2153
+ to_bci -1
2154
+ predecessors "B0"
2155
+ successors
2156
+ xhandlers
2157
+ flags
2158
+ probability 2355382605114769408
2159
+ begin_IR
2160
+ LIR
2161
+ nr 22 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
2162
+ nr 24 <|@ instruction MOV [r15|QWORD + 644] y: -3355 size: DWORD <|@ <|@
2163
+ nr 26 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
2164
+ nr 28 <|@ st <@st|@reference-map: [rsi:0]
2165
+ live-base-pointers: []
2166
+ JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0]
2167
+ locals: rsi|QWORD[.] rdx|DWORD
2168
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
2169
+ end_IR
2170
+ end_block
2171
+ end_cfg
2172
+ begin_bytecodes
2173
+ 0: aload_0
2174
+ 1: iload_1
2175
+ 2: iaload
2176
+ 3: ireturn
2177
+ <|@
2178
+ end_bytecodes
2179
+ begin_cfg
2180
+ name "After code generation"
2181
+ end_cfg
2182
+ begin_nmethod
2183
+ <<<HexCodeFile
2184
+ Platform AMD64 64 <||@
2185
+ HexCode 0 89842400c0feff4883ec1848896c24103b560c0f83170000008b449610488b6c24104883c418850500000000c5f877c341c78784020000e5f2ffff49c7879002000000000000e80000000090e80000000090e80000000090 <||@
2186
+ Comment 0 [stack overflow check] <||@
2187
+ Comment 0 3 <||@
2188
+ Comment 0 1 <||@
2189
+ Comment 11 block B0 null <||@
2190
+ Comment 11 0 [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <||@
2191
+ Comment 11 2 stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <||@
2192
+ Comment 16 4 [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <||@
2193
+ Comment 16 10 CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <||@
2194
+ Comment 16 [rsi:0]at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0, duringCall: false, rethrow: false]
2195
+ |0 |1
2196
+ locals: |rsi|QWORD[.] |rdx|DWORD <||@
2197
+ Comment 16 {infopoint: IMPLICIT_EXCEPTION} <||@
2198
+ Comment 19 12 BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <||@
2199
+ Comment 25 block B1 null <||@
2200
+ Comment 25 14 [] = LABEL numbPhis: 0 align: false label: ? <||@
2201
+ Comment 25 16 rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <||@
2202
+ Comment 29 20 RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <||@
2203
+ Comment 38 12 <||@
2204
+ Comment 48 block B2 null <||@
2205
+ Comment 48 22 [] = LABEL numbPhis: 0 align: false label: ? <||@
2206
+ Comment 48 24 MOV [r15|QWORD + 644] y: -3355 size: DWORD <||@
2207
+ Comment 59 26 MOV [r15|QWORD + 656] y: 0 size: QWORD <||@
2208
+ Comment 70 28 DEOPT info [bci:0] <||@
2209
+ Comment 70 {Field[name=CompilerToVM::Data::SharedRuntime_deopt_blob_uncommon_trap, type=address, offset=0, address=0x1108bc130, value=4610474814]:0x112ce433e} <||@
2210
+ Comment 75 [rsi:0]at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0, duringCall: false, rethrow: false]
2211
+ |0 |1
2212
+ locals: |rsi|QWORD[.] |rdx|DWORD <||@
2213
+ Comment 76 {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} <||@
2214
+ Comment 76 4 <||@
2215
+ Comment 82 {Field[name=CompilerToVM::Data::SharedRuntime_deopt_blob_unpack, type=address, offset=0, address=0x1108bc128, value=4610474560]:0x112ce4240} <||@
2216
+ Comment 82 5 <||@
2217
+ HexCodeFile>>> <|@
2218
+ end_nmethod
2219
+ begin_compilation
2220
+ name " HotSpotCompilation-130[JavaExamples.exampleArrayRead(int[], int)]"
2221
+ method "HotSpotCompilation-130[JavaExamples.exampleArrayRead(int[], int)]"
2222
+ date 1583364091909
2223
+ end_compilation
2224
+ begin_cfg
2225
+ name "After code installation"
2226
+ end_cfg
2227
+ begin_nmethod
2228
+ <<<HexCodeFile
2229
+ Platform AMD64 64 <||@
2230
+ HexCode 112e359e0 89842400c0feff4883ec1848896c24103b560c0f83170000008b449610488b6c24104883c4188505fa5593fbc5f877c341c78784020000e5f2ffff49c7879002000000000000e813e9eaff90e8efe8feff90e809e8eaff90 <||@
2231
+ Comment 0 [stack overflow check] <||@
2232
+ Comment 0 3 <||@
2233
+ Comment 0 1 <||@
2234
+ Comment 11 block B0 null <||@
2235
+ Comment 11 0 [rsi|QWORD[.], rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <||@
2236
+ Comment 11 2 stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <||@
2237
+ Comment 16 4 [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@13bdcd760 slotKind: QWORD <||@
2238
+ Comment 16 10 CMP (x: rdx|DWORD, y: [rsi|QWORD[.] + 12]) size: DWORD state [bci:0] <||@
2239
+ Comment 16 [rsi:0]at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0, duringCall: false, rethrow: false]
2240
+ |0 |1
2241
+ locals: |rsi|QWORD[.] |rdx|DWORD <||@
2242
+ Comment 16 {infopoint: IMPLICIT_EXCEPTION} <||@
2243
+ Comment 19 12 BRANCH trueDestinationProbability: 1.0 condition: |<| trueDestination: B0 -> B1 falseDestination: B0 -> B2 <||@
2244
+ Comment 25 block B1 null <||@
2245
+ Comment 25 14 [] = LABEL numbPhis: 0 align: false label: ? <||@
2246
+ Comment 25 16 rax|DWORD = MOV [rsi|QWORD[.] + rdx|DWORD * 4 + 16] size: DWORD <||@
2247
+ Comment 29 20 RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@147e07170 <||@
2248
+ Comment 38 12 <||@
2249
+ Comment 48 block B2 null <||@
2250
+ Comment 48 22 [] = LABEL numbPhis: 0 align: false label: ? <||@
2251
+ Comment 48 24 MOV [r15|QWORD + 644] y: -3355 size: DWORD <||@
2252
+ Comment 59 26 MOV [r15|QWORD + 656] y: 0 size: QWORD <||@
2253
+ Comment 70 28 DEOPT info [bci:0] <||@
2254
+ Comment 70 {Field[name=CompilerToVM::Data::SharedRuntime_deopt_blob_uncommon_trap, type=address, offset=0, address=0x1108bc130, value=4610474814]:0x112ce433e} <||@
2255
+ Comment 75 [rsi:0]at JavaExamples.exampleArrayRead(JavaExamples.java:313) [bci: 0, duringCall: false, rethrow: false]
2256
+ |0 |1
2257
+ locals: |rsi|QWORD[.] |rdx|DWORD <||@
2258
+ Comment 76 {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} <||@
2259
+ Comment 76 4 <||@
2260
+ Comment 82 {Field[name=CompilerToVM::Data::SharedRuntime_deopt_blob_unpack, type=address, offset=0, address=0x1108bc128, value=4610474560]:0x112ce4240} <||@
2261
+ Comment 82 5 <||@
2262
+ HexCodeFile>>> <|@
2263
+ end_nmethod