public List<AnalysisMethod> getJavaInvocations() { List<AnalysisMethod> result = new ArrayList<>(); for (InvokeTypeFlow invoke : implementationInvokedBy.keySet()) { result.add((AnalysisMethod) invoke.getSource().graph().method()); } return result; }
graph().add(anchor); graph().addBeforeFixed(invoke().asNode(), anchor); LogicNode condition = graph().addOrUniqueWithInputs(InstanceOfNode.create(speculatedType, receiver, getProfile(), anchor)); FixedGuardNode guard = graph().add(new FixedGuardNode(condition, DeoptimizationReason.OptimizedTypeCheckViolated, DeoptimizationAction.InvalidateRecompile, false)); graph().addBeforeFixed(invoke().asNode(), guard); ValueNode valueNode = graph().addOrUnique(new PiNode(receiver, StampFactory.objectNonNull(speculatedType), guard)); arguments().set(0, valueNode); if (speculatedType.isExact()) {
MethodCallTargetNode callTarget = (MethodCallTargetNode) invoke.callTarget(); assert !callTarget.isStatic() : callTarget.targetMethod(); StructuredGraph graph = callTarget.graph(); ValueNode oldReceiver = callTarget.arguments().get(0); ValueNode newReceiver = oldReceiver;
if (leafConcreteSubtype != null) { ResolvedJavaMethod resolvedMethod = leafConcreteSubtype.getResult().resolveConcreteMethod(targetMethod, contextType); if (resolvedMethod != null && leafConcreteSubtype.canRecordTo(callTarget.graph().getAssumptions())) { return getAssumptionInlineInfo(invoke, resolvedMethod, leafConcreteSubtype); if (concrete != null && concrete.canRecordTo(callTarget.graph().getAssumptions())) { return getAssumptionInlineInfo(invoke, concrete.getResult(), concrete);
Assumptions assumptions = graph().getAssumptions();