seafoam 0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. checksums.yaml +7 -0
  2. data/.github/probots.yml +2 -0
  3. data/.github/workflows/rubocop.yml +10 -0
  4. data/.github/workflows/specs.yml +19 -0
  5. data/.gitignore +7 -0
  6. data/.rubocop.yml +34 -0
  7. data/.ruby-version +1 -0
  8. data/.seafoam/config +1 -0
  9. data/CODE_OF_CONDUCT.md +128 -0
  10. data/CONTRIBUTING.md +5 -0
  11. data/Gemfile +2 -0
  12. data/LICENSE.md +7 -0
  13. data/README.md +298 -0
  14. data/bin/bgv2isabelle +53 -0
  15. data/bin/bgv2json +42 -0
  16. data/bin/seafoam +24 -0
  17. data/docs/annotators.md +43 -0
  18. data/docs/bgv.md +284 -0
  19. data/docs/getting-graphs.md +47 -0
  20. data/examples/Fib.java +24 -0
  21. data/examples/MatMult.java +39 -0
  22. data/examples/fib-java.bgv +0 -0
  23. data/examples/fib-js.bgv +0 -0
  24. data/examples/fib-ruby.bgv +0 -0
  25. data/examples/fib.js +15 -0
  26. data/examples/fib.rb +15 -0
  27. data/examples/identity.bgv +0 -0
  28. data/examples/identity.rb +13 -0
  29. data/examples/java/Irreducible.j +35 -0
  30. data/examples/java/IrreducibleDecompiled.java +21 -0
  31. data/examples/java/JavaExamples.java +418 -0
  32. data/examples/java/exampleArithOperator.bgv +0 -0
  33. data/examples/java/exampleArithOperator.cfg +925 -0
  34. data/examples/java/exampleArrayAllocation.bgv +0 -0
  35. data/examples/java/exampleArrayAllocation.cfg +5268 -0
  36. data/examples/java/exampleArrayRead.bgv +0 -0
  37. data/examples/java/exampleArrayRead.cfg +2263 -0
  38. data/examples/java/exampleArrayWrite.bgv +0 -0
  39. data/examples/java/exampleArrayWrite.cfg +2315 -0
  40. data/examples/java/exampleCatch.bgv +0 -0
  41. data/examples/java/exampleCatch.cfg +4150 -0
  42. data/examples/java/exampleCompareOperator.bgv +0 -0
  43. data/examples/java/exampleCompareOperator.cfg +1109 -0
  44. data/examples/java/exampleDoubleSynchronized.bgv +0 -0
  45. data/examples/java/exampleDoubleSynchronized.cfg +26497 -0
  46. data/examples/java/exampleExactArith.bgv +0 -0
  47. data/examples/java/exampleExactArith.cfg +1888 -0
  48. data/examples/java/exampleFieldRead.bgv +0 -0
  49. data/examples/java/exampleFieldRead.cfg +1228 -0
  50. data/examples/java/exampleFieldWrite.bgv +0 -0
  51. data/examples/java/exampleFieldWrite.cfg +1102 -0
  52. data/examples/java/exampleFor.bgv +0 -0
  53. data/examples/java/exampleFor.cfg +3936 -0
  54. data/examples/java/exampleFullEscape.bgv +0 -0
  55. data/examples/java/exampleFullEscape.cfg +5893 -0
  56. data/examples/java/exampleIf.bgv +0 -0
  57. data/examples/java/exampleIf.cfg +2462 -0
  58. data/examples/java/exampleIfNeverTaken.bgv +0 -0
  59. data/examples/java/exampleIfNeverTaken.cfg +2476 -0
  60. data/examples/java/exampleInstanceOfManyImpls.bgv +0 -0
  61. data/examples/java/exampleInstanceOfManyImpls.cfg +6391 -0
  62. data/examples/java/exampleInstanceOfOneImpl.bgv +0 -0
  63. data/examples/java/exampleInstanceOfOneImpl.cfg +2604 -0
  64. data/examples/java/exampleIntSwitch.bgv +0 -0
  65. data/examples/java/exampleIntSwitch.cfg +3121 -0
  66. data/examples/java/exampleInterfaceCallManyImpls.bgv +0 -0
  67. data/examples/java/exampleInterfaceCallManyImpls.cfg +1358 -0
  68. data/examples/java/exampleInterfaceCallOneImpl.bgv +0 -0
  69. data/examples/java/exampleInterfaceCallOneImpl.cfg +3859 -0
  70. data/examples/java/exampleLocalInstanceOf.bgv +0 -0
  71. data/examples/java/exampleLocalInstanceOf.cfg +5276 -0
  72. data/examples/java/exampleLocalSynchronized.bgv +0 -0
  73. data/examples/java/exampleLocalSynchronized.cfg +1364 -0
  74. data/examples/java/exampleLocalVariables.bgv +0 -0
  75. data/examples/java/exampleLocalVariables.cfg +1195 -0
  76. data/examples/java/exampleLocalVariablesState.bgv +0 -0
  77. data/examples/java/exampleLocalVariablesState.cfg +1673 -0
  78. data/examples/java/exampleNestedWhile.bgv +0 -0
  79. data/examples/java/exampleNestedWhile.cfg +15499 -0
  80. data/examples/java/exampleNestedWhileBreak.bgv +0 -0
  81. data/examples/java/exampleNestedWhileBreak.cfg +11162 -0
  82. data/examples/java/exampleNoEscape.bgv +0 -0
  83. data/examples/java/exampleNoEscape.cfg +974 -0
  84. data/examples/java/exampleObjectAllocation.bgv +0 -0
  85. data/examples/java/exampleObjectAllocation.cfg +5287 -0
  86. data/examples/java/examplePartialEscape.bgv +0 -0
  87. data/examples/java/examplePartialEscape.cfg +7042 -0
  88. data/examples/java/examplePhi.bgv +0 -0
  89. data/examples/java/examplePhi.cfg +3227 -0
  90. data/examples/java/exampleReducible.bgv +0 -0
  91. data/examples/java/exampleReducible.cfg +5578 -0
  92. data/examples/java/exampleSimpleCall.bgv +0 -0
  93. data/examples/java/exampleSimpleCall.cfg +1435 -0
  94. data/examples/java/exampleStamp.bgv +0 -0
  95. data/examples/java/exampleStamp.cfg +913 -0
  96. data/examples/java/exampleStaticCall.bgv +0 -0
  97. data/examples/java/exampleStaticCall.cfg +1154 -0
  98. data/examples/java/exampleStringSwitch.bgv +0 -0
  99. data/examples/java/exampleStringSwitch.cfg +15377 -0
  100. data/examples/java/exampleSynchronized.bgv +0 -0
  101. data/examples/java/exampleSynchronized.cfg +26027 -0
  102. data/examples/java/exampleThrow.bgv +0 -0
  103. data/examples/java/exampleThrow.cfg +780 -0
  104. data/examples/java/exampleThrowCatch.bgv +0 -0
  105. data/examples/java/exampleThrowCatch.cfg +744 -0
  106. data/examples/java/exampleUnsafeRead.bgv +0 -0
  107. data/examples/java/exampleUnsafeRead.cfg +912 -0
  108. data/examples/java/exampleUnsafeWrite.bgv +0 -0
  109. data/examples/java/exampleUnsafeWrite.cfg +962 -0
  110. data/examples/java/exampleWhile.bgv +0 -0
  111. data/examples/java/exampleWhile.cfg +3936 -0
  112. data/examples/java/exampleWhileBreak.bgv +0 -0
  113. data/examples/java/exampleWhileBreak.cfg +5963 -0
  114. data/examples/matmult-java.bgv +0 -0
  115. data/examples/matmult-ruby.bgv +0 -0
  116. data/examples/matmult.rb +29 -0
  117. data/examples/overflow.bgv +0 -0
  118. data/examples/overflow.rb +13 -0
  119. data/lib/seafoam.rb +13 -0
  120. data/lib/seafoam/annotators.rb +54 -0
  121. data/lib/seafoam/annotators/fallback.rb +27 -0
  122. data/lib/seafoam/annotators/graal.rb +376 -0
  123. data/lib/seafoam/bgv/bgv_parser.rb +602 -0
  124. data/lib/seafoam/binary/binary_reader.rb +21 -0
  125. data/lib/seafoam/binary/io_binary_reader.rb +88 -0
  126. data/lib/seafoam/colors.rb +18 -0
  127. data/lib/seafoam/commands.rb +447 -0
  128. data/lib/seafoam/config.rb +34 -0
  129. data/lib/seafoam/graph.rb +91 -0
  130. data/lib/seafoam/graphviz_writer.rb +213 -0
  131. data/lib/seafoam/spotlight.rb +28 -0
  132. data/lib/seafoam/version.rb +5 -0
  133. data/seafoam.gemspec +20 -0
  134. data/spec/seafoam/annotators/fallback_spec.rb +69 -0
  135. data/spec/seafoam/annotators/graal_spec.rb +96 -0
  136. data/spec/seafoam/annotators_spec.rb +61 -0
  137. data/spec/seafoam/bgv/bgv_parser_spec.rb +144 -0
  138. data/spec/seafoam/bgv/fixtures/not.bgv +1 -0
  139. data/spec/seafoam/bgv/fixtures/unsupported.bgv +1 -0
  140. data/spec/seafoam/binary/io_binary_reader_spec.rb +176 -0
  141. data/spec/seafoam/command_spec.rb +252 -0
  142. data/spec/seafoam/graph_spec.rb +172 -0
  143. data/spec/seafoam/graphviz_writer_spec.rb +63 -0
  144. data/spec/seafoam/spec_helpers.rb +30 -0
  145. data/spec/seafoam/spotlight_spec.rb +38 -0
  146. data/tools/render-all +36 -0
  147. metadata +238 -0
@@ -0,0 +1,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