diff src/share/vm/c1x/c1x_TargetMethod.hpp @ 1434:72cfb36c6bb2

* enabled all jtt tests * added proxy that counts jni calls * honor hotspot stackshadowpages * constant pool caching * monitor enter/exit * arithmetic stubs (frem, drem, ...) * create stack values for debug info * some doc
author Lukas Stadler <lukas.stadler@oracle.com>
date Thu, 30 Sep 2010 17:19:48 -0700
parents efba53f86c4f
children 20a3896518ac
line wrap: on
line diff
--- a/src/share/vm/c1x/c1x_TargetMethod.hpp	Thu Sep 16 19:42:20 2010 -0700
+++ b/src/share/vm/c1x/c1x_TargetMethod.hpp	Thu Sep 30 17:19:48 2010 -0700
@@ -24,8 +24,23 @@
 
 void c1x_compute_offsets();
 
-// defines the structure of the CiTargetMethod - classes
-// this will generate classes with accessors similar to javaClasses.hpp
+/* This macro defines the structure of the CiTargetMethod - classes.
+ * It will generate classes with accessors similar to javaClasses.hpp, but with specializations for oops, Handles and jni handles.
+ *
+ * The public interface of these classes will look like this:
+
+ * class CiStackSlot : AllStatic {
+ * public:
+ *   static klassOop klass();
+ *   static jint  index(oop obj);
+ *   static jint  index(Handle obj);
+ *   static jint  index(jobject obj);
+ *   static void set_index(oop obj, jint x);
+ *   static void set_index(Handle obj, jint x);
+ *   static void set_index(jobject obj, jint x);
+ * };
+ *
+ */
 
 #define COMPILER_CLASSES_DO(start_class, end_class, char_field, int_field, boolean_field, long_field, oop_field, static_oop_field)   \
   start_class(HotSpotTypeResolved)                                                      \
@@ -142,9 +157,18 @@
   end_class                                                                             \
   start_class(RiMethod)                                                                 \
   end_class                                                                             \
+  start_class(CiValue)                                                                  \
+    oop_field(CiValue, kind, "Lcom/sun/cri/ci/CiKind;")                                 \
+    static_oop_field(CiValue, IllegalValue, "Lcom/sun/cri/ci/CiValue;");                \
+  end_class                                                                             \
   start_class(CiRegisterValue)                                                          \
+    oop_field(CiRegisterValue, _register, "Lcom/sun/cri/ci/CiRegister;")                \
+  end_class                                                                             \
+  start_class(CiRegister)                                                               \
+    int_field(CiRegister, number)                                                       \
   end_class                                                                             \
   start_class(CiStackSlot)                                                              \
+    int_field(CiStackSlot, index)                                                       \
   end_class                                                                             \
   /* end*/