Mercurial > hg > graal-compiler
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 |