src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64IntegerArithmeticSnippets.java
changeset 58299 6df94ce3ab2f
parent 52910 583fd71c47d6
equal deleted inserted replaced
58298:0152ad7b38b8 58299:6df94ce3ab2f
     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