< prev index next >
src/hotspot/share/jvmci/jvmciJavaClasses.hpp
Print this page
@@ -23,14 +23,13 @@
#ifndef SHARE_VM_JVMCI_JVMCIJAVACLASSES_HPP
#define SHARE_VM_JVMCI_JVMCIJAVACLASSES_HPP
#include "classfile/systemDictionary.hpp"
-#include "oops/access.inline.hpp"
+#include "oops/access.hpp"
#include "oops/instanceMirrorKlass.hpp"
-#include "oops/oop.inline.hpp"
-#include "runtime/jniHandles.inline.hpp"
+#include "oops/oop.hpp"
class JVMCIJavaClasses : AllStatic {
public:
static void compute_offsets(TRAPS);
};
@@ -241,23 +240,23 @@
end_class \
start_class(HotSpotSentinelConstant) \
end_class \
start_class(JavaKind) \
char_field(JavaKind, typeChar) \
- static_oop_field(JavaKind, Boolean, "Ljdk/vm/ci/meta/JavaKind;"); \
- static_oop_field(JavaKind, Byte, "Ljdk/vm/ci/meta/JavaKind;"); \
- static_oop_field(JavaKind, Char, "Ljdk/vm/ci/meta/JavaKind;"); \
- static_oop_field(JavaKind, Short, "Ljdk/vm/ci/meta/JavaKind;"); \
- static_oop_field(JavaKind, Int, "Ljdk/vm/ci/meta/JavaKind;"); \
- static_oop_field(JavaKind, Long, "Ljdk/vm/ci/meta/JavaKind;"); \
+ static_oop_field(JavaKind, Boolean, "Ljdk/vm/ci/meta/JavaKind;") \
+ static_oop_field(JavaKind, Byte, "Ljdk/vm/ci/meta/JavaKind;") \
+ static_oop_field(JavaKind, Char, "Ljdk/vm/ci/meta/JavaKind;") \
+ static_oop_field(JavaKind, Short, "Ljdk/vm/ci/meta/JavaKind;") \
+ static_oop_field(JavaKind, Int, "Ljdk/vm/ci/meta/JavaKind;") \
+ static_oop_field(JavaKind, Long, "Ljdk/vm/ci/meta/JavaKind;") \
end_class \
start_class(ValueKind) \
oop_field(ValueKind, platformKind, "Ljdk/vm/ci/meta/PlatformKind;") \
end_class \
start_class(Value) \
oop_field(Value, valueKind, "Ljdk/vm/ci/meta/ValueKind;") \
- static_oop_field(Value, ILLEGAL, "Ljdk/vm/ci/meta/AllocatableValue;"); \
+ static_oop_field(Value, ILLEGAL, "Ljdk/vm/ci/meta/AllocatableValue;") \
end_class \
start_class(RegisterValue) \
oop_field(RegisterValue, reg, "Ljdk/vm/ci/code/Register;") \
end_class \
start_class(code_Location) \
@@ -315,29 +314,25 @@
#define START_CLASS(name) \
class name : AllStatic { \
private: \
friend class JVMCICompiler; \
- static void check(oop obj, const char* field_name, int offset) { \
- assert(obj != NULL, "NULL field access of %s.%s", #name, field_name); \
- assert(obj->is_a(SystemDictionary::name##_klass()), "wrong class, " #name " expected, found %s", obj->klass()->external_name()); \
- assert(offset != 0, "must be valid offset"); \
- } \
+ static void check(oop obj, const char* field_name, int offset); \
static void compute_offsets(TRAPS); \
public: \
static InstanceKlass* klass() { return SystemDictionary::name##_klass(); }
#define END_CLASS };
#define FIELD(name, type, accessor, cast) \
static int _##name##_offset; \
static type name(oop obj) { check(obj, #name, _##name##_offset); return cast obj->accessor(_##name##_offset); } \
static type name(Handle obj) { check(obj(), #name, _##name##_offset); return cast obj->accessor(_##name##_offset); } \
- static type name(jobject obj) { check(JNIHandles::resolve(obj), #name, _##name##_offset); return cast JNIHandles::resolve(obj)->accessor(_##name##_offset); } \
+ static type name(jobject obj); \
static void set_##name(oop obj, type x) { check(obj, #name, _##name##_offset); obj->accessor##_put(_##name##_offset, x); } \
static void set_##name(Handle obj, type x) { check(obj(), #name, _##name##_offset); obj->accessor##_put(_##name##_offset, x); } \
- static void set_##name(jobject obj, type x) { check(JNIHandles::resolve(obj), #name, _##name##_offset); JNIHandles::resolve(obj)->accessor##_put(_##name##_offset, x); }
+ static void set_##name(jobject obj, type x); \
#define EMPTY_CAST
#define CHAR_FIELD(klass, name) FIELD(name, jchar, char_field, EMPTY_CAST)
#define INT_FIELD(klass, name) FIELD(name, jint, int_field, EMPTY_CAST)
#define BOOLEAN_FIELD(klass, name) FIELD(name, jboolean, bool_field, EMPTY_CAST)
@@ -348,38 +343,16 @@
#define TYPEARRAYOOP_FIELD(klass, name, signature) FIELD(name, typeArrayOop, obj_field, (typeArrayOop))
#define STATIC_OOP_FIELD(klassName, name, signature) STATIC_OOPISH_FIELD(klassName, name, oop, signature)
#define STATIC_OBJARRAYOOP_FIELD(klassName, name, signature) STATIC_OOPISH_FIELD(klassName, name, objArrayOop, signature)
#define STATIC_OOPISH_FIELD(klassName, name, type, signature) \
static int _##name##_offset; \
- static type name() { \
- assert(klassName::klass() != NULL && klassName::klass()->is_linked(), "Class not yet linked: " #klassName); \
- InstanceKlass* ik = klassName::klass(); \
- oop base = ik->static_field_base_raw(); \
- oop result = HeapAccess<>::oop_load_at(base, _##name##_offset); \
- return type(result); \
- } \
- static void set_##name(type x) { \
- assert(klassName::klass() != NULL && klassName::klass()->is_linked(), "Class not yet linked: " #klassName); \
- assert(klassName::klass() != NULL, "Class not yet loaded: " #klassName); \
- InstanceKlass* ik = klassName::klass(); \
- oop base = ik->static_field_base_raw(); \
- HeapAccess<>::oop_store_at(base, _##name##_offset, x); \
- }
+ static type name(); \
+ static void set_##name(type x);
#define STATIC_PRIMITIVE_FIELD(klassName, name, jtypename) \
static int _##name##_offset; \
- static jtypename name() { \
- assert(klassName::klass() != NULL && klassName::klass()->is_linked(), "Class not yet linked: " #klassName); \
- InstanceKlass* ik = klassName::klass(); \
- oop base = ik->static_field_base_raw(); \
- return HeapAccess<>::load_at(base, _##name##_offset); \
- } \
- static void set_##name(jtypename x) { \
- assert(klassName::klass() != NULL && klassName::klass()->is_linked(), "Class not yet linked: " #klassName); \
- InstanceKlass* ik = klassName::klass(); \
- oop base = ik->static_field_base_raw(); \
- HeapAccess<>::store_at(base, _##name##_offset, x); \
- }
+ static jtypename name(); \
+ static void set_##name(jtypename x);
#define STATIC_INT_FIELD(klassName, name) STATIC_PRIMITIVE_FIELD(klassName, name, jint)
#define STATIC_BOOLEAN_FIELD(klassName, name) STATIC_PRIMITIVE_FIELD(klassName, name, jboolean)
COMPILER_CLASSES_DO(START_CLASS, END_CLASS, CHAR_FIELD, INT_FIELD, BOOLEAN_FIELD, LONG_FIELD, FLOAT_FIELD, OOP_FIELD, TYPEARRAYOOP_FIELD, OBJARRAYOOP_FIELD, STATIC_OOP_FIELD, STATIC_OBJARRAYOOP_FIELD, STATIC_INT_FIELD, STATIC_BOOLEAN_FIELD)
@@ -397,10 +370,11 @@
#undef STATIC_OOPISH_FIELD
#undef STATIC_OOP_FIELD
#undef STATIC_OBJARRAYOOP_FIELD
#undef STATIC_INT_FIELD
#undef STATIC_BOOLEAN_FIELD
+#undef STATIC_PRIMITIVE_FIELD
#undef EMPTY_CAST
void compute_offset(int &dest_offset, Klass* klass, const char* name, const char* signature, bool static_field, TRAPS);
#endif // SHARE_VM_JVMCI_JVMCIJAVACLASSES_HPP
< prev index next >