s.remove(c); if (!c.isInterface() && !c.isAbstract() && canStoreClass(c, declaringClass)) { SootMethod concreteM = resolveConcreteDispatch(c, m); if (concreteM != null) { ret.add(concreteM); continue; SootMethod concreteM = resolveConcreteDispatch(concreteClass, m); if (concreteM != null) { ret.add(concreteM); SootMethod concreteM = resolveConcreteDispatch(rtObject.getSootClass(), m); if (concreteM != null) { ret.add(concreteM);
s.remove(c); if (!c.isInterface() && !c.isAbstract() && canStoreClass(c, declaringClass)) { SootMethod concreteM = resolveConcreteDispatch(c, m); if (concreteM != null) { ret.add(concreteM); concreteM = resolveConcreteDispatch(concreteClass, m); } catch (Exception e) { concreteM = null; SootMethod concreteM = null; try { concreteM = resolveConcreteDispatch(RefType.v("java.lang.Object").getSootClass(), m); } catch (Exception e) { concreteM = null;
tgts.add(hierarchy.resolveConcreteDispatch(((RefType) t).getSootClass(), callee_signature)); } catch (Exception e) { logger.debug(e.getMessage(), e);
/** Returns the target for the given SpecialInvokeExpr. */ public SootMethod resolveSpecialDispatch(SpecialInvokeExpr ie, SootMethod container) { SootMethod target = ie.getMethod(); /* * This is a bizarre condition! Hopefully the implementation is correct. See VM Spec, 2nd Edition, Chapter 6, in the * definition of invokespecial. */ if (target.getName().equals("<init>") || target.isPrivate()) { return target; } else if (isSubclass(target.getDeclaringClass(), container.getDeclaringClass())) { return resolveConcreteDispatch(container.getDeclaringClass(), target); } else { return target; } }
= fastHierarchy.resolveConcreteDispatch(concreteType.getSootClass(), iie.getMethod()); return Collections.singleton(singleTargetMethod); } else {
if( !c.isInterface() && !c.isAbstract() && canStoreClass( c, declaringClass ) ) { SootMethod concreteM = resolveConcreteDispatch( c, m ); if( concreteM != null ) ret.add( concreteM ); continue; SootMethod concreteM = resolveConcreteDispatch( concreteClass, m ); if( concreteM != null ) ret.add( concreteM ); } else if( t instanceof ArrayType ) { SootMethod concreteM = resolveConcreteDispatch( RefType.v( "java.lang.Object" ).getSootClass(), m ); if( concreteM != null ) ret.add( concreteM );
if( !c.isInterface() && !c.isAbstract() && canStoreClass( c, declaringClass ) ) { SootMethod concreteM = resolveConcreteDispatch( c, m ); if( concreteM != null ) ret.add( concreteM ); continue; SootMethod concreteM = resolveConcreteDispatch( concreteClass, m ); if( concreteM != null ) ret.add( concreteM ); } else if( t instanceof ArrayType ) { SootMethod concreteM = resolveConcreteDispatch( RefType.v( "java.lang.Object" ).getSootClass(), m ); if( concreteM != null ) ret.add( concreteM );
if( !c.isInterface() && !c.isAbstract() && canStoreClass( c, declaringClass ) ) { SootMethod concreteM = resolveConcreteDispatch( c, m ); if( concreteM != null ) ret.add( concreteM ); concreteM = resolveConcreteDispatch( concreteClass, m ); } catch( Exception e ) { concreteM = null; SootMethod concreteM = null; try { concreteM = resolveConcreteDispatch( RefType.v( "java.lang.Object" ).getSootClass(), m ); } catch( Exception e ) {
if( !c.isInterface() && !c.isAbstract() && canStoreClass( c, declaringClass ) ) { SootMethod concreteM = resolveConcreteDispatch( c, m ); if( concreteM != null ) ret.add( concreteM ); concreteM = resolveConcreteDispatch( concreteClass, m ); } catch( Exception e ) { concreteM = null; SootMethod concreteM = null; try { concreteM = resolveConcreteDispatch( RefType.v( "java.lang.Object" ).getSootClass(), m ); } catch( Exception e ) {
/** Returns the target for the given SpecialInvokeExpr. */ public SootMethod resolveSpecialDispatch(SpecialInvokeExpr ie, SootMethod container) { SootMethod target = ie.getMethod(); /* This is a bizarre condition! Hopefully the implementation is correct. See VM Spec, 2nd Edition, Chapter 6, in the definition of invokespecial. */ if (target.getName().equals("<init>") || target.isPrivate()) return target; else if (isSubclass(target.getDeclaringClass(), container.getDeclaringClass())) return resolveConcreteDispatch(container.getDeclaringClass(), target ); else return target; }
/** Returns the target for the given SpecialInvokeExpr. */ public SootMethod resolveSpecialDispatch(SpecialInvokeExpr ie, SootMethod container) { SootMethod target = ie.getMethod(); /* This is a bizarre condition! Hopefully the implementation is correct. See VM Spec, 2nd Edition, Chapter 6, in the definition of invokespecial. */ if (target.getName().equals("<init>") || target.isPrivate()) return target; else if (isSubclass(target.getDeclaringClass(), container.getDeclaringClass())) return resolveConcreteDispatch(container.getDeclaringClass(), target ); else return target; }