// This code snippet demonstrates how to resolve method call targets based on the available type information only.// This is the basis/the first part of the CHA call graph algorithms.importorg.opalj.collection.immutable._;importorg.opalj.br._;importorg.opalj.br.analyses._;importorg.opalj.br.instructions._;importorg.opalj.collection.immutable.ConstArray.find;importorg.opalj.util.PerformanceEvaluation.time// 1. Create a project which also includes the RT.jar as a library.implicitvalp=Project(newjava.io.File("OPAL/bi/target/scala-2.11/resource_managed/test/cg.jar"),org.opalj.bytecode.RTJar)// 1.1. Check that the project setup is as expected; depending on the configuration the number of call targets// may change. TypeExtensibilityKey.AllClosed=true// <= "HACK" only necessary as long as we don't have a decent "isExtensiblity" analysisvaltypeExtensibility=p.get(TypeExtensibilityKey)assert(typeExtensibility(ObjectType("cg/default_methods/ISuper")).isNo/* EXPECTED: org.opalj.Answer = No */)valtypeBasedCallTargets=p.get(TypeBasedCallTargetsKey)typeBasedCallTargets.specialCall(ObjectType("cg/default_methods/Super"),"<init>",MethodDescriptor("()V")).map(m=>m.toJava(p.classFile(m)))// EXPECTED: Set(java8methodresolution.Super{ public void <init>() })// ALWAYS OVERRIDDEN ABSTRACT METHODvalcandidates=p.virtualCall("foo",ObjectType("cg/always_overridden/Super"),"doIt",MethodDescriptor("()V"))typeBasedCallTargets.filterAlwaysOverriddenMethods(candidates)// GET CALL TARGETS OF INTERFACE METHOD INVOKES (INVOKEINTERFACE)typeBasedCallTargets.interfaceCall(ObjectType("cg/default_methods/ISuperAlt"),"compute",MethodDescriptor("(II)I"))p.interfaceCall(ObjectType("cg/default_methods/ISuper"),"compute",MethodDescriptor("(II)I")).map(m=>m.toJava(p.classFile(m))).mkString("Targets:\n\t","\n\t","\n")// compared to the using the project, typeBasedCallTargets does caching and performs some additional steps to further reduce the number of call targetstypeBasedCallTargets.interfaceCall(ObjectType("cg/default_methods/ISuper"),"compute",MethodDescriptor("(II)I")).map(m=>m.toJava(p.classFile(m))).mkString("Targets:\n\t","\n\t","\n")// GET CALL TARGETS OF VIRTUAL METHOD INVOKES (INVOKEVIRTUAL)valaDemoMain=p.classFile(ObjectType("cg/visibility/a/Demo")).get.findMethod("main").headvalinvokeVirtuals=aDemoMain.body.get.collect{casei:INVOKEVIRTUALifi.name=="printIt"=>i}/*invokeVirtuals.mkString("\n") ... =>(21,INVOKEVIRTUAL(cg.visibility.a.A{ void printIt() }))(45,INVOKEVIRTUAL(cg.visibility.a.A{ void printIt() }))(69,INVOKEVIRTUAL(cg.visibility.a.A{ void printIt() }))(96,INVOKEVIRTUAL(cg.visibility.a.C{ void printIt() }))*/valpts=p.virtualCall("cg/visibility/a",invokeVirtuals(0)._2).map(m=>m.toJava(p.classFile(m)))valtts=typeBasedCallTargets.virtualCall("cg/visibility/a",invokeVirtuals(0)._2)ptseqtts// => falsettseqtypeBasedCallTargets.virtualCall("cg/visibility/a",invokeVirtuals(0)._2)// => true (results are cached)p.virtualCall("cg/visibility/a",invokeVirtuals(0)._2).map(m=>m.toJava(p.classFile(m)))//res: scala.collection.immutable.Set[String] = Set(cg.visibility.a.C{ protected void printIt() }, cg.visibility.a.A{ void printIt() })p.virtualCall("cg/visibility/a",invokeVirtuals(3)._2).map(m=>m.toJava(p.classFile(m)))//res: scala.collection.immutable.Set[String] = Set(cg.visibility.a.C{ protected void printIt() })p.virtualCall("cg/visibility/b",invokeVirtuals(3)._2).map(m=>m.toJava(p.classFile(m)))//res: scala.collection.immutable.Set[String] = Set(cg.visibility.a.C{ protected void printIt() })p.virtualCall("cg/visibility/b",invokeVirtuals(0)._2).map(m=>m.toJava(p.classFile(m)))//res: scala.collection.immutable.Set[String] = Set(cg.visibility.b.B{ protected void printIt() }, cg.visibility.a.C{ protected void printIt() })// LOOKUP OF ARRAY BASED METHOD CALLStypeBasedCallTargets.virtualCall("N/A",ArrayType(ObjectType("java/lang/Object")),"hashCode",MethodDescriptor("()I"))typeBasedCallTargets.virtualCall("foo",ObjectType("cg/always_overridden/Super"),"doIt",MethodDescriptor("()V"))
mt2 wslikserverler www.zafer2.com editsizserverler emekserverler.net emekserverler.com onlineokeyoynaa.com canliokeyoynaa.com duzokeyoynaa.com okey-net.com bursaokey.com izmirokey.com ankaraokey.org istanbulokey.net agarprivateserver agario agario agario OKEY izmirokey bursaokey okey-net ankaraokey istanbulokey onlineokeyoynaa duzokeyoynaa canliokeyoynaa mt2 emekserverler emekserverler www.zafer2.com agario.zafer2.com editsizserverler wslikserverler altyazilifilm agarprivateserver agario agario okey oyna okey oyna metin2 pvp serverler okey okey okey okey okey OKEY OKEY OKEY OKEY OKEY realokey realokey realokey realokey realokey realokey realokey realokey realokey.com realokey.com realokey.com realokey.com realokey.com realokey.com realokey.com realokey.com realokey.com realokey.com realokey.com OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY OKEY