313 #define END_CLASS }; |
313 #define END_CLASS }; |
314 |
314 |
315 #define FIELD(name, type, accessor, cast) \ |
315 #define FIELD(name, type, accessor, cast) \ |
316 static int _##name##_offset; \ |
316 static int _##name##_offset; \ |
317 static type name(oop obj) { check(obj, #name, _##name##_offset); return cast obj->accessor(_##name##_offset); } \ |
317 static type name(oop obj) { check(obj, #name, _##name##_offset); return cast obj->accessor(_##name##_offset); } \ |
318 static type name(Handle& obj) { check(obj(), #name, _##name##_offset); return cast obj->accessor(_##name##_offset); } \ |
318 static type name(Handle obj) { check(obj(), #name, _##name##_offset); return cast obj->accessor(_##name##_offset); } \ |
319 static type name(jobject obj) { check(JNIHandles::resolve(obj), #name, _##name##_offset); return cast JNIHandles::resolve(obj)->accessor(_##name##_offset); } \ |
319 static type name(jobject obj) { check(JNIHandles::resolve(obj), #name, _##name##_offset); return cast JNIHandles::resolve(obj)->accessor(_##name##_offset); } \ |
320 static void set_##name(oop obj, type x) { check(obj, #name, _##name##_offset); obj->accessor##_put(_##name##_offset, x); } \ |
320 static void set_##name(oop obj, type x) { check(obj, #name, _##name##_offset); obj->accessor##_put(_##name##_offset, x); } \ |
321 static void set_##name(Handle& obj, type x) { check(obj(), #name, _##name##_offset); obj->accessor##_put(_##name##_offset, x); } \ |
321 static void set_##name(Handle obj, type x) { check(obj(), #name, _##name##_offset); obj->accessor##_put(_##name##_offset, x); } \ |
322 static void set_##name(jobject obj, type x) { check(JNIHandles::resolve(obj), #name, _##name##_offset); JNIHandles::resolve(obj)->accessor##_put(_##name##_offset, x); } |
322 static void set_##name(jobject obj, type x) { check(JNIHandles::resolve(obj), #name, _##name##_offset); JNIHandles::resolve(obj)->accessor##_put(_##name##_offset, x); } |
323 |
323 |
324 #define EMPTY_CAST |
324 #define EMPTY_CAST |
325 #define CHAR_FIELD(klass, name) FIELD(name, jchar, char_field, EMPTY_CAST) |
325 #define CHAR_FIELD(klass, name) FIELD(name, jchar, char_field, EMPTY_CAST) |
326 #define INT_FIELD(klass, name) FIELD(name, jint, int_field, EMPTY_CAST) |
326 #define INT_FIELD(klass, name) FIELD(name, jint, int_field, EMPTY_CAST) |