Skip to content

Commit

Permalink
Disable genCheckcastDynamic with explicit exceptions
Browse files Browse the repository at this point in the history
  • Loading branch information
tkrodriguez committed Nov 9, 2018
1 parent de974b5 commit 38c4461
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 20 deletions.
Expand Up @@ -320,7 +320,6 @@
import org.graalvm.compiler.nodes.ConstantNode;
import org.graalvm.compiler.nodes.ControlSplitNode;
import org.graalvm.compiler.nodes.DeoptimizeNode;
import org.graalvm.compiler.nodes.DynamicPiNode;
import org.graalvm.compiler.nodes.EndNode;
import org.graalvm.compiler.nodes.EntryMarkerNode;
import org.graalvm.compiler.nodes.EntryProxyNode;
Expand Down Expand Up @@ -4097,24 +4096,6 @@ protected void genCheckCast(ResolvedJavaType resolvedType, ValueNode objectIn) {
frameState.push(JavaKind.Object, castNode);
}

@Override
public void genCheckcastDynamic(ValueNode object, ValueNode javaClass) {
LogicNode condition = genUnique(InstanceOfDynamicNode.create(getAssumptions(), getConstantReflection(), javaClass, object, true));
if (condition.isTautology()) {
frameState.push(JavaKind.Object, object);
} else {
GuardingNode guard;
if (needsExplicitClassCastException(object)) {
// This really needs to convert a Class to a hub but there's no way to do that.
ValueNode hub = javaClass;
guard = emitBytecodeExceptionCheck(condition, true, BytecodeExceptionKind.CLASS_CAST, object, hub);
} else {
guard = append(new FixedGuardNode(condition, DeoptimizationReason.ClassCastException, DeoptimizationAction.InvalidateReprofile, false));
}
frameState.push(JavaKind.Object, append(DynamicPiNode.create(getAssumptions(), getConstantReflection(), object, guard, javaClass)));
}
}

private void genInstanceOf(int cpi) {
JavaType type = lookupType(cpi, INSTANCEOF);
ValueNode object = frameState.pop(JavaKind.Object);
Expand Down
Expand Up @@ -88,13 +88,13 @@
import org.graalvm.compiler.nodes.debug.BindToRegisterNode;
import org.graalvm.compiler.nodes.debug.BlackholeNode;
import org.graalvm.compiler.nodes.debug.ControlFlowAnchorNode;
import org.graalvm.compiler.nodes.extended.OpaqueNode;
import org.graalvm.compiler.nodes.debug.SpillRegistersNode;
import org.graalvm.compiler.nodes.extended.BoxNode;
import org.graalvm.compiler.nodes.extended.BranchProbabilityNode;
import org.graalvm.compiler.nodes.extended.BytecodeExceptionNode.BytecodeExceptionKind;
import org.graalvm.compiler.nodes.extended.GetClassNode;
import org.graalvm.compiler.nodes.extended.MembarNode;
import org.graalvm.compiler.nodes.extended.OpaqueNode;
import org.graalvm.compiler.nodes.extended.RawLoadNode;
import org.graalvm.compiler.nodes.extended.RawStoreNode;
import org.graalvm.compiler.nodes.extended.UnboxNode;
Expand Down

0 comments on commit 38c4461

Please sign in to comment.