Mercurial > hg > graal-jvmci-8
comparison src/share/vm/classfile/javaClasses.cpp @ 7462:ade95d680b42
8004728: Add hotspot support for parameter reflection
Summary: Add hotspot support for parameter reflection
Reviewed-by: acorn, jrose, coleenp
Contributed-by: eric.mccorkle@oracle.com
author | coleenp |
---|---|
date | Tue, 08 Jan 2013 14:01:36 -0500 |
parents | 4daebd4cc1dd |
children | 989155e2d07a ed6154d7d259 b14da2e6f2dc |
comparison
equal
deleted
inserted
replaced
7460:6c3f47d964f3 | 7462:ade95d680b42 |
---|---|
2253 // The field is called ConstantPool* in the sun.reflect.ConstantPool class. | 2253 // The field is called ConstantPool* in the sun.reflect.ConstantPool class. |
2254 compute_offset(_oop_offset, k, vmSymbols::ConstantPool_name(), vmSymbols::object_signature()); | 2254 compute_offset(_oop_offset, k, vmSymbols::ConstantPool_name(), vmSymbols::object_signature()); |
2255 } | 2255 } |
2256 } | 2256 } |
2257 | 2257 |
2258 void java_lang_reflect_Parameter::compute_offsets() { | |
2259 Klass* k = SystemDictionary::reflect_Parameter_klass(); | |
2260 if(NULL != k) { | |
2261 compute_offset(name_offset, k, vmSymbols::name_name(), vmSymbols::string_signature()); | |
2262 compute_offset(modifiers_offset, k, vmSymbols::modifiers_name(), vmSymbols::int_signature()); | |
2263 compute_offset(index_offset, k, vmSymbols::index_name(), vmSymbols::int_signature()); | |
2264 compute_offset(executable_offset, k, vmSymbols::executable_name(), vmSymbols::executable_signature()); | |
2265 } | |
2266 } | |
2267 | |
2268 Handle java_lang_reflect_Parameter::create(TRAPS) { | |
2269 assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); | |
2270 Symbol* name = vmSymbols::java_lang_reflect_Parameter(); | |
2271 Klass* k = SystemDictionary::resolve_or_fail(name, true, CHECK_NH); | |
2272 instanceKlassHandle klass (THREAD, k); | |
2273 // Ensure it is initialized | |
2274 klass->initialize(CHECK_NH); | |
2275 return klass->allocate_instance_handle(CHECK_NH); | |
2276 } | |
2277 | |
2278 oop java_lang_reflect_Parameter::name(oop param) { | |
2279 assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); | |
2280 return param->obj_field(name_offset); | |
2281 } | |
2282 | |
2283 void java_lang_reflect_Parameter::set_name(oop param, oop value) { | |
2284 assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); | |
2285 param->obj_field_put(name_offset, value); | |
2286 } | |
2287 | |
2288 int java_lang_reflect_Parameter::modifiers(oop param) { | |
2289 assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); | |
2290 return param->int_field(modifiers_offset); | |
2291 } | |
2292 | |
2293 void java_lang_reflect_Parameter::set_modifiers(oop param, int value) { | |
2294 assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); | |
2295 param->int_field_put(modifiers_offset, value); | |
2296 } | |
2297 | |
2298 int java_lang_reflect_Parameter::index(oop param) { | |
2299 assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); | |
2300 return param->int_field(index_offset); | |
2301 } | |
2302 | |
2303 void java_lang_reflect_Parameter::set_index(oop param, int value) { | |
2304 assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); | |
2305 param->int_field_put(index_offset, value); | |
2306 } | |
2307 | |
2308 oop java_lang_reflect_Parameter::executable(oop param) { | |
2309 assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); | |
2310 return param->obj_field(executable_offset); | |
2311 } | |
2312 | |
2313 void java_lang_reflect_Parameter::set_executable(oop param, oop value) { | |
2314 assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); | |
2315 param->obj_field_put(executable_offset, value); | |
2316 } | |
2317 | |
2258 | 2318 |
2259 Handle sun_reflect_ConstantPool::create(TRAPS) { | 2319 Handle sun_reflect_ConstantPool::create(TRAPS) { |
2260 assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); | 2320 assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); |
2261 Klass* k = SystemDictionary::reflect_ConstantPool_klass(); | 2321 Klass* k = SystemDictionary::reflect_ConstantPool_klass(); |
2262 instanceKlassHandle klass (THREAD, k); | 2322 instanceKlassHandle klass (THREAD, k); |
2926 int java_lang_reflect_Field::slot_offset; | 2986 int java_lang_reflect_Field::slot_offset; |
2927 int java_lang_reflect_Field::modifiers_offset; | 2987 int java_lang_reflect_Field::modifiers_offset; |
2928 int java_lang_reflect_Field::signature_offset; | 2988 int java_lang_reflect_Field::signature_offset; |
2929 int java_lang_reflect_Field::annotations_offset; | 2989 int java_lang_reflect_Field::annotations_offset; |
2930 int java_lang_reflect_Field::type_annotations_offset; | 2990 int java_lang_reflect_Field::type_annotations_offset; |
2991 int java_lang_reflect_Parameter::name_offset; | |
2992 int java_lang_reflect_Parameter::modifiers_offset; | |
2993 int java_lang_reflect_Parameter::index_offset; | |
2994 int java_lang_reflect_Parameter::executable_offset; | |
2931 int java_lang_boxing_object::value_offset; | 2995 int java_lang_boxing_object::value_offset; |
2932 int java_lang_boxing_object::long_value_offset; | 2996 int java_lang_boxing_object::long_value_offset; |
2933 int java_lang_ref_Reference::referent_offset; | 2997 int java_lang_ref_Reference::referent_offset; |
2934 int java_lang_ref_Reference::queue_offset; | 2998 int java_lang_ref_Reference::queue_offset; |
2935 int java_lang_ref_Reference::next_offset; | 2999 int java_lang_ref_Reference::next_offset; |
3110 } | 3174 } |
3111 if (JDK_Version::is_gte_jdk15x_version()) { | 3175 if (JDK_Version::is_gte_jdk15x_version()) { |
3112 sun_reflect_ConstantPool::compute_offsets(); | 3176 sun_reflect_ConstantPool::compute_offsets(); |
3113 sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets(); | 3177 sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets(); |
3114 } | 3178 } |
3179 if (JDK_Version::is_jdk18x_version()) | |
3180 java_lang_reflect_Parameter::compute_offsets(); | |
3115 | 3181 |
3116 // generated interpreter code wants to know about the offsets we just computed: | 3182 // generated interpreter code wants to know about the offsets we just computed: |
3117 AbstractAssembler::update_delayed_values(); | 3183 AbstractAssembler::update_delayed_values(); |
3118 } | 3184 } |
3119 | 3185 |