seafoam 0.2

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