comparison src/share/vm/graal/graalJavaAccess.hpp @ 19782:29916dcee0b8

Verify dependencies when assertions are enabled
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Tue, 10 Mar 2015 22:18:53 -0700
parents f595e97626fd
children b3f566135b56
comparison
equal deleted inserted replaced
19781:ea8d6fa333ab 19782:29916dcee0b8
45 * static void set_index(jobject obj, jint x); 45 * static void set_index(jobject obj, jint x);
46 * }; 46 * };
47 * 47 *
48 */ 48 */
49 49
50 #define 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_int_field) \ 50 #define 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_int_field, static_boolean_field) \
51 start_class(HotSpotResolvedObjectTypeImpl) \ 51 start_class(HotSpotResolvedObjectTypeImpl) \
52 oop_field(HotSpotResolvedObjectTypeImpl, javaClass, "Ljava/lang/Class;") \ 52 oop_field(HotSpotResolvedObjectTypeImpl, javaClass, "Ljava/lang/Class;") \
53 end_class \ 53 end_class \
54 start_class(HotSpotResolvedJavaMethodImpl) \ 54 start_class(HotSpotResolvedJavaMethodImpl) \
55 long_field(HotSpotResolvedJavaMethodImpl, metaspaceMethod) \ 55 long_field(HotSpotResolvedJavaMethodImpl, metaspaceMethod) \
257 int_field(HotSpotStackFrameReference, frameNumber) \ 257 int_field(HotSpotStackFrameReference, frameNumber) \
258 int_field(HotSpotStackFrameReference, bci) \ 258 int_field(HotSpotStackFrameReference, bci) \
259 long_field(HotSpotStackFrameReference, metaspaceMethod) \ 259 long_field(HotSpotStackFrameReference, metaspaceMethod) \
260 objArrayOop_field(HotSpotStackFrameReference, locals, "[Ljava/lang/Object;") \ 260 objArrayOop_field(HotSpotStackFrameReference, locals, "[Ljava/lang/Object;") \
261 typeArrayOop_field(HotSpotStackFrameReference, localIsVirtual, "[Z") \ 261 typeArrayOop_field(HotSpotStackFrameReference, localIsVirtual, "[Z") \
262 end_class \
263 start_class(Debug) \
264 static_boolean_field(Debug, ENABLED) \
262 end_class \ 265 end_class \
263 /* end*/ 266 /* end*/
264 267
265 #define START_CLASS(name) \ 268 #define START_CLASS(name) \
266 class name : AllStatic { \ 269 class name : AllStatic { \
292 #define LONG_FIELD(klass, name) FIELD(name, jlong, long_field, EMPTY_CAST) 295 #define LONG_FIELD(klass, name) FIELD(name, jlong, long_field, EMPTY_CAST)
293 #define FLOAT_FIELD(klass, name) FIELD(name, jfloat, float_field, EMPTY_CAST) 296 #define FLOAT_FIELD(klass, name) FIELD(name, jfloat, float_field, EMPTY_CAST)
294 #define OOP_FIELD(klass, name, signature) FIELD(name, oop, obj_field, EMPTY_CAST) 297 #define OOP_FIELD(klass, name, signature) FIELD(name, oop, obj_field, EMPTY_CAST)
295 #define OBJARRAYOOP_FIELD(klass, name, signature) FIELD(name, objArrayOop, obj_field, (objArrayOop)) 298 #define OBJARRAYOOP_FIELD(klass, name, signature) FIELD(name, objArrayOop, obj_field, (objArrayOop))
296 #define TYPEARRAYOOP_FIELD(klass, name, signature) FIELD(name, typeArrayOop, obj_field, (typeArrayOop)) 299 #define TYPEARRAYOOP_FIELD(klass, name, signature) FIELD(name, typeArrayOop, obj_field, (typeArrayOop))
297 #define STATIC_OOP_FIELD(klassName, name, signature) \ 300 #define STATIC_OOP_FIELD(klassName, name, signature) \
298 static int _##name##_offset; \ 301 static int _##name##_offset; \
299 static oop name() { \ 302 static oop name() { \
300 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \ 303 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \
301 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ 304 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \
302 if (UseCompressedOops) { \ 305 if (UseCompressedOops) { \
303 return oopDesc::load_decode_heap_oop((narrowOop *)addr); \ 306 return oopDesc::load_decode_heap_oop((narrowOop *)addr); \
304 } else { \ 307 } else { \
305 return oopDesc::load_decode_heap_oop((oop*)addr); \ 308 return oopDesc::load_decode_heap_oop((oop*)addr); \
306 } \ 309 } \
307 } \ 310 } \
308 static void set_##name(oop x) { \ 311 static void set_##name(oop x) { \
309 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \ 312 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \
310 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ 313 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \
311 if (UseCompressedOops) { \ 314 if (UseCompressedOops) { \
312 oop_store((narrowOop *)addr, x); \ 315 oop_store((narrowOop *)addr, x); \
313 } else { \ 316 } else { \
314 oop_store((oop*)addr, x); \ 317 oop_store((oop*)addr, x); \
315 } \ 318 } \
316 } 319 }
317 #define STATIC_INT_FIELD(klassName, name) \ 320 #define STATIC_PRIMITIVE_FIELD(klassName, name, typename, jtypename) \
318 static int _##name##_offset; \ 321 static int _##name##_offset; \
319 static int name() { \ 322 static typename name() { \
320 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \ 323 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \
321 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ 324 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \
322 return *((jint *)addr); \ 325 return *((jtypename *)addr); \
323 } \ 326 } \
324 static void set_##name(int x) { \ 327 static void set_##name(typename x) { \
325 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \ 328 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \
326 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \ 329 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \
327 *((jint *)addr) = x; \ 330 *((jtypename *)addr) = x; \
328 } 331 }
329 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_INT_FIELD) 332 #define STATIC_INT_FIELD(klassName, name) STATIC_PRIMITIVE_FIELD(klassName, name, int, jint)
333 #define STATIC_BOOLEAN_FIELD(klassName, name) STATIC_PRIMITIVE_FIELD(klassName, name, bool, jboolean)
334
335 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_INT_FIELD, STATIC_BOOLEAN_FIELD)
330 #undef START_CLASS 336 #undef START_CLASS
331 #undef END_CLASS 337 #undef END_CLASS
332 #undef FIELD 338 #undef FIELD
333 #undef CHAR_FIELD 339 #undef CHAR_FIELD
334 #undef INT_FIELD 340 #undef INT_FIELD
338 #undef OOP_FIELD 344 #undef OOP_FIELD
339 #undef TYPEARRAYOOP_FIELD 345 #undef TYPEARRAYOOP_FIELD
340 #undef OBJARRAYOOP_FIELD 346 #undef OBJARRAYOOP_FIELD
341 #undef STATIC_OOP_FIELD 347 #undef STATIC_OOP_FIELD
342 #undef STATIC_INT_FIELD 348 #undef STATIC_INT_FIELD
349 #undef STATIC_BOOLEAN_FIELD
343 #undef EMPTY_CAST 350 #undef EMPTY_CAST
344 351
345 void compute_offset(int &dest_offset, Klass* klass, const char* name, const char* signature, bool static_field); 352 void compute_offset(int &dest_offset, Klass* klass, const char* name, const char* signature, bool static_field);
346 353
347 #endif // SHARE_VM_GRAAL_GRAAL_JAVA_ACCESS_HPP 354 #endif // SHARE_VM_GRAAL_GRAAL_JAVA_ACCESS_HPP