* Removed all Id tags.
[cacao.git] / src / vm / resolve.h
index 4105d63dad785aae7e01dedd5cc4590e22b47a40..b38b80b7606a3a35117920be3c0f02c3caab607d 100644 (file)
@@ -1,6 +1,6 @@
-/* vm/resolve.h - resolving classes/interfaces/fields/methods
+/* src/vm/resolve.h - resolving classes/interfaces/fields/methods
 
-   Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+   Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
    C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
    E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
    J. Wenninger, Institut f. Computersprachen - TU Wien
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Contact: cacao@cacaojvm.org
-
-   Authors: Edwin Steiner
-
-   Changes:
-
-   $Id: resolve.h 5724 2006-10-09 17:08:38Z edwin $
-
 */
 
 
@@ -46,12 +38,18 @@ typedef struct unresolved_subtype_set unresolved_subtype_set;
 
 #include "config.h"
 #include "vm/types.h"
+
 #include "vm/global.h"
-#include "vm/references.h"
+
 #include "vm/jit/jit.h"
 #include "vm/jit/reg.h"
 #include "vm/jit/verify/typeinfo.h"
 
+#include "vmcore/class.h"
+#include "vmcore/field.h"
+#include "vmcore/method.h"
+#include "vmcore/references.h"
+
 
 /* constants ******************************************************************/
 
@@ -139,6 +137,8 @@ bool resolve_classref_or_classinfo(methodinfo *refmethod,
                                                          bool link,
                                                          classinfo **result);
 
+classinfo *resolve_classref_or_classinfo_eager(classref_or_classinfo cls, bool checkaccess);
+
 bool resolve_class_from_typedesc(typedesc *d,bool checkaccess,bool link,classinfo **result);
 
 #ifdef ENABLE_VERIFIER
@@ -148,6 +148,7 @@ bool resolve_class(unresolved_class *ref,
                          classinfo **result);
 
 classinfo * resolve_class_eager(unresolved_class *ref);
+classinfo * resolve_class_eager_no_access_check(unresolved_class *ref);
 #endif /* ENABLE_VERIFIER */
 
 bool resolve_field(unresolved_field *ref,
@@ -190,7 +191,7 @@ resolve_result_t resolve_method_lazy(methodinfo *refmethod,
 resolve_result_t resolve_field_lazy(methodinfo *refmethod,
                                                                        constant_FMIref *fieldref);
 
-#ifdef ENABLE_VERIFIER
+#if defined(ENABLE_VERIFIER)
 resolve_result_t resolve_field_verifier_checks(methodinfo *refmethod,
                                                                                           constant_FMIref *fieldref,
                                                                                           classinfo *container,
@@ -206,19 +207,47 @@ bool resolve_constrain_unresolved_field(unresolved_field *ref,
                                                                            typeinfo *instanceti,
                                                                            typeinfo *valueti);
 
-resolve_result_t resolve_method_verifier_checks(jitdata *jd,
-                                                                                               methodinfo *refmethod,
+resolve_result_t resolve_method_verifier_checks(methodinfo *refmethod,
                                                                                                constant_FMIref *methodref,
-                                                                                               classinfo *container,
                                                                                                methodinfo *mi,
-                                                                                               bool invokestatic,
-                                                                                               bool invokespecial,
+                                                                                               bool invokestatic);
+
+resolve_result_t resolve_method_instance_type_checks(methodinfo *refmethod,
+                                                                                                        methodinfo *mi,
+                                                                                                        typeinfo *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 *stack);
+
+bool resolve_method_loading_constraints(classinfo *referer,
+                                                                               methodinfo *mi);
+
+bool resolve_constrain_unresolved_method_instance(unresolved_method *ref,
+                                                                                                 methodinfo *refmethod,
+                                                                                                 typeinfo *instanceti,
+                                                                                                 bool invokespecial);
+
+bool resolve_constrain_unresolved_method_params(jitdata *jd,
+                                                                                               unresolved_method *ref,
+                                                                                               methodinfo *refmethod,
                                                                                                instruction *iptr);
-bool constrain_unresolved_method(jitdata *jd,
-                                                                        unresolved_method *ref, classinfo *referer,
-                                                                        methodinfo *refmethod, instruction *iptr);
 
-#endif
+bool resolve_constrain_unresolved_method_params_stackbased(
+               unresolved_method *ref,
+               methodinfo *refmethod,
+               typedescriptor *stack);
+
+#endif /* defined(ENABLE_VERIFIER) */
 
 #ifndef NDEBUG
 void unresolved_class_debug_dump(unresolved_class *ref,FILE *file);