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,1888 @@
1
+ begin_compilation
2
+ name " HotSpotCompilation-346[JavaExamples.exampleExactArith(int, int)]"
3
+ method "HotSpotCompilation-346[JavaExamples.exampleExactArith(int, int)]"
4
+ date 1583364091426
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: i13
28
+ === Usages ===
29
+ === Predecessor ===
30
+ - >@ <|@
31
+ instruction <@StartNode|@org.graalvm.compiler.nodes.StartNode>@ stateAfter: - #next: i13 <|@ <|@
32
+ f <@~|@floating>@ <|@
33
+ tid i2 <|@
34
+ d <@d|@=== Debug Properties ===
35
+ index: 1
36
+ stamp: i32
37
+ uncheckedStamp: [null]
38
+ === Inputs ===
39
+ === Succesors ===
40
+ === Usages ===
41
+ ?3 i13
42
+ === Predecessor ===
43
+ - >@ <|@
44
+ instruction <@Parameter|@org.graalvm.compiler.nodes.ParameterNode>@ <|@ <|@
45
+ f <@~|@floating>@ <|@
46
+ tid i1 <|@
47
+ d <@d|@=== Debug Properties ===
48
+ index: 0
49
+ stamp: i32
50
+ uncheckedStamp: [null]
51
+ === Inputs ===
52
+ === Succesors ===
53
+ === Usages ===
54
+ ?3 i13
55
+ === Predecessor ===
56
+ - >@ <|@
57
+ instruction <@Parameter|@org.graalvm.compiler.nodes.ParameterNode>@ <|@ <|@
58
+ f <@*|@fixed>@ <|@
59
+ tid i13 <|@
60
+ d <@d|@=== Debug Properties ===
61
+ nodeSourcePosition: at java.lang.Math.addExact(int, int) [bci: -1]
62
+ at JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 2]
63
+ stamp: i32
64
+ === Inputs ===
65
+ x: i1
66
+ y: i2
67
+ === Succesors ===
68
+ next: v9
69
+ overflowSuccessor: v11
70
+ === Usages ===
71
+ v7
72
+ === Predecessor ===
73
+ v0 >@ <|@
74
+ instruction <@IntegerAddExactSplit|@org.graalvm.compiler.replacements.nodes.arithmetic.IntegerAddExactSplitNode>@ x: i1 y: i2 #next: v9 #overflowSuccessor: v11 <|@ <|@
75
+ end_IR
76
+ end_block
77
+ begin_block
78
+ name "B1"
79
+ from_bci -1
80
+ to_bci -1
81
+ predecessors "B0"
82
+ successors
83
+ xhandlers
84
+ flags
85
+ probability 4607182418800017408
86
+ begin_IR
87
+ HIR
88
+ f <@#|@fixed with next>@ <|@
89
+ tid v9 <|@
90
+ d <@d|@=== Debug Properties ===
91
+ nodeSourcePosition: at java.lang.Math.addExact(int, int) [bci: -1]
92
+ at JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 2]
93
+ stamp: void
94
+ withSpeculationFence: false
95
+ === Inputs ===
96
+ === Succesors ===
97
+ next: v7
98
+ === Usages ===
99
+ === Predecessor ===
100
+ i13 >@ <|@
101
+ instruction <@Begin|@org.graalvm.compiler.nodes.BeginNode>@ #next: v7 <|@ <|@
102
+ f <@*|@fixed>@ <|@
103
+ tid v7 <|@
104
+ d <@d|@=== Debug Properties ===
105
+ nodeSourcePosition: at JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 5]
106
+ stamp: void
107
+ === Inputs ===
108
+ result: i13
109
+ memoryMap: -
110
+ === Succesors ===
111
+ === Usages ===
112
+ === Predecessor ===
113
+ v9 >@ <|@
114
+ instruction <@Return|@org.graalvm.compiler.nodes.ReturnNode>@ result: i13 memoryMap: - <|@ <|@
115
+ end_IR
116
+ end_block
117
+ begin_block
118
+ name "B2"
119
+ from_bci -1
120
+ to_bci -1
121
+ predecessors "B0"
122
+ successors
123
+ xhandlers
124
+ flags
125
+ probability 2355382605114769408
126
+ begin_IR
127
+ HIR
128
+ f <@#|@fixed with next>@ <|@
129
+ tid v11 <|@
130
+ d <@d|@=== Debug Properties ===
131
+ nodeSourcePosition: at java.lang.Math.addExact(int, int) [bci: -1]
132
+ at JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 2]
133
+ stamp: void
134
+ withSpeculationFence: false
135
+ === Inputs ===
136
+ === Succesors ===
137
+ next: v10
138
+ === Usages ===
139
+ === Predecessor ===
140
+ i13 >@ <|@
141
+ instruction <@Begin|@org.graalvm.compiler.nodes.BeginNode>@ #next: v10 <|@ <|@
142
+ tid ?3 <|@
143
+ d <@d|@=== Debug Properties ===
144
+ bci: 0
145
+ code: ResolvedJavaMethodBytecode<JavaExamples.exampleExactArith(int, int)>
146
+ duringCall: false
147
+ localsSize: 2
148
+ locksSize: 0
149
+ rethrowException: false
150
+ sourceFile: JavaExamples.java
151
+ sourceLine: 90
152
+ stackSize: 0
153
+ === Inputs ===
154
+ outerFrameState: -
155
+ values: i1 i2
156
+ === Succesors ===
157
+ === Usages ===
158
+ v10
159
+ === Predecessor ===
160
+ - >@ <|@
161
+ instruction <@FrameState|@org.graalvm.compiler.nodes.FrameState>@ outerFrameState: - values: i1 i2 <|@ <|@
162
+ f <@*|@fixed>@ <|@
163
+ tid v10 <|@
164
+ d <@d|@=== Debug Properties ===
165
+ action: InvalidateRecompile
166
+ debugId: 8
167
+ nodeSourcePosition: at java.lang.Math.addExact(int, int) [bci: -1]
168
+ at JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 2]
169
+ reason: ArithmeticException
170
+ speculation: jdk.vm.ci.meta.SpeculationLog$NoSpeculationReason@137006448
171
+ stamp: void
172
+ === Inputs ===
173
+ stateBefore: ?3
174
+ === Succesors ===
175
+ === Usages ===
176
+ === Predecessor ===
177
+ v11 >@ <|@
178
+ instruction <@Deopt|@org.graalvm.compiler.nodes.DeoptimizeNode>@ stateBefore: ?3 <|@ <|@
179
+ end_IR
180
+ end_block
181
+ end_cfg
182
+ begin_cfg
183
+ name "After LIRGeneration"
184
+ begin_block
185
+ name "B0"
186
+ from_bci -1
187
+ to_bci -1
188
+ predecessors
189
+ successors "B1" "B2"
190
+ xhandlers
191
+ flags
192
+ probability 4607182418800017408
193
+ begin_IR
194
+ LIR
195
+ nr -1 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
196
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
197
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
198
+ nr -1 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
199
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
200
+ nr -1 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
201
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
202
+ end_IR
203
+ end_block
204
+ begin_block
205
+ name "B1"
206
+ from_bci -1
207
+ to_bci -1
208
+ predecessors "B0"
209
+ successors
210
+ xhandlers
211
+ flags
212
+ probability 4607182418800017408
213
+ begin_IR
214
+ LIR
215
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
216
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
217
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
218
+ end_IR
219
+ end_block
220
+ begin_block
221
+ name "B2"
222
+ from_bci -1
223
+ to_bci -1
224
+ predecessors "B0"
225
+ successors
226
+ xhandlers
227
+ flags
228
+ probability 2355382605114769408
229
+ begin_IR
230
+ LIR
231
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
232
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
233
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
234
+ nr -1 <|@ st <@st|@JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
235
+ locals: v0|DWORD v1|DWORD
236
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
237
+ end_IR
238
+ end_block
239
+ end_cfg
240
+ begin_bytecodes
241
+ 0: iload_0
242
+ 1: iload_1
243
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
244
+ 5: ireturn
245
+ <|@
246
+ end_bytecodes
247
+ begin_cfg
248
+ name "After LIR generation"
249
+ begin_block
250
+ name "B0"
251
+ from_bci -1
252
+ to_bci -1
253
+ predecessors
254
+ successors "B1" "B2"
255
+ xhandlers
256
+ flags
257
+ probability 4607182418800017408
258
+ begin_IR
259
+ HIR
260
+ f <@#|@fixed with next>@ <|@
261
+ tid v0 <|@
262
+ d <@d|@=== Debug Properties ===
263
+ stamp: void
264
+ withSpeculationFence: false
265
+ === Inputs ===
266
+ stateAfter: -
267
+ === Succesors ===
268
+ next: i13
269
+ === Usages ===
270
+ === Predecessor ===
271
+ - >@ <|@
272
+ instruction <@StartNode|@org.graalvm.compiler.nodes.StartNode>@ stateAfter: - #next: i13 <|@ <|@
273
+ f <@~|@floating>@ <|@
274
+ tid i2 <|@
275
+ result v1|DWORD <|@
276
+ d <@d|@=== Debug Properties ===
277
+ index: 1
278
+ stamp: i32
279
+ uncheckedStamp: [null]
280
+ === Inputs ===
281
+ === Succesors ===
282
+ === Usages ===
283
+ ?3 i13
284
+ === Predecessor ===
285
+ - >@ <|@
286
+ instruction <@Parameter|@org.graalvm.compiler.nodes.ParameterNode>@ <|@ <|@
287
+ f <@~|@floating>@ <|@
288
+ tid i1 <|@
289
+ result v0|DWORD <|@
290
+ d <@d|@=== Debug Properties ===
291
+ index: 0
292
+ stamp: i32
293
+ uncheckedStamp: [null]
294
+ === Inputs ===
295
+ === Succesors ===
296
+ === Usages ===
297
+ ?3 i13
298
+ === Predecessor ===
299
+ - >@ <|@
300
+ instruction <@Parameter|@org.graalvm.compiler.nodes.ParameterNode>@ <|@ <|@
301
+ f <@*|@fixed>@ <|@
302
+ tid i13 <|@
303
+ result v2|DWORD <|@
304
+ d <@d|@=== Debug Properties ===
305
+ nodeSourcePosition: at java.lang.Math.addExact(int, int) [bci: -1]
306
+ at JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 2]
307
+ stamp: i32
308
+ === Inputs ===
309
+ x: i1
310
+ y: i2
311
+ === Succesors ===
312
+ next: v9
313
+ overflowSuccessor: v11
314
+ === Usages ===
315
+ v7
316
+ === Predecessor ===
317
+ v0 >@ <|@
318
+ instruction <@IntegerAddExactSplit|@org.graalvm.compiler.replacements.nodes.arithmetic.IntegerAddExactSplitNode>@ x: i1 y: i2 #next: v9 #overflowSuccessor: v11 <|@ <|@
319
+ end_IR
320
+ begin_IR
321
+ LIR
322
+ nr -1 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
323
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
324
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
325
+ nr -1 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
326
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
327
+ nr -1 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
328
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
329
+ end_IR
330
+ end_block
331
+ begin_block
332
+ name "B1"
333
+ from_bci -1
334
+ to_bci -1
335
+ predecessors "B0"
336
+ successors
337
+ xhandlers
338
+ flags
339
+ probability 4607182418800017408
340
+ begin_IR
341
+ HIR
342
+ f <@#|@fixed with next>@ <|@
343
+ tid v9 <|@
344
+ d <@d|@=== Debug Properties ===
345
+ nodeSourcePosition: at java.lang.Math.addExact(int, int) [bci: -1]
346
+ at JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 2]
347
+ stamp: void
348
+ withSpeculationFence: false
349
+ === Inputs ===
350
+ === Succesors ===
351
+ next: v7
352
+ === Usages ===
353
+ === Predecessor ===
354
+ i13 >@ <|@
355
+ instruction <@Begin|@org.graalvm.compiler.nodes.BeginNode>@ #next: v7 <|@ <|@
356
+ f <@*|@fixed>@ <|@
357
+ tid v7 <|@
358
+ d <@d|@=== Debug Properties ===
359
+ nodeSourcePosition: at JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 5]
360
+ stamp: void
361
+ === Inputs ===
362
+ result: i13
363
+ memoryMap: -
364
+ === Succesors ===
365
+ === Usages ===
366
+ === Predecessor ===
367
+ v9 >@ <|@
368
+ instruction <@Return|@org.graalvm.compiler.nodes.ReturnNode>@ result: i13 memoryMap: - <|@ <|@
369
+ end_IR
370
+ begin_IR
371
+ LIR
372
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
373
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
374
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
375
+ end_IR
376
+ end_block
377
+ begin_block
378
+ name "B2"
379
+ from_bci -1
380
+ to_bci -1
381
+ predecessors "B0"
382
+ successors
383
+ xhandlers
384
+ flags
385
+ probability 2355382605114769408
386
+ begin_IR
387
+ HIR
388
+ f <@#|@fixed with next>@ <|@
389
+ tid v11 <|@
390
+ d <@d|@=== Debug Properties ===
391
+ nodeSourcePosition: at java.lang.Math.addExact(int, int) [bci: -1]
392
+ at JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 2]
393
+ stamp: void
394
+ withSpeculationFence: false
395
+ === Inputs ===
396
+ === Succesors ===
397
+ next: v10
398
+ === Usages ===
399
+ === Predecessor ===
400
+ i13 >@ <|@
401
+ instruction <@Begin|@org.graalvm.compiler.nodes.BeginNode>@ #next: v10 <|@ <|@
402
+ tid ?3 <|@
403
+ d <@d|@=== Debug Properties ===
404
+ bci: 0
405
+ code: ResolvedJavaMethodBytecode<JavaExamples.exampleExactArith(int, int)>
406
+ duringCall: false
407
+ localsSize: 2
408
+ locksSize: 0
409
+ rethrowException: false
410
+ sourceFile: JavaExamples.java
411
+ sourceLine: 90
412
+ stackSize: 0
413
+ === Inputs ===
414
+ outerFrameState: -
415
+ values: i1 i2
416
+ === Succesors ===
417
+ === Usages ===
418
+ v10
419
+ === Predecessor ===
420
+ - >@ <|@
421
+ instruction <@FrameState|@org.graalvm.compiler.nodes.FrameState>@ outerFrameState: - values: i1 i2 <|@ <|@
422
+ f <@*|@fixed>@ <|@
423
+ tid v10 <|@
424
+ d <@d|@=== Debug Properties ===
425
+ action: InvalidateRecompile
426
+ debugId: 8
427
+ nodeSourcePosition: at java.lang.Math.addExact(int, int) [bci: -1]
428
+ at JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 2]
429
+ reason: ArithmeticException
430
+ speculation: jdk.vm.ci.meta.SpeculationLog$NoSpeculationReason@137006448
431
+ stamp: void
432
+ === Inputs ===
433
+ stateBefore: ?3
434
+ === Succesors ===
435
+ === Usages ===
436
+ === Predecessor ===
437
+ v11 >@ <|@
438
+ instruction <@Deopt|@org.graalvm.compiler.nodes.DeoptimizeNode>@ stateBefore: ?3 <|@ <|@
439
+ end_IR
440
+ begin_IR
441
+ LIR
442
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
443
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
444
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
445
+ nr -1 <|@ st <@st|@JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
446
+ locals: v0|DWORD v1|DWORD
447
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
448
+ end_IR
449
+ end_block
450
+ end_cfg
451
+ begin_cfg
452
+ name "After ConstantLoadOptimization"
453
+ begin_block
454
+ name "B0"
455
+ from_bci -1
456
+ to_bci -1
457
+ predecessors
458
+ successors "B1" "B2"
459
+ xhandlers
460
+ flags
461
+ probability 4607182418800017408
462
+ begin_IR
463
+ LIR
464
+ nr -1 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
465
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
466
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
467
+ nr -1 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
468
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
469
+ nr -1 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
470
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
471
+ end_IR
472
+ end_block
473
+ begin_block
474
+ name "B1"
475
+ from_bci -1
476
+ to_bci -1
477
+ predecessors "B0"
478
+ successors
479
+ xhandlers
480
+ flags
481
+ probability 4607182418800017408
482
+ begin_IR
483
+ LIR
484
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
485
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
486
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
487
+ end_IR
488
+ end_block
489
+ begin_block
490
+ name "B2"
491
+ from_bci -1
492
+ to_bci -1
493
+ predecessors "B0"
494
+ successors
495
+ xhandlers
496
+ flags
497
+ probability 2355382605114769408
498
+ begin_IR
499
+ LIR
500
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
501
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
502
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
503
+ nr -1 <|@ st <@st|@JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
504
+ locals: v0|DWORD v1|DWORD
505
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
506
+ end_IR
507
+ end_block
508
+ end_cfg
509
+ begin_bytecodes
510
+ 0: iload_0
511
+ 1: iload_1
512
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
513
+ 5: ireturn
514
+ <|@
515
+ end_bytecodes
516
+ begin_cfg
517
+ name "After SaveCalleeSaveRegisters"
518
+ begin_block
519
+ name "B0"
520
+ from_bci -1
521
+ to_bci -1
522
+ predecessors
523
+ successors "B1" "B2"
524
+ xhandlers
525
+ flags
526
+ probability 4607182418800017408
527
+ begin_IR
528
+ LIR
529
+ nr -1 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
530
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
531
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
532
+ nr -1 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
533
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
534
+ nr -1 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
535
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
536
+ end_IR
537
+ end_block
538
+ begin_block
539
+ name "B1"
540
+ from_bci -1
541
+ to_bci -1
542
+ predecessors "B0"
543
+ successors
544
+ xhandlers
545
+ flags
546
+ probability 4607182418800017408
547
+ begin_IR
548
+ LIR
549
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
550
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
551
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
552
+ end_IR
553
+ end_block
554
+ begin_block
555
+ name "B2"
556
+ from_bci -1
557
+ to_bci -1
558
+ predecessors "B0"
559
+ successors
560
+ xhandlers
561
+ flags
562
+ probability 2355382605114769408
563
+ begin_IR
564
+ LIR
565
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
566
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
567
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
568
+ nr -1 <|@ st <@st|@JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
569
+ locals: v0|DWORD v1|DWORD
570
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
571
+ end_IR
572
+ end_block
573
+ end_cfg
574
+ begin_bytecodes
575
+ 0: iload_0
576
+ 1: iload_1
577
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
578
+ 5: ireturn
579
+ <|@
580
+ end_bytecodes
581
+ begin_cfg
582
+ name "After PreAllocationOptimizationStage"
583
+ begin_block
584
+ name "B0"
585
+ from_bci -1
586
+ to_bci -1
587
+ predecessors
588
+ successors "B1" "B2"
589
+ xhandlers
590
+ flags
591
+ probability 4607182418800017408
592
+ begin_IR
593
+ LIR
594
+ nr -1 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
595
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
596
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
597
+ nr -1 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
598
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
599
+ nr -1 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
600
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
601
+ end_IR
602
+ end_block
603
+ begin_block
604
+ name "B1"
605
+ from_bci -1
606
+ to_bci -1
607
+ predecessors "B0"
608
+ successors
609
+ xhandlers
610
+ flags
611
+ probability 4607182418800017408
612
+ begin_IR
613
+ LIR
614
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
615
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
616
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
617
+ end_IR
618
+ end_block
619
+ begin_block
620
+ name "B2"
621
+ from_bci -1
622
+ to_bci -1
623
+ predecessors "B0"
624
+ successors
625
+ xhandlers
626
+ flags
627
+ probability 2355382605114769408
628
+ begin_IR
629
+ LIR
630
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
631
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
632
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
633
+ nr -1 <|@ st <@st|@JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
634
+ locals: v0|DWORD v1|DWORD
635
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
636
+ end_IR
637
+ end_block
638
+ end_cfg
639
+ begin_bytecodes
640
+ 0: iload_0
641
+ 1: iload_1
642
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
643
+ 5: ireturn
644
+ <|@
645
+ end_bytecodes
646
+ begin_cfg
647
+ name "After MarkBasePointers"
648
+ begin_block
649
+ name "B0"
650
+ from_bci -1
651
+ to_bci -1
652
+ predecessors
653
+ successors "B1" "B2"
654
+ xhandlers
655
+ flags
656
+ probability 4607182418800017408
657
+ begin_IR
658
+ LIR
659
+ nr -1 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
660
+ nr -1 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
661
+ nr -1 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
662
+ nr -1 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
663
+ nr -1 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
664
+ nr -1 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
665
+ nr -1 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
666
+ end_IR
667
+ end_block
668
+ begin_block
669
+ name "B1"
670
+ from_bci -1
671
+ to_bci -1
672
+ predecessors "B0"
673
+ successors
674
+ xhandlers
675
+ flags
676
+ probability 4607182418800017408
677
+ begin_IR
678
+ LIR
679
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
680
+ nr -1 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
681
+ nr -1 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
682
+ end_IR
683
+ end_block
684
+ begin_block
685
+ name "B2"
686
+ from_bci -1
687
+ to_bci -1
688
+ predecessors "B0"
689
+ successors
690
+ xhandlers
691
+ flags
692
+ probability 2355382605114769408
693
+ begin_IR
694
+ LIR
695
+ nr -1 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
696
+ nr -1 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
697
+ nr -1 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
698
+ nr -1 <|@ st <@st|@live-base-pointers: []
699
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
700
+ locals: v0|DWORD v1|DWORD
701
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
702
+ end_IR
703
+ end_block
704
+ end_cfg
705
+ begin_bytecodes
706
+ 0: iload_0
707
+ 1: iload_1
708
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
709
+ 5: ireturn
710
+ <|@
711
+ end_bytecodes
712
+ begin_cfg
713
+ name "Before register allocation"
714
+ begin_block
715
+ name "B0"
716
+ from_bci -1
717
+ to_bci -1
718
+ predecessors
719
+ successors "B1" "B2"
720
+ xhandlers
721
+ flags
722
+ probability 4607182418800017408
723
+ begin_IR
724
+ LIR
725
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
726
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
727
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
728
+ nr 6 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
729
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
730
+ nr 10 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
731
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
732
+ end_IR
733
+ end_block
734
+ begin_block
735
+ name "B1"
736
+ from_bci -1
737
+ to_bci -1
738
+ predecessors "B0"
739
+ successors
740
+ xhandlers
741
+ flags
742
+ probability 4607182418800017408
743
+ begin_IR
744
+ LIR
745
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
746
+ nr 16 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
747
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
748
+ end_IR
749
+ end_block
750
+ begin_block
751
+ name "B2"
752
+ from_bci -1
753
+ to_bci -1
754
+ predecessors "B0"
755
+ successors
756
+ xhandlers
757
+ flags
758
+ probability 2355382605114769408
759
+ begin_IR
760
+ LIR
761
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
762
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
763
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
764
+ nr 26 <|@ st <@st|@live-base-pointers: []
765
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
766
+ locals: v0|DWORD v1|DWORD
767
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
768
+ end_IR
769
+ end_block
770
+ end_cfg
771
+ begin_bytecodes
772
+ 0: iload_0
773
+ 1: iload_1
774
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
775
+ 5: ireturn
776
+ <|@
777
+ end_bytecodes
778
+ begin_cfg
779
+ name "After SSALinearScanLifetimeAnalysis"
780
+ begin_block
781
+ name "B0"
782
+ from_bci -1
783
+ to_bci -1
784
+ predecessors
785
+ successors "B1" "B2"
786
+ xhandlers
787
+ flags
788
+ probability 4607182418800017408
789
+ begin_IR
790
+ LIR
791
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
792
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
793
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
794
+ nr 6 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
795
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
796
+ nr 10 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
797
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
798
+ end_IR
799
+ end_block
800
+ begin_block
801
+ name "B1"
802
+ from_bci -1
803
+ to_bci -1
804
+ predecessors "B0"
805
+ successors
806
+ xhandlers
807
+ flags
808
+ probability 4607182418800017408
809
+ begin_IR
810
+ LIR
811
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
812
+ nr 16 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
813
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
814
+ end_IR
815
+ end_block
816
+ begin_block
817
+ name "B2"
818
+ from_bci -1
819
+ to_bci -1
820
+ predecessors "B0"
821
+ successors
822
+ xhandlers
823
+ flags
824
+ probability 2355382605114769408
825
+ begin_IR
826
+ LIR
827
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
828
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
829
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
830
+ nr 26 <|@ st <@st|@live-base-pointers: []
831
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
832
+ locals: v0|DWORD v1|DWORD
833
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
834
+ end_IR
835
+ end_block
836
+ end_cfg
837
+ begin_bytecodes
838
+ 0: iload_0
839
+ 1: iload_1
840
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
841
+ 5: ireturn
842
+ <|@
843
+ end_bytecodes
844
+ begin_intervals
845
+ name "Before register allocation"
846
+ rax|d fixed "[rax|d]" rax|d v2|d [0, 1[[16, 18[ "NoSpillStore"
847
+ rdx|d fixed "[rdx|d]" rdx|d -1 [0, 8[ "NoSpillStore"
848
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
849
+ rsi|d fixed "[rsi|d]" rsi|d -1 [0, 6[ "NoSpillStore"
850
+ v0|d DWORD "[v0|d]" v0|d rsi|d [6, 14[[20, 27[6 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
851
+ v1|d DWORD "[v1|d]" v1|d rdx|d [8, 14[[20, 27[8 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
852
+ v2|d DWORD "[v2|d]" v2|d v0|d [10, 16[10 MustHaveRegister 16 ShouldHaveRegister "NoSpillStore"
853
+ end_intervals
854
+ begin_intervals
855
+ name "After register allocation"
856
+ rax|d fixed "[rax|d]" rax|d v2|d [0, 1[[16, 18[ "NoSpillStore"
857
+ rdx|d fixed "[rdx|d]" rdx|d -1 [0, 8[ "NoSpillStore"
858
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
859
+ rsi|d fixed "[rsi|d]" rsi|d -1 [0, 6[ "NoSpillStore"
860
+ v0|d DWORD "[rsi|d]" v0|d rsi|d [6, 14[[20, 27[6 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
861
+ v1|d DWORD "[rdx|d]" v1|d rdx|d [8, 14[[20, 27[8 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
862
+ v2|d DWORD "[rax|d]" v2|d v0|d [10, 16[10 MustHaveRegister 16 ShouldHaveRegister "NoSpillStore"
863
+ end_intervals
864
+ begin_cfg
865
+ name "After LinearScanRegisterAllocation"
866
+ begin_block
867
+ name "B0"
868
+ from_bci -1
869
+ to_bci -1
870
+ predecessors
871
+ successors "B1" "B2"
872
+ xhandlers
873
+ flags
874
+ probability 4607182418800017408
875
+ begin_IR
876
+ LIR
877
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
878
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
879
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
880
+ nr 6 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
881
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
882
+ nr 10 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
883
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
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 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
898
+ nr 16 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
899
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
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 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
914
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
915
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
916
+ nr 26 <|@ st <@st|@live-base-pointers: []
917
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
918
+ locals: v0|DWORD v1|DWORD
919
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
920
+ end_IR
921
+ end_block
922
+ end_cfg
923
+ begin_bytecodes
924
+ 0: iload_0
925
+ 1: iload_1
926
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
927
+ 5: ireturn
928
+ <|@
929
+ end_bytecodes
930
+ begin_intervals
931
+ name "After optimize spill position"
932
+ rax|d fixed "[rax|d]" rax|d v2|d [0, 1[[16, 18[ "NoSpillStore"
933
+ rdx|d fixed "[rdx|d]" rdx|d -1 [0, 8[ "NoSpillStore"
934
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
935
+ rsi|d fixed "[rsi|d]" rsi|d -1 [0, 6[ "NoSpillStore"
936
+ v0|d DWORD "[rsi|d]" v0|d rsi|d [6, 14[[20, 27[6 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
937
+ v1|d DWORD "[rdx|d]" v1|d rdx|d [8, 14[[20, 27[8 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
938
+ v2|d DWORD "[rax|d]" v2|d v0|d [10, 16[10 MustHaveRegister 16 ShouldHaveRegister "NoSpillStore"
939
+ end_intervals
940
+ begin_cfg
941
+ name "After LinearScanOptimizeSpillPosition"
942
+ begin_block
943
+ name "B0"
944
+ from_bci -1
945
+ to_bci -1
946
+ predecessors
947
+ successors "B1" "B2"
948
+ xhandlers
949
+ flags
950
+ probability 4607182418800017408
951
+ begin_IR
952
+ LIR
953
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
954
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
955
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
956
+ nr 6 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
957
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
958
+ nr 10 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
959
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
960
+ end_IR
961
+ end_block
962
+ begin_block
963
+ name "B1"
964
+ from_bci -1
965
+ to_bci -1
966
+ predecessors "B0"
967
+ successors
968
+ xhandlers
969
+ flags
970
+ probability 4607182418800017408
971
+ begin_IR
972
+ LIR
973
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
974
+ nr 16 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
975
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
976
+ end_IR
977
+ end_block
978
+ begin_block
979
+ name "B2"
980
+ from_bci -1
981
+ to_bci -1
982
+ predecessors "B0"
983
+ successors
984
+ xhandlers
985
+ flags
986
+ probability 2355382605114769408
987
+ begin_IR
988
+ LIR
989
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
990
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
991
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
992
+ nr 26 <|@ st <@st|@live-base-pointers: []
993
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
994
+ locals: v0|DWORD v1|DWORD
995
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
996
+ end_IR
997
+ end_block
998
+ end_cfg
999
+ begin_bytecodes
1000
+ 0: iload_0
1001
+ 1: iload_1
1002
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1003
+ 5: ireturn
1004
+ <|@
1005
+ end_bytecodes
1006
+ begin_intervals
1007
+ name "After resolve data flow"
1008
+ rax|d fixed "[rax|d]" rax|d v2|d [0, 1[[16, 18[ "NoSpillStore"
1009
+ rdx|d fixed "[rdx|d]" rdx|d -1 [0, 8[ "NoSpillStore"
1010
+ rbp|q fixed "[rbp|q]" rbp|q -1 [0, 2[ "NoSpillStore"
1011
+ rsi|d fixed "[rsi|d]" rsi|d -1 [0, 6[ "NoSpillStore"
1012
+ v0|d DWORD "[rsi|d]" v0|d rsi|d [6, 14[[20, 27[6 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
1013
+ v1|d DWORD "[rdx|d]" v1|d rdx|d [8, 14[[20, 27[8 MustHaveRegister 10 ShouldHaveRegister "NoSpillStore"
1014
+ v2|d DWORD "[rax|d]" v2|d v0|d [10, 16[10 MustHaveRegister 16 ShouldHaveRegister "NoSpillStore"
1015
+ end_intervals
1016
+ begin_cfg
1017
+ name "After SSALinearScanResolveDataFlow"
1018
+ begin_block
1019
+ name "B0"
1020
+ from_bci -1
1021
+ to_bci -1
1022
+ predecessors
1023
+ successors "B1" "B2"
1024
+ xhandlers
1025
+ flags
1026
+ probability 4607182418800017408
1027
+ begin_IR
1028
+ LIR
1029
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1030
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1031
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1032
+ nr 6 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
1033
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
1034
+ nr 10 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
1035
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1036
+ end_IR
1037
+ end_block
1038
+ begin_block
1039
+ name "B1"
1040
+ from_bci -1
1041
+ to_bci -1
1042
+ predecessors "B0"
1043
+ successors
1044
+ xhandlers
1045
+ flags
1046
+ probability 4607182418800017408
1047
+ begin_IR
1048
+ LIR
1049
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1050
+ nr 16 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
1051
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1052
+ end_IR
1053
+ end_block
1054
+ begin_block
1055
+ name "B2"
1056
+ from_bci -1
1057
+ to_bci -1
1058
+ predecessors "B0"
1059
+ successors
1060
+ xhandlers
1061
+ flags
1062
+ probability 2355382605114769408
1063
+ begin_IR
1064
+ LIR
1065
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1066
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1067
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1068
+ nr 26 <|@ st <@st|@live-base-pointers: []
1069
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1070
+ locals: v0|DWORD v1|DWORD
1071
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1072
+ end_IR
1073
+ end_block
1074
+ end_cfg
1075
+ begin_bytecodes
1076
+ 0: iload_0
1077
+ 1: iload_1
1078
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1079
+ 5: ireturn
1080
+ <|@
1081
+ end_bytecodes
1082
+ begin_cfg
1083
+ name "After SSALinearScanEliminateSpillMove"
1084
+ begin_block
1085
+ name "B0"
1086
+ from_bci -1
1087
+ to_bci -1
1088
+ predecessors
1089
+ successors "B1" "B2"
1090
+ xhandlers
1091
+ flags
1092
+ probability 4607182418800017408
1093
+ begin_IR
1094
+ LIR
1095
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1096
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1097
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1098
+ nr 6 <|@ instruction v0|DWORD = MOVE rsi|DWORD moveKind: DWORD <|@ <|@
1099
+ nr 8 <|@ instruction v1|DWORD = MOVE rdx|DWORD moveKind: DWORD <|@ <|@
1100
+ nr 10 <|@ instruction v2|DWORD = ADD (x: v0|DWORD, y: v1|DWORD) size: DWORD <|@ <|@
1101
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1102
+ end_IR
1103
+ end_block
1104
+ begin_block
1105
+ name "B1"
1106
+ from_bci -1
1107
+ to_bci -1
1108
+ predecessors "B0"
1109
+ successors
1110
+ xhandlers
1111
+ flags
1112
+ probability 4607182418800017408
1113
+ begin_IR
1114
+ LIR
1115
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1116
+ nr 16 <|@ instruction rax|DWORD = MOVE v2|DWORD moveKind: DWORD <|@ <|@
1117
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1118
+ end_IR
1119
+ end_block
1120
+ begin_block
1121
+ name "B2"
1122
+ from_bci -1
1123
+ to_bci -1
1124
+ predecessors "B0"
1125
+ successors
1126
+ xhandlers
1127
+ flags
1128
+ probability 2355382605114769408
1129
+ begin_IR
1130
+ LIR
1131
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1132
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1133
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1134
+ nr 26 <|@ st <@st|@live-base-pointers: []
1135
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1136
+ locals: v0|DWORD v1|DWORD
1137
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1138
+ end_IR
1139
+ end_block
1140
+ end_cfg
1141
+ begin_bytecodes
1142
+ 0: iload_0
1143
+ 1: iload_1
1144
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1145
+ 5: ireturn
1146
+ <|@
1147
+ end_bytecodes
1148
+ begin_cfg
1149
+ name "After LinearScanAssignLocations"
1150
+ begin_block
1151
+ name "B0"
1152
+ from_bci -1
1153
+ to_bci -1
1154
+ predecessors
1155
+ successors "B1" "B2"
1156
+ xhandlers
1157
+ flags
1158
+ probability 4607182418800017408
1159
+ begin_IR
1160
+ LIR
1161
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1162
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1163
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1164
+ nr 10 <|@ instruction rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <|@ <|@
1165
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1166
+ end_IR
1167
+ end_block
1168
+ begin_block
1169
+ name "B1"
1170
+ from_bci -1
1171
+ to_bci -1
1172
+ predecessors "B0"
1173
+ successors
1174
+ xhandlers
1175
+ flags
1176
+ probability 4607182418800017408
1177
+ begin_IR
1178
+ LIR
1179
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1180
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1181
+ end_IR
1182
+ end_block
1183
+ begin_block
1184
+ name "B2"
1185
+ from_bci -1
1186
+ to_bci -1
1187
+ predecessors "B0"
1188
+ successors
1189
+ xhandlers
1190
+ flags
1191
+ probability 2355382605114769408
1192
+ begin_IR
1193
+ LIR
1194
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1195
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1196
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1197
+ nr 26 <|@ st <@st|@live-base-pointers: []
1198
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1199
+ locals: rsi|DWORD rdx|DWORD
1200
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1201
+ end_IR
1202
+ end_block
1203
+ end_cfg
1204
+ begin_bytecodes
1205
+ 0: iload_0
1206
+ 1: iload_1
1207
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1208
+ 5: ireturn
1209
+ <|@
1210
+ end_bytecodes
1211
+ begin_cfg
1212
+ name "After LinearScan"
1213
+ begin_block
1214
+ name "B0"
1215
+ from_bci -1
1216
+ to_bci -1
1217
+ predecessors
1218
+ successors "B1" "B2"
1219
+ xhandlers
1220
+ flags
1221
+ probability 4607182418800017408
1222
+ begin_IR
1223
+ LIR
1224
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1225
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1226
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1227
+ nr 10 <|@ instruction rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <|@ <|@
1228
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1229
+ end_IR
1230
+ end_block
1231
+ begin_block
1232
+ name "B1"
1233
+ from_bci -1
1234
+ to_bci -1
1235
+ predecessors "B0"
1236
+ successors
1237
+ xhandlers
1238
+ flags
1239
+ probability 4607182418800017408
1240
+ begin_IR
1241
+ LIR
1242
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1243
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1244
+ end_IR
1245
+ end_block
1246
+ begin_block
1247
+ name "B2"
1248
+ from_bci -1
1249
+ to_bci -1
1250
+ predecessors "B0"
1251
+ successors
1252
+ xhandlers
1253
+ flags
1254
+ probability 2355382605114769408
1255
+ begin_IR
1256
+ LIR
1257
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1258
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1259
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1260
+ nr 26 <|@ st <@st|@live-base-pointers: []
1261
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1262
+ locals: rsi|DWORD rdx|DWORD
1263
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1264
+ end_IR
1265
+ end_block
1266
+ end_cfg
1267
+ begin_bytecodes
1268
+ 0: iload_0
1269
+ 1: iload_1
1270
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1271
+ 5: ireturn
1272
+ <|@
1273
+ end_bytecodes
1274
+ begin_cfg
1275
+ name "After LSStackSlotAllocator"
1276
+ begin_block
1277
+ name "B0"
1278
+ from_bci -1
1279
+ to_bci -1
1280
+ predecessors
1281
+ successors "B1" "B2"
1282
+ xhandlers
1283
+ flags
1284
+ probability 4607182418800017408
1285
+ begin_IR
1286
+ LIR
1287
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1288
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1289
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1290
+ nr 10 <|@ instruction rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <|@ <|@
1291
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1292
+ end_IR
1293
+ end_block
1294
+ begin_block
1295
+ name "B1"
1296
+ from_bci -1
1297
+ to_bci -1
1298
+ predecessors "B0"
1299
+ successors
1300
+ xhandlers
1301
+ flags
1302
+ probability 4607182418800017408
1303
+ begin_IR
1304
+ LIR
1305
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1306
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1307
+ end_IR
1308
+ end_block
1309
+ begin_block
1310
+ name "B2"
1311
+ from_bci -1
1312
+ to_bci -1
1313
+ predecessors "B0"
1314
+ successors
1315
+ xhandlers
1316
+ flags
1317
+ probability 2355382605114769408
1318
+ begin_IR
1319
+ LIR
1320
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1321
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1322
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1323
+ nr 26 <|@ st <@st|@live-base-pointers: []
1324
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1325
+ locals: rsi|DWORD rdx|DWORD
1326
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1327
+ end_IR
1328
+ end_block
1329
+ end_cfg
1330
+ begin_bytecodes
1331
+ 0: iload_0
1332
+ 1: iload_1
1333
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1334
+ 5: ireturn
1335
+ <|@
1336
+ end_bytecodes
1337
+ begin_cfg
1338
+ name "After LocationMarker"
1339
+ begin_block
1340
+ name "B0"
1341
+ from_bci -1
1342
+ to_bci -1
1343
+ predecessors
1344
+ successors "B1" "B2"
1345
+ xhandlers
1346
+ flags
1347
+ probability 4607182418800017408
1348
+ begin_IR
1349
+ LIR
1350
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1351
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1352
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1353
+ nr 10 <|@ instruction rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <|@ <|@
1354
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1355
+ end_IR
1356
+ end_block
1357
+ begin_block
1358
+ name "B1"
1359
+ from_bci -1
1360
+ to_bci -1
1361
+ predecessors "B0"
1362
+ successors
1363
+ xhandlers
1364
+ flags
1365
+ probability 4607182418800017408
1366
+ begin_IR
1367
+ LIR
1368
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1369
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1370
+ end_IR
1371
+ end_block
1372
+ begin_block
1373
+ name "B2"
1374
+ from_bci -1
1375
+ to_bci -1
1376
+ predecessors "B0"
1377
+ successors
1378
+ xhandlers
1379
+ flags
1380
+ probability 2355382605114769408
1381
+ begin_IR
1382
+ LIR
1383
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1384
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1385
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1386
+ nr 26 <|@ st <@st|@reference-map: []
1387
+ live-base-pointers: []
1388
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1389
+ locals: rsi|DWORD rdx|DWORD
1390
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1391
+ end_IR
1392
+ end_block
1393
+ end_cfg
1394
+ begin_bytecodes
1395
+ 0: iload_0
1396
+ 1: iload_1
1397
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1398
+ 5: ireturn
1399
+ <|@
1400
+ end_bytecodes
1401
+ begin_cfg
1402
+ name "After AllocationStage"
1403
+ begin_block
1404
+ name "B0"
1405
+ from_bci -1
1406
+ to_bci -1
1407
+ predecessors
1408
+ successors "B1" "B2"
1409
+ xhandlers
1410
+ flags
1411
+ probability 4607182418800017408
1412
+ begin_IR
1413
+ LIR
1414
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1415
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1416
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1417
+ nr 10 <|@ instruction rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <|@ <|@
1418
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1419
+ end_IR
1420
+ end_block
1421
+ begin_block
1422
+ name "B1"
1423
+ from_bci -1
1424
+ to_bci -1
1425
+ predecessors "B0"
1426
+ successors
1427
+ xhandlers
1428
+ flags
1429
+ probability 4607182418800017408
1430
+ begin_IR
1431
+ LIR
1432
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1433
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1434
+ end_IR
1435
+ end_block
1436
+ begin_block
1437
+ name "B2"
1438
+ from_bci -1
1439
+ to_bci -1
1440
+ predecessors "B0"
1441
+ successors
1442
+ xhandlers
1443
+ flags
1444
+ probability 2355382605114769408
1445
+ begin_IR
1446
+ LIR
1447
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1448
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1449
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1450
+ nr 26 <|@ st <@st|@reference-map: []
1451
+ live-base-pointers: []
1452
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1453
+ locals: rsi|DWORD rdx|DWORD
1454
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1455
+ end_IR
1456
+ end_block
1457
+ end_cfg
1458
+ begin_bytecodes
1459
+ 0: iload_0
1460
+ 1: iload_1
1461
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1462
+ 5: ireturn
1463
+ <|@
1464
+ end_bytecodes
1465
+ begin_cfg
1466
+ name "After EdgeMoveOptimizer"
1467
+ begin_block
1468
+ name "B0"
1469
+ from_bci -1
1470
+ to_bci -1
1471
+ predecessors
1472
+ successors "B1" "B2"
1473
+ xhandlers
1474
+ flags
1475
+ probability 4607182418800017408
1476
+ begin_IR
1477
+ LIR
1478
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1479
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1480
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1481
+ nr 10 <|@ instruction rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <|@ <|@
1482
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1483
+ end_IR
1484
+ end_block
1485
+ begin_block
1486
+ name "B1"
1487
+ from_bci -1
1488
+ to_bci -1
1489
+ predecessors "B0"
1490
+ successors
1491
+ xhandlers
1492
+ flags
1493
+ probability 4607182418800017408
1494
+ begin_IR
1495
+ LIR
1496
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1497
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1498
+ end_IR
1499
+ end_block
1500
+ begin_block
1501
+ name "B2"
1502
+ from_bci -1
1503
+ to_bci -1
1504
+ predecessors "B0"
1505
+ successors
1506
+ xhandlers
1507
+ flags
1508
+ probability 2355382605114769408
1509
+ begin_IR
1510
+ LIR
1511
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1512
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1513
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1514
+ nr 26 <|@ st <@st|@reference-map: []
1515
+ live-base-pointers: []
1516
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1517
+ locals: rsi|DWORD rdx|DWORD
1518
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1519
+ end_IR
1520
+ end_block
1521
+ end_cfg
1522
+ begin_bytecodes
1523
+ 0: iload_0
1524
+ 1: iload_1
1525
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1526
+ 5: ireturn
1527
+ <|@
1528
+ end_bytecodes
1529
+ begin_cfg
1530
+ name "After ControlFlowOptimizer"
1531
+ begin_block
1532
+ name "B0"
1533
+ from_bci -1
1534
+ to_bci -1
1535
+ predecessors
1536
+ successors "B1" "B2"
1537
+ xhandlers
1538
+ flags
1539
+ probability 4607182418800017408
1540
+ begin_IR
1541
+ LIR
1542
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1543
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1544
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1545
+ nr 10 <|@ instruction rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <|@ <|@
1546
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1547
+ end_IR
1548
+ end_block
1549
+ begin_block
1550
+ name "B1"
1551
+ from_bci -1
1552
+ to_bci -1
1553
+ predecessors "B0"
1554
+ successors
1555
+ xhandlers
1556
+ flags
1557
+ probability 4607182418800017408
1558
+ begin_IR
1559
+ LIR
1560
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1561
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1562
+ end_IR
1563
+ end_block
1564
+ begin_block
1565
+ name "B2"
1566
+ from_bci -1
1567
+ to_bci -1
1568
+ predecessors "B0"
1569
+ successors
1570
+ xhandlers
1571
+ flags
1572
+ probability 2355382605114769408
1573
+ begin_IR
1574
+ LIR
1575
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1576
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1577
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1578
+ nr 26 <|@ st <@st|@reference-map: []
1579
+ live-base-pointers: []
1580
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1581
+ locals: rsi|DWORD rdx|DWORD
1582
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1583
+ end_IR
1584
+ end_block
1585
+ end_cfg
1586
+ begin_bytecodes
1587
+ 0: iload_0
1588
+ 1: iload_1
1589
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1590
+ 5: ireturn
1591
+ <|@
1592
+ end_bytecodes
1593
+ begin_cfg
1594
+ name "After RedundantMoveElimination"
1595
+ begin_block
1596
+ name "B0"
1597
+ from_bci -1
1598
+ to_bci -1
1599
+ predecessors
1600
+ successors "B1" "B2"
1601
+ xhandlers
1602
+ flags
1603
+ probability 4607182418800017408
1604
+ begin_IR
1605
+ LIR
1606
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1607
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1608
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1609
+ nr 10 <|@ instruction rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <|@ <|@
1610
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1611
+ end_IR
1612
+ end_block
1613
+ begin_block
1614
+ name "B1"
1615
+ from_bci -1
1616
+ to_bci -1
1617
+ predecessors "B0"
1618
+ successors
1619
+ xhandlers
1620
+ flags
1621
+ probability 4607182418800017408
1622
+ begin_IR
1623
+ LIR
1624
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1625
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1626
+ end_IR
1627
+ end_block
1628
+ begin_block
1629
+ name "B2"
1630
+ from_bci -1
1631
+ to_bci -1
1632
+ predecessors "B0"
1633
+ successors
1634
+ xhandlers
1635
+ flags
1636
+ probability 2355382605114769408
1637
+ begin_IR
1638
+ LIR
1639
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1640
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1641
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1642
+ nr 26 <|@ st <@st|@reference-map: []
1643
+ live-base-pointers: []
1644
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1645
+ locals: rsi|DWORD rdx|DWORD
1646
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1647
+ end_IR
1648
+ end_block
1649
+ end_cfg
1650
+ begin_bytecodes
1651
+ 0: iload_0
1652
+ 1: iload_1
1653
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1654
+ 5: ireturn
1655
+ <|@
1656
+ end_bytecodes
1657
+ begin_cfg
1658
+ name "After NullCheckOptimizer"
1659
+ begin_block
1660
+ name "B0"
1661
+ from_bci -1
1662
+ to_bci -1
1663
+ predecessors
1664
+ successors "B1" "B2"
1665
+ xhandlers
1666
+ flags
1667
+ probability 4607182418800017408
1668
+ begin_IR
1669
+ LIR
1670
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1671
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1672
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1673
+ nr 10 <|@ instruction rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <|@ <|@
1674
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1675
+ end_IR
1676
+ end_block
1677
+ begin_block
1678
+ name "B1"
1679
+ from_bci -1
1680
+ to_bci -1
1681
+ predecessors "B0"
1682
+ successors
1683
+ xhandlers
1684
+ flags
1685
+ probability 4607182418800017408
1686
+ begin_IR
1687
+ LIR
1688
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1689
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1690
+ end_IR
1691
+ end_block
1692
+ begin_block
1693
+ name "B2"
1694
+ from_bci -1
1695
+ to_bci -1
1696
+ predecessors "B0"
1697
+ successors
1698
+ xhandlers
1699
+ flags
1700
+ probability 2355382605114769408
1701
+ begin_IR
1702
+ LIR
1703
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1704
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1705
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1706
+ nr 26 <|@ st <@st|@reference-map: []
1707
+ live-base-pointers: []
1708
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1709
+ locals: rsi|DWORD rdx|DWORD
1710
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1711
+ end_IR
1712
+ end_block
1713
+ end_cfg
1714
+ begin_bytecodes
1715
+ 0: iload_0
1716
+ 1: iload_1
1717
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1718
+ 5: ireturn
1719
+ <|@
1720
+ end_bytecodes
1721
+ begin_cfg
1722
+ name "After StackMoveOptimization"
1723
+ begin_block
1724
+ name "B0"
1725
+ from_bci -1
1726
+ to_bci -1
1727
+ predecessors
1728
+ successors "B1" "B2"
1729
+ xhandlers
1730
+ flags
1731
+ probability 4607182418800017408
1732
+ begin_IR
1733
+ LIR
1734
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1735
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1736
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1737
+ nr 10 <|@ instruction rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <|@ <|@
1738
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1739
+ end_IR
1740
+ end_block
1741
+ begin_block
1742
+ name "B1"
1743
+ from_bci -1
1744
+ to_bci -1
1745
+ predecessors "B0"
1746
+ successors
1747
+ xhandlers
1748
+ flags
1749
+ probability 4607182418800017408
1750
+ begin_IR
1751
+ LIR
1752
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1753
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1754
+ end_IR
1755
+ end_block
1756
+ begin_block
1757
+ name "B2"
1758
+ from_bci -1
1759
+ to_bci -1
1760
+ predecessors "B0"
1761
+ successors
1762
+ xhandlers
1763
+ flags
1764
+ probability 2355382605114769408
1765
+ begin_IR
1766
+ LIR
1767
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1768
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1769
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1770
+ nr 26 <|@ st <@st|@reference-map: []
1771
+ live-base-pointers: []
1772
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1773
+ locals: rsi|DWORD rdx|DWORD
1774
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1775
+ end_IR
1776
+ end_block
1777
+ end_cfg
1778
+ begin_bytecodes
1779
+ 0: iload_0
1780
+ 1: iload_1
1781
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1782
+ 5: ireturn
1783
+ <|@
1784
+ end_bytecodes
1785
+ begin_cfg
1786
+ name "After PostAllocationOptimizationStage"
1787
+ begin_block
1788
+ name "B0"
1789
+ from_bci -1
1790
+ to_bci -1
1791
+ predecessors
1792
+ successors "B1" "B2"
1793
+ xhandlers
1794
+ flags
1795
+ probability 4607182418800017408
1796
+ begin_IR
1797
+ LIR
1798
+ nr 0 <|@ instruction [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1799
+ nr 2 <|@ instruction stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <|@ <|@
1800
+ nr 4 <|@ instruction [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <|@ <|@
1801
+ nr 10 <|@ instruction rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <|@ <|@
1802
+ nr 12 <|@ instruction BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <|@ <|@
1803
+ end_IR
1804
+ end_block
1805
+ begin_block
1806
+ name "B1"
1807
+ from_bci -1
1808
+ to_bci -1
1809
+ predecessors "B0"
1810
+ successors
1811
+ xhandlers
1812
+ flags
1813
+ probability 4607182418800017408
1814
+ begin_IR
1815
+ LIR
1816
+ nr 14 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1817
+ nr 18 <|@ instruction RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <|@ <|@
1818
+ end_IR
1819
+ end_block
1820
+ begin_block
1821
+ name "B2"
1822
+ from_bci -1
1823
+ to_bci -1
1824
+ predecessors "B0"
1825
+ successors
1826
+ xhandlers
1827
+ flags
1828
+ probability 2355382605114769408
1829
+ begin_IR
1830
+ LIR
1831
+ nr 20 <|@ instruction [] = LABEL numbPhis: 0 align: false label: ? <|@ <|@
1832
+ nr 22 <|@ instruction MOV [r15|QWORD + 644] y: -2156 size: DWORD <|@ <|@
1833
+ nr 24 <|@ instruction MOV [r15|QWORD + 656] y: 0 size: QWORD <|@ <|@
1834
+ nr 26 <|@ st <@st|@reference-map: []
1835
+ live-base-pointers: []
1836
+ JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0]
1837
+ locals: rsi|DWORD rdx|DWORD
1838
+ >@ <|@ instruction DEOPT info [bci:0] <|@ <|@
1839
+ end_IR
1840
+ end_block
1841
+ end_cfg
1842
+ begin_bytecodes
1843
+ 0: iload_0
1844
+ 1: iload_1
1845
+ 2: invokestatic #49 // java.lang.Math.addExact:(int, int)int
1846
+ 5: ireturn
1847
+ <|@
1848
+ end_bytecodes
1849
+ begin_cfg
1850
+ name "After code generation"
1851
+ end_cfg
1852
+ begin_nmethod
1853
+ <<<HexCodeFile
1854
+ Platform AMD64 64 <||@
1855
+ HexCode 0 89842400c0feff4883ec1848896c24108bc603c20f8013000000488b6c24104883c418850500000000c5f877c341c7878402000094f7ffff49c7879002000000000000e80000000090e80000000090e80000000090 <||@
1856
+ Comment 0 [stack overflow check] <||@
1857
+ Comment 0 3 <||@
1858
+ Comment 0 1 <||@
1859
+ Comment 11 block B0 null <||@
1860
+ Comment 11 0 [rsi|DWORD, rdx|DWORD, rbp|QWORD] = LABEL numbPhis: 0 align: false label: ? <||@
1861
+ Comment 11 2 stack:16|QWORD = MOVE rbp|QWORD moveKind: QWORD <||@
1862
+ Comment 16 4 [] = HOTSPOTLOCKSTACK frameMapBuilder: org.graalvm.compiler.lir.amd64.AMD64FrameMapBuilder@144de6360 slotKind: QWORD <||@
1863
+ Comment 16 10 rax|DWORD = ADD (x: rsi|DWORD, y: rdx|DWORD) size: DWORD <||@
1864
+ Comment 20 12 BRANCH trueDestinationProbability: 0.0 condition: |of| trueDestination: B0 -> B2 falseDestination: B0 -> B1 <||@
1865
+ Comment 26 block B1 null <||@
1866
+ Comment 26 14 [] = LABEL numbPhis: 0 align: false label: ? <||@
1867
+ Comment 26 18 RETURN (savedRbp: stack:16|QWORD, value: rax|DWORD) isStub: false requiresReservedStackAccessCheck: false thread: r15 scratchForSafepointOnReturn: rcx config: org.graalvm.compiler.hotspot.GraalHotSpotVMConfig@137f187d8 <||@
1868
+ Comment 35 12 <||@
1869
+ Comment 45 block B2 null <||@
1870
+ Comment 45 20 [] = LABEL numbPhis: 0 align: false label: ? <||@
1871
+ Comment 45 22 MOV [r15|QWORD + 644] y: -2156 size: DWORD <||@
1872
+ Comment 56 24 MOV [r15|QWORD + 656] y: 0 size: QWORD <||@
1873
+ Comment 67 26 DEOPT info [bci:0] <||@
1874
+ Comment 67 {Field[name=CompilerToVM::Data::SharedRuntime_deopt_blob_uncommon_trap, type=address, offset=0, address=0x1108bc130, value=4610474814]:0x112ce433e} <||@
1875
+ Comment 72 []at JavaExamples.exampleExactArith(JavaExamples.java:90) [bci: 0, duringCall: false, rethrow: false]
1876
+ |0 |1
1877
+ locals: |rsi|DWORD |rdx|DWORD <||@
1878
+ Comment 73 {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} <||@
1879
+ Comment 73 4 <||@
1880
+ Comment 79 {Field[name=CompilerToVM::Data::SharedRuntime_deopt_blob_unpack, type=address, offset=0, address=0x1108bc128, value=4610474560]:0x112ce4240} <||@
1881
+ Comment 79 5 <||@
1882
+ HexCodeFile>>> <|@
1883
+ end_nmethod
1884
+ begin_compilation
1885
+ name " HotSpotCompilation-346[JavaExamples.exampleExactArith(int, int)]"
1886
+ method "HotSpotCompilation-346[JavaExamples.exampleExactArith(int, int)]"
1887
+ date 1583364091445
1888
+ end_compilation