soot.jimple.toolkits.pointer.nativemethods
Class JavaLangReflectProxyNative

java.lang.Object
  extended by soot.jimple.toolkits.pointer.nativemethods.NativeMethodClass
      extended by soot.jimple.toolkits.pointer.nativemethods.JavaLangReflectProxyNative

public class JavaLangReflectProxyNative
extends NativeMethodClass


Field Summary
 
Fields inherited from class soot.jimple.toolkits.pointer.nativemethods.NativeMethodClass
helper
 
Constructor Summary
JavaLangReflectProxyNative(NativeHelper helper)
           
 
Method Summary
 void java_lang_reflect_Proxy_defineClass0(SootMethod method, ReferenceVariable thisVar, ReferenceVariable returnVar, ReferenceVariable[] params)
          We have to assume all possible classes will be returned.
 void simulateMethod(SootMethod method, ReferenceVariable thisVar, ReferenceVariable returnVar, ReferenceVariable[] params)
          Implements the abstract method simulateMethod.
 
Methods inherited from class soot.jimple.toolkits.pointer.nativemethods.NativeMethodClass
defaultMethod
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JavaLangReflectProxyNative

public JavaLangReflectProxyNative(NativeHelper helper)
Method Detail

simulateMethod

public void simulateMethod(SootMethod method,
                           ReferenceVariable thisVar,
                           ReferenceVariable returnVar,
                           ReferenceVariable[] params)
Implements the abstract method simulateMethod. It distributes the request to the corresponding methods by signatures.

Specified by:
simulateMethod in class NativeMethodClass

java_lang_reflect_Proxy_defineClass0

public void java_lang_reflect_Proxy_defineClass0(SootMethod method,
                                                 ReferenceVariable thisVar,
                                                 ReferenceVariable returnVar,
                                                 ReferenceVariable[] params)
We have to assume all possible classes will be returned. But it is still possible to make a new class. NOTE: assuming a close world, and this method should not be called. private static native java.lang.Class defineClass0(java.lang.ClassLoader, java.lang.String, byte[], int, int);