src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64IntegerArithmeticSnippets.java
equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved. |
3 * Copyright (c) 2018, Red Hat Inc. All rights reserved. |
3 * Copyright (c) 2018, Red Hat Inc. All rights reserved. |
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5 * |
5 * |
6 * This code is free software; you can redistribute it and/or modify it |
6 * This code is free software; you can redistribute it and/or modify it |
7 * under the terms of the GNU General Public License version 2 only, as |
7 * under the terms of the GNU General Public License version 2 only, as |
42 import org.graalvm.compiler.nodes.calc.IntegerDivRemNode; |
42 import org.graalvm.compiler.nodes.calc.IntegerDivRemNode; |
43 import org.graalvm.compiler.nodes.calc.SignedDivNode; |
43 import org.graalvm.compiler.nodes.calc.SignedDivNode; |
44 import org.graalvm.compiler.nodes.calc.SignedRemNode; |
44 import org.graalvm.compiler.nodes.calc.SignedRemNode; |
45 import org.graalvm.compiler.nodes.calc.UnsignedDivNode; |
45 import org.graalvm.compiler.nodes.calc.UnsignedDivNode; |
46 import org.graalvm.compiler.nodes.calc.UnsignedRemNode; |
46 import org.graalvm.compiler.nodes.calc.UnsignedRemNode; |
|
47 import org.graalvm.compiler.nodes.extended.BranchProbabilityNode; |
47 import org.graalvm.compiler.nodes.spi.LoweringTool; |
48 import org.graalvm.compiler.nodes.spi.LoweringTool; |
48 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; |
49 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; |
49 import org.graalvm.compiler.options.OptionValues; |
50 import org.graalvm.compiler.options.OptionValues; |
50 import org.graalvm.compiler.phases.util.Providers; |
51 import org.graalvm.compiler.phases.util.Providers; |
51 import org.graalvm.compiler.replacements.SnippetTemplate; |
52 import org.graalvm.compiler.replacements.SnippetTemplate; |
181 } |
182 } |
182 return safeURem(x, y); |
183 return safeURem(x, y); |
183 } |
184 } |
184 |
185 |
185 private static void checkForZero(int y) { |
186 private static void checkForZero(int y) { |
186 if (y == 0) { |
187 if (BranchProbabilityNode.probability(BranchProbabilityNode.DEOPT_PROBABILITY, y == 0)) { |
187 // "/ by zero" |
188 // "/ by zero" |
188 DeoptimizeNode.deopt(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.ArithmeticException); |
189 DeoptimizeNode.deopt(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.ArithmeticException); |
189 } |
190 } |
190 } |
191 } |
191 |
192 |
192 private static void checkForZero(long y) { |
193 private static void checkForZero(long y) { |
193 if (y == 0) { |
194 if (BranchProbabilityNode.probability(BranchProbabilityNode.DEOPT_PROBABILITY, y == 0)) { |
194 // "/ by zero" |
195 // "/ by zero" |
195 DeoptimizeNode.deopt(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.ArithmeticException); |
196 DeoptimizeNode.deopt(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.ArithmeticException); |
196 } |
197 } |
197 } |
198 } |
198 |
199 |