src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/NewObjectSnippets.java
equal
deleted
inserted
replaced
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: |