comparison src/share/vm/jvmci/jvmciJavaAccess.hpp @ 22513:82818d115a98

jvmciJavaAccess classes are always instanceKlasses
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Thu, 03 Sep 2015 13:30:54 -0700
parents 943c2bf064fa
children 8e4949926ae5
comparison
equal deleted inserted replaced
22512:1852abfbaca3 22513:82818d115a98
284 assert(obj->is_a(SystemDictionary::name##_klass()), err_msg("wrong class, " #name " expected, found %s", obj->klass()->external_name())); \ 284 assert(obj->is_a(SystemDictionary::name##_klass()), err_msg("wrong class, " #name " expected, found %s", obj->klass()->external_name())); \
285 assert(offset != 0, "must be valid offset"); \ 285 assert(offset != 0, "must be valid offset"); \
286 } \ 286 } \
287 static void compute_offsets(); \ 287 static void compute_offsets(); \
288 public: \ 288 public: \
289 static Klass* klass() { return SystemDictionary::name##_klass(); } 289 static InstanceKlass* klass() { return SystemDictionary::name##_klass() == NULL ? NULL : InstanceKlass::cast(SystemDictionary::name##_klass()); }
290 290
291 #define END_CLASS }; 291 #define END_CLASS };
292 292
293 #define FIELD(name, type, accessor, cast) \ 293 #define FIELD(name, type, accessor, cast) \
294 static int _##name##_offset; \ 294 static int _##name##_offset; \
312 #define STATIC_OBJARRAYOOP_FIELD(klassName, name, signature) STATIC_OOPISH_FIELD(klassName, name, objArrayOop, signature) 312 #define STATIC_OBJARRAYOOP_FIELD(klassName, name, signature) STATIC_OOPISH_FIELD(klassName, name, objArrayOop, signature)
313 #define STATIC_OOPISH_FIELD(klassName, name, type, signature) \ 313 #define STATIC_OOPISH_FIELD(klassName, name, type, signature) \
314 static int _##name##_offset; \ 314 static int _##name##_offset; \
315 static type name() { \ 315 static type name() { \
316 assert(klassName::klass() != NULL, "Class not yet loaded: " #klassName); \ 316 assert(klassName::klass() != NULL, "Class not yet loaded: " #klassName); \
317 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \ 317 InstanceKlass* ik = klassName::klass(); \
318 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ 318 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \
319 if (UseCompressedOops) { \ 319 if (UseCompressedOops) { \
320 return (type) oopDesc::load_decode_heap_oop((narrowOop *)addr); \ 320 return (type) oopDesc::load_decode_heap_oop((narrowOop *)addr); \
321 } else { \ 321 } else { \
322 return (type) oopDesc::load_decode_heap_oop((oop*)addr); \ 322 return (type) oopDesc::load_decode_heap_oop((oop*)addr); \
323 } \ 323 } \
324 } \ 324 } \
325 static void set_##name(type x) { \ 325 static void set_##name(type x) { \
326 assert(klassName::klass() != NULL, "Class not yet loaded: " #klassName); \ 326 assert(klassName::klass() != NULL, "Class not yet loaded: " #klassName); \
327 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \ 327 InstanceKlass* ik = klassName::klass(); \
328 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ 328 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \
329 if (UseCompressedOops) { \ 329 if (UseCompressedOops) { \
330 oop_store((narrowOop *)addr, x); \ 330 oop_store((narrowOop *)addr, x); \
331 } else { \ 331 } else { \
332 oop_store((oop*)addr, x); \ 332 oop_store((oop*)addr, x); \
333 } \ 333 } \
334 } 334 }
335 #define STATIC_PRIMITIVE_FIELD(klassName, name, jtypename) \ 335 #define STATIC_PRIMITIVE_FIELD(klassName, name, jtypename) \
336 static int _##name##_offset; \ 336 static int _##name##_offset; \
337 static jtypename name() { \ 337 static jtypename name() { \
338 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \ 338 InstanceKlass* ik = klassName::klass(); \
339 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ 339 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \
340 return *((jtypename *)addr); \ 340 return *((jtypename *)addr); \
341 } \ 341 } \
342 static void set_##name(jtypename x) { \ 342 static void set_##name(jtypename x) { \
343 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \ 343 InstanceKlass* ik = klassName::klass(); \
344 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ 344 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \
345 *((jtypename *)addr) = x; \ 345 *((jtypename *)addr) = x; \
346 } 346 }
347 347
348 #define STATIC_INT_FIELD(klassName, name) STATIC_PRIMITIVE_FIELD(klassName, name, jint) 348 #define STATIC_INT_FIELD(klassName, name) STATIC_PRIMITIVE_FIELD(klassName, name, jint)