< prev index next >

src/share/vm/jvmci/jvmciJavaClasses.hpp

Print this page
rev 12906 : [mq]: gc_interface

*** 25,34 **** --- 25,35 ---- #define SHARE_VM_JVMCI_JVMCIJAVACLASSES_HPP #include "classfile/systemDictionary.hpp" #include "oops/instanceMirrorKlass.hpp" #include "oops/oop.inline.hpp" + #include "runtime/access.inline.hpp" class JVMCIJavaClasses : AllStatic { public: static void compute_offsets(TRAPS); };
*** 349,388 **** static int _##name##_offset; \ static type name() { \ assert(klassName::klass() != NULL && klassName::klass()->is_linked(), "Class not yet linked: " #klassName); \ InstanceKlass* ik = klassName::klass(); \ address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ ! if (UseCompressedOops) { \ ! return (type) oopDesc::load_decode_heap_oop((narrowOop *)addr); \ ! } else { \ ! return (type) oopDesc::load_decode_heap_oop((oop*)addr); \ ! } \ } \ 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(); \ address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ ! if (UseCompressedOops) { \ ! oop_store((narrowOop *)addr, x); \ ! } else { \ ! oop_store((oop*)addr, 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(); \ address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ ! return *((jtypename *)addr); \ } \ static void set_##name(jtypename x) { \ assert(klassName::klass() != NULL && klassName::klass()->is_linked(), "Class not yet linked: " #klassName); \ InstanceKlass* ik = klassName::klass(); \ address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ ! *((jtypename *)addr) = 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) --- 350,381 ---- static int _##name##_offset; \ static type name() { \ assert(klassName::klass() != NULL && klassName::klass()->is_linked(), "Class not yet linked: " #klassName); \ InstanceKlass* ik = klassName::klass(); \ address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ ! return HeapAccess<>::oop_load((HeapWord*)addr); \ } \ 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(); \ address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ ! HeapAccess<>::oop_store((HeapWord*)addr, 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(); \ address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ ! return HeapAccess<>::load((jtypename*)addr); \ } \ static void set_##name(jtypename x) { \ assert(klassName::klass() != NULL && klassName::klass()->is_linked(), "Class not yet linked: " #klassName); \ InstanceKlass* ik = klassName::klass(); \ address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ ! HeapAccess<>::store((jtypename*)addr, 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)
< prev index next >