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