src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/NewObjectSnippets.java
changeset 48861 47f19ff9903c
parent 48505 5db30620a3db
child 49451 e06f9607f370
equal deleted inserted replaced
48860:5bce1b7e7800 48861:47f19ff9903c
    60 import static org.graalvm.compiler.nodes.extended.BranchProbabilityNode.FAST_PATH_PROBABILITY;
    60 import static org.graalvm.compiler.nodes.extended.BranchProbabilityNode.FAST_PATH_PROBABILITY;
    61 import static org.graalvm.compiler.nodes.extended.BranchProbabilityNode.FREQUENT_PROBABILITY;
    61 import static org.graalvm.compiler.nodes.extended.BranchProbabilityNode.FREQUENT_PROBABILITY;
    62 import static org.graalvm.compiler.nodes.extended.BranchProbabilityNode.SLOW_PATH_PROBABILITY;
    62 import static org.graalvm.compiler.nodes.extended.BranchProbabilityNode.SLOW_PATH_PROBABILITY;
    63 import static org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability;
    63 import static org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability;
    64 import static org.graalvm.compiler.replacements.ReplacementsUtil.REPLACEMENTS_ASSERTIONS_ENABLED;
    64 import static org.graalvm.compiler.replacements.ReplacementsUtil.REPLACEMENTS_ASSERTIONS_ENABLED;
       
    65 import static org.graalvm.compiler.replacements.ReplacementsUtil.runtimeAssert;
    65 import static org.graalvm.compiler.replacements.ReplacementsUtil.staticAssert;
    66 import static org.graalvm.compiler.replacements.ReplacementsUtil.staticAssert;
    66 import static org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER;
    67 import static org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER;
    67 import static org.graalvm.compiler.replacements.nodes.CStringConstant.cstring;
    68 import static org.graalvm.compiler.replacements.nodes.CStringConstant.cstring;
    68 import static org.graalvm.compiler.replacements.nodes.ExplodeLoopNode.explodeLoop;
    69 import static org.graalvm.compiler.replacements.nodes.ExplodeLoopNode.explodeLoop;
    69 
    70 
   376         KlassPointer nonNullKlass = ClassGetHubNode.piCastNonNull(klass, SnippetAnchorNode.anchor());
   377         KlassPointer nonNullKlass = ClassGetHubNode.piCastNonNull(klass, SnippetAnchorNode.anchor());
   377 
   378 
   378         if (length < 0) {
   379         if (length < 0) {
   379             DeoptimizeNode.deopt(DeoptimizationAction.None, DeoptimizationReason.RuntimeConstraint);
   380             DeoptimizeNode.deopt(DeoptimizationAction.None, DeoptimizationReason.RuntimeConstraint);
   380         }
   381         }
   381         int layoutHelper = knownElementKind != JavaKind.Illegal ? knownLayoutHelper : readLayoutHelper(nonNullKlass);
   382         int layoutHelper;
       
   383         if (knownElementKind == JavaKind.Illegal) {
       
   384             layoutHelper = readLayoutHelper(nonNullKlass);
       
   385         } else {
       
   386             runtimeAssert(knownLayoutHelper == readLayoutHelper(nonNullKlass), "layout mismatch");
       
   387             layoutHelper = knownLayoutHelper;
       
   388         }
   382         //@formatter:off
   389         //@formatter:off
   383         // from src/share/vm/oops/klass.hpp:
   390         // from src/share/vm/oops/klass.hpp:
   384         //
   391         //
   385         // For arrays, layout helper is a negative number, containing four
   392         // For arrays, layout helper is a negative number, containing four
   386         // distinct bytes, as follows:
   393         // distinct bytes, as follows: