seafoam 0.4 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/workflows.yml +39 -0
  3. data/.rubocop.yml +1 -1
  4. data/README.md +75 -2
  5. data/bin/bgv2isabelle +16 -45
  6. data/bin/bgv2json +18 -36
  7. data/bin/cfg2asm +24 -0
  8. data/bin/seafoam +1 -1
  9. data/demos/box-unbox-stats +65 -0
  10. data/docs/getting-graphs.md +4 -0
  11. data/examples/fib-java.bgv.gz +0 -0
  12. data/examples/fib.js +1 -1
  13. data/examples/java/JavaExamples.java +1 -1
  14. data/examples/ruby/clamps.rb +20 -0
  15. data/examples/ruby/graal.patch +15 -0
  16. data/examples/ruby/ruby_examples.rb +278 -0
  17. data/lib/seafoam.rb +5 -0
  18. data/lib/seafoam/annotators/graal.rb +1 -1
  19. data/lib/seafoam/cfg/cfg_parser.rb +93 -0
  20. data/lib/seafoam/cfg/disassembler.rb +70 -0
  21. data/lib/seafoam/commands.rb +185 -29
  22. data/lib/seafoam/graal/source.rb +23 -0
  23. data/lib/seafoam/isabelle_writer.rb +46 -0
  24. data/lib/seafoam/json_writer.rb +58 -0
  25. data/lib/seafoam/version.rb +1 -1
  26. data/seafoam.gemspec +2 -1
  27. data/spec/seafoam/annotators/graal_spec.rb +7 -7
  28. data/spec/seafoam/bgv/bgv_parser_spec.rb +2 -2
  29. data/spec/seafoam/cfg/cfg_parser_spec.rb +21 -0
  30. data/spec/seafoam/cfg/disassembler_spec.rb +32 -0
  31. data/spec/seafoam/command_spec.rb +78 -30
  32. data/spec/seafoam/json_writer_spec.rb +14 -0
  33. data/spec/seafoam/spec_helpers.rb +4 -0
  34. data/tools/render-all +2 -2
  35. metadata +36 -102
  36. data/.github/workflows/rubocop.yml +0 -10
  37. data/.github/workflows/specs.yml +0 -19
  38. data/examples/fib-java.bgv +0 -0
  39. data/examples/fib-js.bgv +0 -0
  40. data/examples/fib-ruby.bgv +0 -0
  41. data/examples/identity.bgv +0 -0
  42. data/examples/java/exampleArithOperator.bgv +0 -0
  43. data/examples/java/exampleArithOperator.cfg +0 -925
  44. data/examples/java/exampleArrayAllocation.bgv +0 -0
  45. data/examples/java/exampleArrayAllocation.cfg +0 -5268
  46. data/examples/java/exampleArrayRead.bgv +0 -0
  47. data/examples/java/exampleArrayRead.cfg +0 -2263
  48. data/examples/java/exampleArrayWrite.bgv +0 -0
  49. data/examples/java/exampleArrayWrite.cfg +0 -2315
  50. data/examples/java/exampleCatch.bgv +0 -0
  51. data/examples/java/exampleCatch.cfg +0 -4150
  52. data/examples/java/exampleCompareOperator.bgv +0 -0
  53. data/examples/java/exampleCompareOperator.cfg +0 -1109
  54. data/examples/java/exampleDoubleSynchronized.bgv +0 -0
  55. data/examples/java/exampleDoubleSynchronized.cfg +0 -26497
  56. data/examples/java/exampleExactArith.bgv +0 -0
  57. data/examples/java/exampleExactArith.cfg +0 -1888
  58. data/examples/java/exampleFieldRead.bgv +0 -0
  59. data/examples/java/exampleFieldRead.cfg +0 -1228
  60. data/examples/java/exampleFieldWrite.bgv +0 -0
  61. data/examples/java/exampleFieldWrite.cfg +0 -1102
  62. data/examples/java/exampleFor.bgv +0 -0
  63. data/examples/java/exampleFor.cfg +0 -3936
  64. data/examples/java/exampleFullEscape.bgv +0 -0
  65. data/examples/java/exampleFullEscape.cfg +0 -5893
  66. data/examples/java/exampleIf.bgv +0 -0
  67. data/examples/java/exampleIf.cfg +0 -2462
  68. data/examples/java/exampleIfNeverTaken.bgv +0 -0
  69. data/examples/java/exampleIfNeverTaken.cfg +0 -2476
  70. data/examples/java/exampleInstanceOfManyImpls.bgv +0 -0
  71. data/examples/java/exampleInstanceOfManyImpls.cfg +0 -6391
  72. data/examples/java/exampleInstanceOfOneImpl.bgv +0 -0
  73. data/examples/java/exampleInstanceOfOneImpl.cfg +0 -2604
  74. data/examples/java/exampleIntSwitch.bgv +0 -0
  75. data/examples/java/exampleIntSwitch.cfg +0 -3121
  76. data/examples/java/exampleInterfaceCallManyImpls.bgv +0 -0
  77. data/examples/java/exampleInterfaceCallManyImpls.cfg +0 -1358
  78. data/examples/java/exampleInterfaceCallOneImpl.bgv +0 -0
  79. data/examples/java/exampleInterfaceCallOneImpl.cfg +0 -3859
  80. data/examples/java/exampleLocalInstanceOf.bgv +0 -0
  81. data/examples/java/exampleLocalInstanceOf.cfg +0 -5276
  82. data/examples/java/exampleLocalSynchronized.bgv +0 -0
  83. data/examples/java/exampleLocalSynchronized.cfg +0 -1364
  84. data/examples/java/exampleLocalVariables.bgv +0 -0
  85. data/examples/java/exampleLocalVariables.cfg +0 -1195
  86. data/examples/java/exampleLocalVariablesState.bgv +0 -0
  87. data/examples/java/exampleLocalVariablesState.cfg +0 -1673
  88. data/examples/java/exampleNestedWhile.bgv +0 -0
  89. data/examples/java/exampleNestedWhile.cfg +0 -15499
  90. data/examples/java/exampleNestedWhileBreak.bgv +0 -0
  91. data/examples/java/exampleNestedWhileBreak.cfg +0 -11162
  92. data/examples/java/exampleNoEscape.bgv +0 -0
  93. data/examples/java/exampleNoEscape.cfg +0 -974
  94. data/examples/java/exampleObjectAllocation.bgv +0 -0
  95. data/examples/java/exampleObjectAllocation.cfg +0 -5287
  96. data/examples/java/examplePartialEscape.bgv +0 -0
  97. data/examples/java/examplePartialEscape.cfg +0 -7042
  98. data/examples/java/examplePhi.bgv +0 -0
  99. data/examples/java/examplePhi.cfg +0 -3227
  100. data/examples/java/exampleReducible.bgv +0 -0
  101. data/examples/java/exampleReducible.cfg +0 -5578
  102. data/examples/java/exampleSimpleCall.bgv +0 -0
  103. data/examples/java/exampleSimpleCall.cfg +0 -1435
  104. data/examples/java/exampleStamp.bgv +0 -0
  105. data/examples/java/exampleStamp.cfg +0 -913
  106. data/examples/java/exampleStaticCall.bgv +0 -0
  107. data/examples/java/exampleStaticCall.cfg +0 -1154
  108. data/examples/java/exampleStringSwitch.bgv +0 -0
  109. data/examples/java/exampleStringSwitch.cfg +0 -15377
  110. data/examples/java/exampleSynchronized.bgv +0 -0
  111. data/examples/java/exampleSynchronized.cfg +0 -26027
  112. data/examples/java/exampleThrow.bgv +0 -0
  113. data/examples/java/exampleThrow.cfg +0 -780
  114. data/examples/java/exampleThrowCatch.bgv +0 -0
  115. data/examples/java/exampleThrowCatch.cfg +0 -744
  116. data/examples/java/exampleUnsafeRead.bgv +0 -0
  117. data/examples/java/exampleUnsafeRead.cfg +0 -912
  118. data/examples/java/exampleUnsafeWrite.bgv +0 -0
  119. data/examples/java/exampleUnsafeWrite.cfg +0 -962
  120. data/examples/java/exampleWhile.bgv +0 -0
  121. data/examples/java/exampleWhile.cfg +0 -3936
  122. data/examples/java/exampleWhileBreak.bgv +0 -0
  123. data/examples/java/exampleWhileBreak.cfg +0 -5963
  124. data/examples/matmult-java.bgv +0 -0
  125. data/examples/matmult-ruby.bgv +0 -0
  126. data/examples/overflow.bgv +0 -0
  127. data/spec/seafoam/bgv/fixtures/not.bgv +0 -1
  128. data/spec/seafoam/bgv/fixtures/unsupported.bgv +0 -1
Binary file
@@ -1,1888 +0,0 @@
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