@Override public InstanceKey getInstanceKeyForAllocation(CGNode node, NewSiteReference allocation) { if (allocation == null) { throw new IllegalArgumentException("allocation is null"); } if (String.valueOf(allocation).contains("java/lang/invoke/DirectMethodHandle$StaticAccessor")) { System.err.println("got " + allocation + " in " + node); } if (options.getClassTargetSelector() == null) { throw new IllegalStateException("options did not specify class target selector"); } IClass type = options.getClassTargetSelector().getAllocatedTarget(node, allocation); if (type == null) { return null; } ConcreteTypeKey key = new ConcreteTypeKey(type); return key; }
@Override public InstanceKey getInstanceKeyForAllocation(CGNode node, NewSiteReference allocation) { if (allocation == null) { throw new IllegalArgumentException("allocation is null"); } if (String.valueOf(allocation).contains("java/lang/invoke/DirectMethodHandle$StaticAccessor")) { System.err.println("got " + allocation + " in " + node); } if (options.getClassTargetSelector() == null) { throw new IllegalStateException("options did not specify class target selector"); } IClass type = options.getClassTargetSelector().getAllocatedTarget(node, allocation); if (type == null) { return null; } ConcreteTypeKey key = new ConcreteTypeKey(type); return key; }
@Override public InstanceKey getInstanceKeyForMultiNewArray(CGNode node, NewSiteReference allocation, int dim) { ArrayClass type = (ArrayClass) options.getClassTargetSelector().getAllocatedTarget(node, allocation); if (type == null) { return null; } InstanceKey key = new MultiNewArrayInNode(node, allocation, type, dim); return key; }
@Override public InstanceKey getInstanceKeyForMultiNewArray(CGNode node, NewSiteReference allocation, int dim) { ArrayClass type = (ArrayClass) options.getClassTargetSelector().getAllocatedTarget(node, allocation); if (type == null) { return null; } InstanceKey key = new MultiNewArrayInNode(node, allocation, type, dim); return key; }
@Override public InstanceKey getInstanceKeyForMultiNewArray(CGNode node, NewSiteReference allocation, int dim) { ArrayClass type = (ArrayClass) options.getClassTargetSelector().getAllocatedTarget(node, allocation); if (type == null) { return null; } InstanceKey key = new MultiNewArrayInNode(node, allocation, type, dim); return key; }
@Override public InstanceKey getInstanceKeyForMultiNewArray(CGNode node, NewSiteReference allocation, int dim) { ArrayClass type = (ArrayClass) options.getClassTargetSelector().getAllocatedTarget(node, allocation); if (type == null) { return null; } InstanceKey key = new MultiNewArrayInNode(node, allocation, type, dim); return key; }
System.err.println(("getInstanceKeyForMultiNewArray " + allocation + ' ' + dim)); ArrayClass type = (ArrayClass) options.getClassTargetSelector().getAllocatedTarget(node, allocation); assert (type != null); if (DEBUG) {
System.err.println(("getInstanceKeyForMultiNewArray " + allocation + ' ' + dim)); ArrayClass type = (ArrayClass) options.getClassTargetSelector().getAllocatedTarget(node, allocation); assert (type != null); if (DEBUG) {
public static void addBypassLogic(AnalysisOptions options, AnalysisScope scope, ClassLoader cl, XMLMethodSummaryReader summary, IClassHierarchy cha) throws IllegalArgumentException { if (scope == null) { throw new IllegalArgumentException("scope is null"); } if (options == null) { throw new IllegalArgumentException("options is null"); } if (cl == null) { throw new IllegalArgumentException("cl is null"); } if (cha == null) { throw new IllegalArgumentException("cha cannot be null"); } MethodTargetSelector ms = new BypassMethodTargetSelector(options.getMethodTargetSelector(), summary.getSummaries(), summary.getIgnoredPackages(), cha); options.setSelector(ms); ClassTargetSelector cs = new BypassClassTargetSelector(options.getClassTargetSelector(), summary.getAllocatableClasses(), cha, cha.getLoader(scope.getLoader(Atom.findOrCreateUnicodeAtom("Synthetic")))); options.setSelector(cs); }
public static void addBypassLogic(AnalysisOptions options, AnalysisScope scope, ClassLoader cl, XMLMethodSummaryReader summary, IClassHierarchy cha) throws IllegalArgumentException { if (scope == null) { throw new IllegalArgumentException("scope is null"); } if (options == null) { throw new IllegalArgumentException("options is null"); } if (cl == null) { throw new IllegalArgumentException("cl is null"); } if (cha == null) { throw new IllegalArgumentException("cha cannot be null"); } MethodTargetSelector ms = new BypassMethodTargetSelector(options.getMethodTargetSelector(), summary.getSummaries(), summary.getIgnoredPackages(), cha); options.setSelector(ms); ClassTargetSelector cs = new BypassClassTargetSelector(options.getClassTargetSelector(), summary.getAllocatableClasses(), cha, cha.getLoader(scope.getLoader(Atom.findOrCreateUnicodeAtom("Synthetic")))); options.setSelector(cs); }
options.getClassTargetSelector(), summaryClasses, cha, cha.getLoader(scope.getLoader(Atom .findOrCreateUnicodeAtom("Synthetic"))));
@Override public InstanceKey getInstanceKeyForAllocation(CGNode node, NewSiteReference allocation) { IClass type = options.getClassTargetSelector().getAllocatedTarget(node, allocation); if (type == null) { return null; } // disallow recursion in contexts. if (node.getContext().isA(ReceiverInstanceContext.class)) { IMethod m = node.getMethod(); CGNode n = ContainerContextSelector.findNodeRecursiveMatchingContext(m, node.getContext()); if (n != null) { return new SmushedAllocationSiteInNode(n, type); } } InstanceKey key = new SmushedAllocationSiteInNode(node, type); return key; }
@Override public InstanceKey getInstanceKeyForAllocation(CGNode node, NewSiteReference allocation) { IClass type = options.getClassTargetSelector().getAllocatedTarget(node, allocation); if (type == null) { return null; } // disallow recursion in contexts. if (node.getContext().isA(ReceiverInstanceContext.class)) { IMethod m = node.getMethod(); CGNode n = ContainerContextSelector.findNodeRecursiveMatchingContext(m, node.getContext()); if (n != null) { return new SmushedAllocationSiteInNode(n, type); } } InstanceKey key = new SmushedAllocationSiteInNode(node, type); return key; }
@Override public InstanceKey getInstanceKeyForAllocation(CGNode node, NewSiteReference allocation) { IClass type = options.getClassTargetSelector().getAllocatedTarget(node, allocation); if (type == null) { return null;
@Override public InstanceKey getInstanceKeyForAllocation(CGNode node, NewSiteReference allocation) { IClass type = options.getClassTargetSelector().getAllocatedTarget(node, allocation); if (type == null) { return null;