comparison src/share/vm/graal/graalJavaAccess.hpp @ 3685:5c8fc9f05960

Merge
author Lukas Stadler <lukas.stadler@jku.at>
date Fri, 18 Nov 2011 13:34:10 +0100
parents 6c04a4f268e5 e0bbc6b1c4a1
children 342a54994e05
comparison
equal deleted inserted replaced
3684:1976ebe361c2 3685:5c8fc9f05960
238 #define END_CLASS }; 238 #define END_CLASS };
239 239
240 #define FIELD(name, type, accessor) \ 240 #define FIELD(name, type, accessor) \
241 static int _##name##_offset; \ 241 static int _##name##_offset; \
242 static type name(oop obj) { check(obj); return obj->accessor(_##name##_offset); } \ 242 static type name(oop obj) { check(obj); return obj->accessor(_##name##_offset); } \
243 static type name(Handle obj) { check(obj()); return obj->accessor(_##name##_offset); } \ 243 static type name(Handle& obj) { check(obj()); return obj->accessor(_##name##_offset); } \
244 static type name(jobject obj) { check(JNIHandles::resolve(obj)); return JNIHandles::resolve(obj)->accessor(_##name##_offset); } \ 244 static type name(jobject obj) { check(JNIHandles::resolve(obj)); return JNIHandles::resolve(obj)->accessor(_##name##_offset); } \
245 static void set_##name(oop obj, type x) { check(obj); obj->accessor##_put(_##name##_offset, x); } \ 245 static void set_##name(oop obj, type x) { check(obj); obj->accessor##_put(_##name##_offset, x); } \
246 static void set_##name(Handle obj, type x) { check(obj()); obj->accessor##_put(_##name##_offset, x); } \ 246 static void set_##name(Handle& obj, type x) { check(obj()); obj->accessor##_put(_##name##_offset, x); } \
247 static void set_##name(jobject obj, type x) { check(JNIHandles::resolve(obj)); JNIHandles::resolve(obj)->accessor##_put(_##name##_offset, x); } 247 static void set_##name(jobject obj, type x) { check(JNIHandles::resolve(obj)); JNIHandles::resolve(obj)->accessor##_put(_##name##_offset, x); }
248 248
249 #define CHAR_FIELD(klass, name) FIELD(name, jchar, char_field) 249 #define CHAR_FIELD(klass, name) FIELD(name, jchar, char_field)
250 #define INT_FIELD(klass, name) FIELD(name, jint, int_field) 250 #define INT_FIELD(klass, name) FIELD(name, jint, int_field)
251 #define BOOLEAN_FIELD(klass, name) FIELD(name, jboolean, bool_field) 251 #define BOOLEAN_FIELD(klass, name) FIELD(name, jboolean, bool_field)
265 } \ 265 } \
266 static void set_##name(oop x) { \ 266 static void set_##name(oop x) { \
267 instanceKlass* ik = instanceKlass::cast(klassName::klass()); \ 267 instanceKlass* ik = instanceKlass::cast(klassName::klass()); \
268 address addr = ik->static_field_addr(_##name##_offset - instanceMirrorKlass::offset_of_static_fields()); \ 268 address addr = ik->static_field_addr(_##name##_offset - instanceMirrorKlass::offset_of_static_fields()); \
269 if (UseCompressedOops) { \ 269 if (UseCompressedOops) { \
270 oopDesc::encode_store_heap_oop((narrowOop *)addr, x); \ 270 oop_store((narrowOop *)addr, x); \
271 } else { \ 271 } else { \
272 oopDesc::encode_store_heap_oop((oop*)addr, x); \ 272 oop_store((oop*)addr, x); \
273 } \ 273 } \
274 } 274 }
275 COMPILER_CLASSES_DO(START_CLASS, END_CLASS, CHAR_FIELD, INT_FIELD, BOOLEAN_FIELD, LONG_FIELD, FLOAT_FIELD, OOP_FIELD, STATIC_OOP_FIELD) 275 COMPILER_CLASSES_DO(START_CLASS, END_CLASS, CHAR_FIELD, INT_FIELD, BOOLEAN_FIELD, LONG_FIELD, FLOAT_FIELD, OOP_FIELD, STATIC_OOP_FIELD)
276 #undef START_CLASS 276 #undef START_CLASS
277 #undef END_CLASS 277 #undef END_CLASS