src/share/vm/classfile/javaClasses.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7071307 Sdiff src/share/vm/classfile

src/share/vm/classfile/javaClasses.cpp

Print this page




2306 
2307 int java_lang_invoke_MethodHandle::_type_offset;
2308 int java_lang_invoke_MethodHandle::_vmtarget_offset;
2309 int java_lang_invoke_MethodHandle::_vmentry_offset;
2310 int java_lang_invoke_MethodHandle::_vmslots_offset;
2311 
2312 int java_lang_invoke_MemberName::_clazz_offset;
2313 int java_lang_invoke_MemberName::_name_offset;
2314 int java_lang_invoke_MemberName::_type_offset;
2315 int java_lang_invoke_MemberName::_flags_offset;
2316 int java_lang_invoke_MemberName::_vmtarget_offset;
2317 int java_lang_invoke_MemberName::_vmindex_offset;
2318 
2319 int java_lang_invoke_DirectMethodHandle::_vmindex_offset;
2320 
2321 int java_lang_invoke_BoundMethodHandle::_argument_offset;
2322 int java_lang_invoke_BoundMethodHandle::_vmargslot_offset;
2323 
2324 int java_lang_invoke_AdapterMethodHandle::_conversion_offset;
2325 


2326 void java_lang_invoke_MethodHandle::compute_offsets() {
2327   klassOop k = SystemDictionary::MethodHandle_klass();
2328   if (k != NULL && EnableInvokeDynamic) {
2329     bool allow_super = false;
2330     compute_offset(_type_offset,      k, vmSymbols::type_name(),      vmSymbols::java_lang_invoke_MethodType_signature(), allow_super);
2331     compute_offset(_vmtarget_offset,  k, vmSymbols::vmtarget_name(),  vmSymbols::object_signature(),                      allow_super);
2332     compute_offset(_vmentry_offset,   k, vmSymbols::vmentry_name(),   vmSymbols::machine_word_signature(),                allow_super);
2333 
2334     // Note:  MH.vmslots (if it is present) is a hoisted copy of MH.type.form.vmslots.
2335     // It is optional pending experiments to keep or toss.
2336     compute_optional_offset(_vmslots_offset, k, vmSymbols::vmslots_name(), vmSymbols::int_signature(), allow_super);
2337   }
2338 }
2339 
2340 void java_lang_invoke_MemberName::compute_offsets() {
2341   klassOop k = SystemDictionary::MemberName_klass();
2342   if (k != NULL && EnableInvokeDynamic) {
2343     compute_offset(_clazz_offset,     k, vmSymbols::clazz_name(),     vmSymbols::class_signature());
2344     compute_offset(_name_offset,      k, vmSymbols::name_name(),      vmSymbols::string_signature());
2345     compute_offset(_type_offset,      k, vmSymbols::type_name(),      vmSymbols::object_signature());


2354   if (k != NULL && EnableInvokeDynamic) {
2355     compute_offset(_vmindex_offset,   k, vmSymbols::vmindex_name(),   vmSymbols::int_signature(),    true);
2356   }
2357 }
2358 
2359 void java_lang_invoke_BoundMethodHandle::compute_offsets() {
2360   klassOop k = SystemDictionary::BoundMethodHandle_klass();
2361   if (k != NULL && EnableInvokeDynamic) {
2362     compute_offset(_vmargslot_offset, k, vmSymbols::vmargslot_name(), vmSymbols::int_signature(),    true);
2363     compute_offset(_argument_offset,  k, vmSymbols::argument_name(),  vmSymbols::object_signature(), true);
2364   }
2365 }
2366 
2367 void java_lang_invoke_AdapterMethodHandle::compute_offsets() {
2368   klassOop k = SystemDictionary::AdapterMethodHandle_klass();
2369   if (k != NULL && EnableInvokeDynamic) {
2370     compute_offset(_conversion_offset, k, vmSymbols::conversion_name(), vmSymbols::int_signature(), true);
2371   }
2372 }
2373 

















2374 oop java_lang_invoke_MethodHandle::type(oop mh) {
2375   return mh->obj_field(_type_offset);
2376 }
2377 
2378 void java_lang_invoke_MethodHandle::set_type(oop mh, oop mtype) {
2379   mh->obj_field_put(_type_offset, mtype);
2380 }
2381 
2382 int java_lang_invoke_MethodHandle::vmslots(oop mh) {
2383   int vmslots_offset = _vmslots_offset;
2384   if (vmslots_offset != 0) {
2385 #ifdef ASSERT
2386     int x = mh->int_field(vmslots_offset);
2387     int y = compute_vmslots(mh);
2388     assert(x == y, "correct hoisted value");
2389 #endif
2390     return mh->int_field(vmslots_offset);
2391   } else {
2392     return compute_vmslots(mh);
2393   }


3014   java_lang_AssertionStatusDirectives::deflt_offset = java_lang_AssertionStatusDirectives::hc_deflt_offset * x + header;
3015 
3016 }
3017 
3018 
3019 // Compute non-hard-coded field offsets of all the classes in this file
3020 void JavaClasses::compute_offsets() {
3021 
3022   java_lang_Class::compute_offsets();
3023   java_lang_Thread::compute_offsets();
3024   java_lang_ThreadGroup::compute_offsets();
3025   if (EnableInvokeDynamic) {
3026     java_lang_invoke_MethodHandle::compute_offsets();
3027     java_lang_invoke_MemberName::compute_offsets();
3028     java_lang_invoke_DirectMethodHandle::compute_offsets();
3029     java_lang_invoke_BoundMethodHandle::compute_offsets();
3030     java_lang_invoke_AdapterMethodHandle::compute_offsets();
3031     java_lang_invoke_MethodType::compute_offsets();
3032     java_lang_invoke_MethodTypeForm::compute_offsets();
3033     java_lang_invoke_CallSite::compute_offsets();

3034   }
3035   java_security_AccessControlContext::compute_offsets();
3036   // Initialize reflection classes. The layouts of these classes
3037   // changed with the new reflection implementation in JDK 1.4, and
3038   // since the Universe doesn't know what JDK version it is until this
3039   // point we defer computation of these offsets until now.
3040   java_lang_reflect_AccessibleObject::compute_offsets();
3041   java_lang_reflect_Method::compute_offsets();
3042   java_lang_reflect_Constructor::compute_offsets();
3043   java_lang_reflect_Field::compute_offsets();
3044   if (JDK_Version::is_gte_jdk14x_version()) {
3045     java_nio_Buffer::compute_offsets();
3046   }
3047   if (JDK_Version::is_gte_jdk15x_version()) {
3048     sun_reflect_ConstantPool::compute_offsets();
3049     sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();
3050   }
3051   sun_misc_AtomicLongCSImpl::compute_offsets();
3052 
3053   // generated interpreter code wants to know about the offsets we just computed:




2306 
2307 int java_lang_invoke_MethodHandle::_type_offset;
2308 int java_lang_invoke_MethodHandle::_vmtarget_offset;
2309 int java_lang_invoke_MethodHandle::_vmentry_offset;
2310 int java_lang_invoke_MethodHandle::_vmslots_offset;
2311 
2312 int java_lang_invoke_MemberName::_clazz_offset;
2313 int java_lang_invoke_MemberName::_name_offset;
2314 int java_lang_invoke_MemberName::_type_offset;
2315 int java_lang_invoke_MemberName::_flags_offset;
2316 int java_lang_invoke_MemberName::_vmtarget_offset;
2317 int java_lang_invoke_MemberName::_vmindex_offset;
2318 
2319 int java_lang_invoke_DirectMethodHandle::_vmindex_offset;
2320 
2321 int java_lang_invoke_BoundMethodHandle::_argument_offset;
2322 int java_lang_invoke_BoundMethodHandle::_vmargslot_offset;
2323 
2324 int java_lang_invoke_AdapterMethodHandle::_conversion_offset;
2325 
2326 int java_lang_invoke_CountingMethodHandle::_vmcount_offset;
2327 
2328 void java_lang_invoke_MethodHandle::compute_offsets() {
2329   klassOop k = SystemDictionary::MethodHandle_klass();
2330   if (k != NULL && EnableInvokeDynamic) {
2331     bool allow_super = false;
2332     compute_offset(_type_offset,      k, vmSymbols::type_name(),      vmSymbols::java_lang_invoke_MethodType_signature(), allow_super);
2333     compute_offset(_vmtarget_offset,  k, vmSymbols::vmtarget_name(),  vmSymbols::object_signature(),                      allow_super);
2334     compute_offset(_vmentry_offset,   k, vmSymbols::vmentry_name(),   vmSymbols::machine_word_signature(),                allow_super);
2335 
2336     // Note:  MH.vmslots (if it is present) is a hoisted copy of MH.type.form.vmslots.
2337     // It is optional pending experiments to keep or toss.
2338     compute_optional_offset(_vmslots_offset, k, vmSymbols::vmslots_name(), vmSymbols::int_signature(), allow_super);
2339   }
2340 }
2341 
2342 void java_lang_invoke_MemberName::compute_offsets() {
2343   klassOop k = SystemDictionary::MemberName_klass();
2344   if (k != NULL && EnableInvokeDynamic) {
2345     compute_offset(_clazz_offset,     k, vmSymbols::clazz_name(),     vmSymbols::class_signature());
2346     compute_offset(_name_offset,      k, vmSymbols::name_name(),      vmSymbols::string_signature());
2347     compute_offset(_type_offset,      k, vmSymbols::type_name(),      vmSymbols::object_signature());


2356   if (k != NULL && EnableInvokeDynamic) {
2357     compute_offset(_vmindex_offset,   k, vmSymbols::vmindex_name(),   vmSymbols::int_signature(),    true);
2358   }
2359 }
2360 
2361 void java_lang_invoke_BoundMethodHandle::compute_offsets() {
2362   klassOop k = SystemDictionary::BoundMethodHandle_klass();
2363   if (k != NULL && EnableInvokeDynamic) {
2364     compute_offset(_vmargslot_offset, k, vmSymbols::vmargslot_name(), vmSymbols::int_signature(),    true);
2365     compute_offset(_argument_offset,  k, vmSymbols::argument_name(),  vmSymbols::object_signature(), true);
2366   }
2367 }
2368 
2369 void java_lang_invoke_AdapterMethodHandle::compute_offsets() {
2370   klassOop k = SystemDictionary::AdapterMethodHandle_klass();
2371   if (k != NULL && EnableInvokeDynamic) {
2372     compute_offset(_conversion_offset, k, vmSymbols::conversion_name(), vmSymbols::int_signature(), true);
2373   }
2374 }
2375 
2376 void java_lang_invoke_CountingMethodHandle::compute_offsets() {
2377   klassOop k = SystemDictionary::CountingMethodHandle_klass();
2378   if (k != NULL && EnableInvokeDynamic) {
2379     compute_offset(_vmcount_offset, k, vmSymbols::vmcount_name(), vmSymbols::int_signature(), true);
2380   }
2381 }
2382 
2383 int java_lang_invoke_CountingMethodHandle::vmcount(oop mh) {
2384   assert(is_instance(mh), "CMH only");
2385   return mh->int_field(_vmcount_offset);
2386 }
2387 
2388 void java_lang_invoke_CountingMethodHandle::set_vmcount(oop mh, int count) {
2389   assert(is_instance(mh), "CMH only");
2390   mh->int_field_put(_vmcount_offset, count);
2391 }
2392 
2393 oop java_lang_invoke_MethodHandle::type(oop mh) {
2394   return mh->obj_field(_type_offset);
2395 }
2396 
2397 void java_lang_invoke_MethodHandle::set_type(oop mh, oop mtype) {
2398   mh->obj_field_put(_type_offset, mtype);
2399 }
2400 
2401 int java_lang_invoke_MethodHandle::vmslots(oop mh) {
2402   int vmslots_offset = _vmslots_offset;
2403   if (vmslots_offset != 0) {
2404 #ifdef ASSERT
2405     int x = mh->int_field(vmslots_offset);
2406     int y = compute_vmslots(mh);
2407     assert(x == y, "correct hoisted value");
2408 #endif
2409     return mh->int_field(vmslots_offset);
2410   } else {
2411     return compute_vmslots(mh);
2412   }


3033   java_lang_AssertionStatusDirectives::deflt_offset = java_lang_AssertionStatusDirectives::hc_deflt_offset * x + header;
3034 
3035 }
3036 
3037 
3038 // Compute non-hard-coded field offsets of all the classes in this file
3039 void JavaClasses::compute_offsets() {
3040 
3041   java_lang_Class::compute_offsets();
3042   java_lang_Thread::compute_offsets();
3043   java_lang_ThreadGroup::compute_offsets();
3044   if (EnableInvokeDynamic) {
3045     java_lang_invoke_MethodHandle::compute_offsets();
3046     java_lang_invoke_MemberName::compute_offsets();
3047     java_lang_invoke_DirectMethodHandle::compute_offsets();
3048     java_lang_invoke_BoundMethodHandle::compute_offsets();
3049     java_lang_invoke_AdapterMethodHandle::compute_offsets();
3050     java_lang_invoke_MethodType::compute_offsets();
3051     java_lang_invoke_MethodTypeForm::compute_offsets();
3052     java_lang_invoke_CallSite::compute_offsets();
3053     java_lang_invoke_CountingMethodHandle::compute_offsets();
3054   }
3055   java_security_AccessControlContext::compute_offsets();
3056   // Initialize reflection classes. The layouts of these classes
3057   // changed with the new reflection implementation in JDK 1.4, and
3058   // since the Universe doesn't know what JDK version it is until this
3059   // point we defer computation of these offsets until now.
3060   java_lang_reflect_AccessibleObject::compute_offsets();
3061   java_lang_reflect_Method::compute_offsets();
3062   java_lang_reflect_Constructor::compute_offsets();
3063   java_lang_reflect_Field::compute_offsets();
3064   if (JDK_Version::is_gte_jdk14x_version()) {
3065     java_nio_Buffer::compute_offsets();
3066   }
3067   if (JDK_Version::is_gte_jdk15x_version()) {
3068     sun_reflect_ConstantPool::compute_offsets();
3069     sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();
3070   }
3071   sun_misc_AtomicLongCSImpl::compute_offsets();
3072 
3073   // generated interpreter code wants to know about the offsets we just computed:


src/share/vm/classfile/javaClasses.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File