CACAO
Data Structures | Macros | Enumerations | Functions
resolve.hpp File Reference

Go to the source code of this file.

Data Structures

struct  unresolved_subtype_set
 
struct  unresolved_class
 
struct  unresolved_field
 
struct  unresolved_method
 

Macros

#define RESOLVE_STATIC   0x0001 /* ref to static fields/methods */
 
#define RESOLVE_PUTFIELD   0x0002 /* field ref inside a PUT{FIELD,STATIC}... */
 
#define RESOLVE_SPECIAL   0x0004 /* method ref inside INVOKESPECIAL */
 
#define SUBTYPESET_IS_EMPTY(stset)   ((stset).subtyperefs == NULL)
 
#define UNRESOLVED_SUBTYPE_SET_EMTPY(stset)   do { (stset).subtyperefs = NULL; } while(0)
 

Enumerations

enum  resolve_mode_t { resolveLazy, resolveEager }
 
enum  resolve_err_t { resolveLinkageError, resolveIllegalAccessError }
 
enum  resolve_result_t { resolveFailed = false, resolveDeferred = true, resolveSucceeded }
 

Functions

void resolve_handle_pending_exception (bool throwError)
 
bool resolve_class_from_name (classinfo *referer, methodinfo *refmethod, Utf8String classname, resolve_mode_t mode, bool checkaccess, bool link, classinfo **result)
 
bool resolve_classref (methodinfo *refmethod, constant_classref *ref, resolve_mode_t mode, bool checkaccess, bool link, classinfo **result)
 
bool resolve_classref_or_classinfo (methodinfo *refmethod, classref_or_classinfo cls, resolve_mode_t mode, bool checkaccess, bool link, classinfo **result)
 
classinforesolve_classref_or_classinfo_eager (classref_or_classinfo cls, bool checkaccess)
 
bool resolve_class_from_typedesc (typedesc *d, bool checkaccess, bool link, classinfo **result)
 
bool resolve_class (unresolved_class *ref, resolve_mode_t mode, bool checkaccess, classinfo **result)
 
bool resolve_field (unresolved_field *ref, resolve_mode_t mode, fieldinfo **result)
 
bool resolve_method (unresolved_method *ref, resolve_mode_t mode, methodinfo **result)
 
unresolved_classcreate_unresolved_class (methodinfo *refmethod, constant_classref *classref, typeinfo_t *valuetype)
 
unresolved_fieldresolve_create_unresolved_field (classinfo *referer, methodinfo *refmethod, instruction *iptr)
 
unresolved_methodresolve_create_unresolved_method (classinfo *referer, methodinfo *refmethod, constant_FMIref *methodref, bool invokestatic, bool invokespecial)
 
void unresolved_class_free (unresolved_class *ref)
 
void unresolved_field_free (unresolved_field *ref)
 
void unresolved_method_free (unresolved_method *ref)
 
resolve_result_t resolve_method_lazy (methodinfo *refmethod, constant_FMIref *methodref, bool invokespecial)
 
resolve_result_t resolve_field_lazy (methodinfo *refmethod, constant_FMIref *fieldref)
 
resolve_result_t resolve_field_verifier_checks (methodinfo *refmethod, constant_FMIref *fieldref, classinfo *container, fieldinfo *fi, typeinfo_t *instanceti, typeinfo_t *valueti, bool isstatic, bool isput)
 
bool resolve_constrain_unresolved_field (unresolved_field *ref, classinfo *referer, methodinfo *refmethod, typeinfo_t *instanceti, typeinfo_t *valueti)
 
resolve_result_t resolve_method_verifier_checks (methodinfo *refmethod, constant_FMIref *methodref, methodinfo *mi, bool invokestatic)
 
resolve_result_t resolve_method_instance_type_checks (methodinfo *refmethod, methodinfo *mi, typeinfo_t *instanceti, bool invokespecial)
 
resolve_result_t resolve_method_param_type_checks (jitdata *jd, methodinfo *refmethod, instruction *iptr, methodinfo *mi, bool invokestatic)
 
resolve_result_t resolve_method_param_type_checks_stackbased (methodinfo *refmethod, methodinfo *mi, bool invokestatic, typedescriptor_t *stack)
 
bool resolve_method_loading_constraints (classinfo *referer, methodinfo *mi)
 
bool resolve_constrain_unresolved_method_instance (unresolved_method *ref, methodinfo *refmethod, typeinfo_t *instanceti, bool invokespecial)
 
bool resolve_constrain_unresolved_method_params (jitdata *jd, unresolved_method *ref, methodinfo *refmethod, instruction *iptr)
 
bool resolve_constrain_unresolved_method_params_stackbased (unresolved_method *ref, methodinfo *refmethod, typedescriptor_t *stack)
 
void unresolved_class_debug_dump (unresolved_class *ref, FILE *file)
 
void unresolved_field_debug_dump (unresolved_field *ref, FILE *file)
 
void unresolved_method_debug_dump (unresolved_method *ref, FILE *file)
 
void unresolved_subtype_set_debug_dump (unresolved_subtype_set *stset, FILE *file)
 
classinforesolve_classref_eager (constant_classref *ref)
 
classinforesolve_classref_eager_nonabstract (constant_classref *ref)
 
fieldinforesolve_field_eager (unresolved_field *ref)
 
methodinforesolve_method_eager (unresolved_method *ref)
 
classinforesolve_class_eager (unresolved_class *ref)
 
classinforesolve_class_eager_no_access_check (unresolved_class *ref)
 

Macro Definition Documentation

#define RESOLVE_PUTFIELD   0x0002 /* field ref inside a PUT{FIELD,STATIC}... */

Definition at line 51 of file resolve.hpp.

#define RESOLVE_SPECIAL   0x0004 /* method ref inside INVOKESPECIAL */

Definition at line 52 of file resolve.hpp.

#define RESOLVE_STATIC   0x0001 /* ref to static fields/methods */

Definition at line 50 of file resolve.hpp.

#define SUBTYPESET_IS_EMPTY (   stset)    ((stset).subtyperefs == NULL)

Definition at line 105 of file resolve.hpp.

#define UNRESOLVED_SUBTYPE_SET_EMTPY (   stset)    do { (stset).subtyperefs = NULL; } while(0)

Definition at line 108 of file resolve.hpp.

Enumeration Type Documentation

Enumerator
resolveLinkageError 
resolveIllegalAccessError 

Definition at line 62 of file resolve.hpp.

Enumerator
resolveLazy 
resolveEager 

Definition at line 57 of file resolve.hpp.

Enumerator
resolveFailed 
resolveDeferred 
resolveSucceeded 

Definition at line 67 of file resolve.hpp.

Function Documentation

unresolved_class* create_unresolved_class ( methodinfo refmethod,
constant_classref classref,
typeinfo_t valuetype 
)

Definition at line 2354 of file resolve.cpp.

bool resolve_class ( unresolved_class ref,
resolve_mode_t  mode,
bool  checkaccess,
classinfo **  result 
)

Definition at line 900 of file resolve.cpp.

classinfo* resolve_class_eager ( unresolved_class ref)

Definition at line 1018 of file resolve.cpp.

classinfo* resolve_class_eager_no_access_check ( unresolved_class ref)

Definition at line 1044 of file resolve.cpp.

bool resolve_class_from_name ( classinfo referer,
methodinfo refmethod,
Utf8String  classname,
resolve_mode_t  mode,
bool  checkaccess,
bool  link,
classinfo **  result 
)

Definition at line 153 of file resolve.cpp.

bool resolve_class_from_typedesc ( typedesc d,
bool  checkaccess,
bool  link,
classinfo **  result 
)

Definition at line 473 of file resolve.cpp.

bool resolve_classref ( methodinfo refmethod,
constant_classref ref,
resolve_mode_t  mode,
bool  checkaccess,
bool  link,
classinfo **  result 
)

Definition at line 309 of file resolve.cpp.

classinfo* resolve_classref_eager ( constant_classref ref)

Definition at line 961 of file resolve.cpp.

classinfo* resolve_classref_eager_nonabstract ( constant_classref ref)

Definition at line 986 of file resolve.cpp.

bool resolve_classref_or_classinfo ( methodinfo refmethod,
classref_or_classinfo  cls,
resolve_mode_t  mode,
bool  checkaccess,
bool  link,
classinfo **  result 
)

Definition at line 351 of file resolve.cpp.

classinfo* resolve_classref_or_classinfo_eager ( classref_or_classinfo  cls,
bool  checkaccess 
)

Definition at line 437 of file resolve.cpp.

bool resolve_constrain_unresolved_field ( unresolved_field ref,
classinfo referer,
methodinfo refmethod,
typeinfo_t instanceti,
typeinfo_t valueti 
)

Definition at line 2485 of file resolve.cpp.

bool resolve_constrain_unresolved_method_instance ( unresolved_method ref,
methodinfo refmethod,
typeinfo_t instanceti,
bool  invokespecial 
)

Definition at line 2648 of file resolve.cpp.

bool resolve_constrain_unresolved_method_params ( jitdata jd,
unresolved_method ref,
methodinfo refmethod,
instruction iptr 
)

Definition at line 2713 of file resolve.cpp.

bool resolve_constrain_unresolved_method_params_stackbased ( unresolved_method ref,
methodinfo refmethod,
typedescriptor_t stack 
)

Definition at line 2788 of file resolve.cpp.

unresolved_field* resolve_create_unresolved_field ( classinfo referer,
methodinfo refmethod,
instruction iptr 
)

Definition at line 2402 of file resolve.cpp.

unresolved_method* resolve_create_unresolved_method ( classinfo referer,
methodinfo refmethod,
constant_FMIref methodref,
bool  invokestatic,
bool  invokespecial 
)

Definition at line 2596 of file resolve.cpp.

bool resolve_field ( unresolved_field ref,
resolve_mode_t  mode,
fieldinfo **  result 
)

Definition at line 1342 of file resolve.cpp.

fieldinfo* resolve_field_eager ( unresolved_field ref)

Definition at line 1497 of file resolve.cpp.

resolve_result_t resolve_field_lazy ( methodinfo refmethod,
constant_FMIref fieldref 
)

Definition at line 1261 of file resolve.cpp.

resolve_result_t resolve_field_verifier_checks ( methodinfo refmethod,
constant_FMIref fieldref,
classinfo container,
fieldinfo fi,
typeinfo_t instanceti,
typeinfo_t valueti,
bool  isstatic,
bool  isput 
)

Definition at line 1081 of file resolve.cpp.

void resolve_handle_pending_exception ( bool  throwError)

Definition at line 78 of file resolve.cpp.

bool resolve_method ( unresolved_method ref,
resolve_mode_t  mode,
methodinfo **  result 
)

Definition at line 2055 of file resolve.cpp.

methodinfo* resolve_method_eager ( unresolved_method ref)

Definition at line 2236 of file resolve.cpp.

resolve_result_t resolve_method_instance_type_checks ( methodinfo refmethod,
methodinfo mi,
typeinfo_t instanceti,
bool  invokespecial 
)

Definition at line 1680 of file resolve.cpp.

resolve_result_t resolve_method_lazy ( methodinfo refmethod,
constant_FMIref methodref,
bool  invokespecial 
)

Definition at line 1950 of file resolve.cpp.

bool resolve_method_loading_constraints ( classinfo referer,
methodinfo mi 
)

Definition at line 1876 of file resolve.cpp.

resolve_result_t resolve_method_param_type_checks ( jitdata jd,
methodinfo refmethod,
instruction iptr,
methodinfo mi,
bool  invokestatic 
)

Definition at line 1748 of file resolve.cpp.

resolve_result_t resolve_method_param_type_checks_stackbased ( methodinfo refmethod,
methodinfo mi,
bool  invokestatic,
typedescriptor_t stack 
)

Definition at line 1813 of file resolve.cpp.

resolve_result_t resolve_method_verifier_checks ( methodinfo refmethod,
constant_FMIref methodref,
methodinfo mi,
bool  invokestatic 
)

Definition at line 1597 of file resolve.cpp.

void unresolved_class_debug_dump ( unresolved_class ref,
FILE *  file 
)

Definition at line 2982 of file resolve.cpp.

void unresolved_class_free ( unresolved_class ref)

Definition at line 2876 of file resolve.cpp.

void unresolved_field_debug_dump ( unresolved_field ref,
FILE *  file 
)

Definition at line 3009 of file resolve.cpp.

void unresolved_field_free ( unresolved_field ref)

Definition at line 2895 of file resolve.cpp.

void unresolved_method_debug_dump ( unresolved_method ref,
FILE *  file 
)

Definition at line 3045 of file resolve.cpp.

void unresolved_method_free ( unresolved_method ref)

Definition at line 2915 of file resolve.cpp.

void unresolved_subtype_set_debug_dump ( unresolved_subtype_set stset,
FILE *  file 
)

Definition at line 2949 of file resolve.cpp.