/** * What method is the declared callee? */ public MethodReference getDeclaredTarget() { return site.getDeclaredTarget(); }
/** * Does this call vertex correspond to a {@code new} instruction? */ public boolean isNew() { return site.getDeclaredTarget() == JavaScriptMethods.ctorReference; }
@Override public IntSet getRelevantParameters(CGNode caller, CallSiteReference site) { if (UNDERSTOOD_METHOD_REFS.contains(site.getDeclaredTarget())) { return thisParameter; } else { return EmptyIntSet.instance; } } }
@Override public IntSet getRelevantParameters(CGNode caller, CallSiteReference site) { if (UNDERSTOOD_METHOD_REFS.contains(site.getDeclaredTarget())) { return thisParameter; } else { return EmptyIntSet.instance; } } }
@Override public IntSet getRelevantParameters(CGNode caller, CallSiteReference site) { if (UNDERSTOOD_METHOD_REFS.contains(site.getDeclaredTarget())) { return thisParameter; } else { return EmptyIntSet.instance; } } }
@Override public IntSet getRelevantParameters(CGNode caller, CallSiteReference site) { if (site.getDeclaredTarget().equals(ReflectiveInvocationInterpreter.METHOD_INVOKE) || site.getDeclaredTarget().equals(ReflectiveInvocationInterpreter.CTOR_NEW_INSTANCE)) { return thisParameter; } else { return EmptyIntSet.instance; } } }
/** * What is the declared return type of the called method */ public TypeReference getDeclaredResultType() { return site.getDeclaredTarget().getReturnType(); }
/** * What is the declared return type of the called method */ public TypeReference getDeclaredResultType() { return site.getDeclaredTarget().getReturnType(); }
@Override public IntSet getRelevantParameters(CGNode caller, CallSiteReference site) { if (site.getDeclaredTarget().equals(GET_CLASS)) { return thisParameter; } else { return EmptyIntSet.instance; } }
@Override public boolean shouldRefine(CallerSiteContext callSiteAndCGNode) throws IllegalArgumentException { if (callSiteAndCGNode == null) { throw new IllegalArgumentException("callSiteAndCGNode == null"); } MethodReference declaredTarget = callSiteAndCGNode.getCallSite().getDeclaredTarget(); if (declaredTarget.toString().indexOf("toString()Ljava/lang/String") != -1) { return false; } return true; }
/** * @return the Selector that identifies this site */ public Selector getSelector() { return getSite().getDeclaredTarget().getSelector(); }
@Override public IntSet getRelevantParameters(CGNode caller, CallSiteReference site) { if (site.isDispatch() || site.getDeclaredTarget().getNumberOfParameters() > 0) { return thisParameter; } else { return EmptyIntSet.instance; } }
/** * @return the Selector that identifies this site */ public Selector getSelector() { return getSite().getDeclaredTarget().getSelector(); }
@Override public Context getCalleeTarget(CGNode caller, CallSiteReference site, IMethod callee, InstanceKey[] receiver) { if (methodsToSpecialize.contains(site.getDeclaredTarget()) || methodsToSpecialize.contains(callee.getReference())) { return specialPolicy.getCalleeTarget(caller, site, callee, receiver); } else { return basePolicy.getCalleeTarget(caller, site, callee, receiver); } }
private static boolean dispatchIndex(CallSiteReference ref, int i) { if (ref.isStatic()) { return ! ref.getDeclaredTarget().getParameterType(i).isPrimitiveType(); } else { return i==0 || ! ref.getDeclaredTarget().getParameterType(i-1).isPrimitiveType(); } }
@Override public IntSet getRelevantParameters(CGNode caller, CallSiteReference site) { MutableIntSet x = IntSetUtil.makeMutableCopy(base.getRelevantParameters(caller, site)); x.addAll(isFindStatic(site.getDeclaredTarget())? params: self); return x; } }
@Override public IntSet getRelevantParameters(CGNode caller, CallSiteReference site) { MutableIntSet x = IntSetUtil.makeMutableCopy(base.getRelevantParameters(caller, site)); x.addAll(isFindStatic(site.getDeclaredTarget())? params: self); return x; } }
private static Atom getLanguage(CallSiteReference site) { return site .getDeclaredTarget() .getDeclaringClass() .getClassLoader() .getLanguage(); }
@Override public IntSet getRelevantParameters(CGNode caller, CallSiteReference site) { IMethod declaredTarget = cha.resolveMethod(site.getDeclaredTarget()); if (declaredTarget != null && declaredTarget.getReference().equals(CloneInterpreter.CLONE)) { return selector.getRelevantParameters(caller, site); } else { return EmptyIntSet.instance; } }
@Override public SSAAbstractInvokeInstruction addDirectCall(int functionVn, int[] argVns, CallSiteReference callSite) { TypeReference type = callSite.getDeclaredTarget().getDeclaringClass(); Atom language = type.getClassLoader().getLanguage(); AbstractRootMethod root = getLanguageRoot(language); return ((ScriptFakeRoot) root).addDirectCall(functionVn, argVns, callSite); } }