Changes: Christan Thalinger
- $Id: resolve.c 3642 2005-11-08 19:01:17Z edwin $
+ $Id: resolve.c 3811 2005-11-28 16:23:40Z edwin $
*/
/* SUBTYPE SET CHECKS */
/******************************************************************************/
+#ifdef ENABLE_VERIFIER
+
/* resolve_and_check_subtype_set ***********************************************
Resolve the references in the given set and test subtype relationships
if (error == resolveIllegalAccessError)
*exceptionptr = new_exception_message(string_java_lang_IllegalAccessException,message);
else
- *exceptionptr = new_exception_message(string_java_lang_LinkageError,message);
+ *exceptionptr = exceptions_new_linkageerror(message,NULL);
MFREE(message,char,msglen);
return false; /* exception */
}
+#endif /* ENABLE_VERIFIER */
+
/******************************************************************************/
/* CLASS RESOLUTION */
/******************************************************************************/
*******************************************************************************/
+#ifdef ENABLE_VERIFIER
bool resolve_class(unresolved_class *ref,
resolve_mode_t mode,
bool checkaccess,
*result = cls;
return true;
}
+#endif /* ENABLE_VERIFIER */
/* resolve_classref_eager ******************************************************
*******************************************************************************/
+#ifdef ENABLE_VERIFIER
classinfo * resolve_class_eager(unresolved_class *ref)
{
classinfo *c;
return c;
}
+#endif /* ENABLE_VERIFIER */
/******************************************************************************/
/* FIELD RESOLUTION */
return false; /* exception */
}
+#ifdef ENABLE_VERIFIER
+
/* { the field reference has been resolved } */
declarer = fi->class;
assert(declarer);
/* check protected access */
if (((fi->flags & ACC_PROTECTED) != 0) && !SAME_PACKAGE(declarer,referer)) {
#ifdef RESOLVE_VERBOSE
- fprintf(stderr," checking protectec access...\n");
+ fprintf(stderr," checking protected access...\n");
#endif
if (!resolve_and_check_subtype_set(referer,ref->referermethod,
&(ref->instancetypes),
fieldtyperef->name))
return false;
}
+#endif /* ENABLE_VERIFIER */
/* succeed */
#ifdef RESOLVE_VERBOSE
return false; /* exception */ /* XXX set exceptionptr? */
}
+#ifdef ENABLE_VERIFIER
+
#ifdef RESOLVE_VERBOSE
fprintf(stderr," flags: %02x\n",mi->flags);
#endif
return false; /* exception */
}
+#endif /* ENABLE_VERIFIER */
+
/* succeed */
*result = mi;
return true;
/* CREATING THE DATA STRUCTURES */
/******************************************************************************/
+#ifdef ENABLE_VERIFIER
static bool unresolved_subtype_set_from_typeinfo(classinfo *referer,
methodinfo *refmethod,
unresolved_subtype_set *stset,
UNRESOLVED_SUBTYPE_SET_EMTPY(*stset);
return true;
}
+#endif /* ENABLE_VERIFIER */
/* create_unresolved_class *****************************************************
*******************************************************************************/
+#ifdef ENABLE_VERIFIER
unresolved_class * create_unresolved_class(methodinfo *refmethod,
constant_classref *classref,
typeinfo *valuetype)
return ref;
}
+#endif /* ENABLE_VERIFIER */
/* create_unresolved_field *****************************************************
*******************************************************************************/
+#ifdef ENABLE_VERIFIER
bool constrain_unresolved_field(unresolved_field *ref,
classinfo *referer, methodinfo *refmethod,
instruction *iptr,
return true;
}
+#endif /* ENABLE_VERIFIER */
/* create_unresolved_method ****************************************************
*******************************************************************************/
+#ifdef ENABLE_VERIFIER
bool constrain_unresolved_method(unresolved_method *ref,
classinfo *referer, methodinfo *refmethod,
instruction *iptr,
return true;
}
+#endif /* ENABLE_VERIFIER */
/******************************************************************************/
/* FREEING MEMORY */
/******************************************************************************/
+#ifdef ENABLE_VERIFIER
inline static void unresolved_subtype_set_free_list(classref_or_classinfo *list)
{
if (list) {
MFREE(list,classref_or_classinfo,(p - list));
}
}
+#endif /* ENABLE_VERIFIER */
/* unresolved_class_free *******************************************************
{
assert(ref);
+#ifdef ENABLE_VERIFIER
unresolved_subtype_set_free_list(ref->subtypeconstraints.subtyperefs);
+#endif
FREE(ref,unresolved_class);
}
{
assert(ref);
+#ifdef ENABLE_VERIFIER
unresolved_subtype_set_free_list(ref->instancetypes.subtyperefs);
unresolved_subtype_set_free_list(ref->valueconstraints.subtyperefs);
+#endif
FREE(ref,unresolved_field);
}
{
assert(ref);
+#ifdef ENABLE_VERIFIER
unresolved_subtype_set_free_list(ref->instancetypes.subtyperefs);
if (ref->paramconstraints) {
int i;
unresolved_subtype_set_free_list(ref->paramconstraints[i].subtyperefs);
MFREE(ref->paramconstraints,unresolved_subtype_set,count);
}
+#endif
FREE(ref,unresolved_method);
}