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

src/share/vm/classfile/javaClasses.cpp

Print this page




2305 int java_lang_invoke_MethodHandle::_vmtarget_offset;
2306 int java_lang_invoke_MethodHandle::_vmentry_offset;
2307 int java_lang_invoke_MethodHandle::_vmslots_offset;
2308 
2309 int java_lang_invoke_MemberName::_clazz_offset;
2310 int java_lang_invoke_MemberName::_name_offset;
2311 int java_lang_invoke_MemberName::_type_offset;
2312 int java_lang_invoke_MemberName::_flags_offset;
2313 int java_lang_invoke_MemberName::_vmtarget_offset;
2314 int java_lang_invoke_MemberName::_vmindex_offset;
2315 
2316 int java_lang_invoke_DirectMethodHandle::_vmindex_offset;
2317 
2318 int java_lang_invoke_BoundMethodHandle::_argument_offset;
2319 int java_lang_invoke_BoundMethodHandle::_vmargslot_offset;
2320 
2321 int java_lang_invoke_AdapterMethodHandle::_conversion_offset;
2322 
2323 void java_lang_invoke_MethodHandle::compute_offsets() {
2324   klassOop k = SystemDictionary::MethodHandle_klass();
2325   if (k != NULL && EnableMethodHandles) {
2326     bool allow_super = false;
2327     if (AllowTransitionalJSR292)  allow_super = true;  // temporary, to access java.dyn.MethodHandleImpl
2328     compute_offset(_type_offset,      k, vmSymbols::type_name(),      vmSymbols::java_lang_invoke_MethodType_signature(), allow_super);
2329     compute_offset(_vmtarget_offset,  k, vmSymbols::vmtarget_name(),  vmSymbols::object_signature(),                      allow_super);
2330     compute_offset(_vmentry_offset,   k, vmSymbols::vmentry_name(),   vmSymbols::machine_word_signature(),                allow_super);
2331 
2332     // Note:  MH.vmslots (if it is present) is a hoisted copy of MH.type.form.vmslots.
2333     // It is optional pending experiments to keep or toss.
2334     compute_optional_offset(_vmslots_offset, k, vmSymbols::vmslots_name(), vmSymbols::int_signature(), allow_super);
2335   }
2336 }
2337 
2338 void java_lang_invoke_MemberName::compute_offsets() {
2339   klassOop k = SystemDictionary::MemberName_klass();
2340   if (k != NULL && EnableMethodHandles) {
2341     compute_offset(_clazz_offset,     k, vmSymbols::clazz_name(),     vmSymbols::class_signature());
2342     compute_offset(_name_offset,      k, vmSymbols::name_name(),      vmSymbols::string_signature());
2343     compute_offset(_type_offset,      k, vmSymbols::type_name(),      vmSymbols::object_signature());
2344     compute_offset(_flags_offset,     k, vmSymbols::flags_name(),     vmSymbols::int_signature());
2345     compute_offset(_vmtarget_offset,  k, vmSymbols::vmtarget_name(),  vmSymbols::object_signature());
2346     compute_offset(_vmindex_offset,   k, vmSymbols::vmindex_name(),   vmSymbols::int_signature());
2347   }
2348 }
2349 
2350 void java_lang_invoke_DirectMethodHandle::compute_offsets() {
2351   klassOop k = SystemDictionary::DirectMethodHandle_klass();
2352   if (k != NULL && EnableMethodHandles) {
2353     compute_offset(_vmindex_offset,   k, vmSymbols::vmindex_name(),   vmSymbols::int_signature(),    true);
2354   }
2355 }
2356 
2357 void java_lang_invoke_BoundMethodHandle::compute_offsets() {
2358   klassOop k = SystemDictionary::BoundMethodHandle_klass();
2359   if (k != NULL && EnableMethodHandles) {
2360     compute_offset(_vmargslot_offset, k, vmSymbols::vmargslot_name(), vmSymbols::int_signature(),    true);
2361     compute_offset(_argument_offset,  k, vmSymbols::argument_name(),  vmSymbols::object_signature(), true);
2362   }
2363 }
2364 
2365 void java_lang_invoke_AdapterMethodHandle::compute_offsets() {
2366   klassOop k = SystemDictionary::AdapterMethodHandle_klass();
2367   if (k != NULL && EnableMethodHandles) {
2368     compute_offset(_conversion_offset, k, vmSymbols::conversion_name(), vmSymbols::int_signature(), true);
2369   }
2370 }
2371 
2372 oop java_lang_invoke_MethodHandle::type(oop mh) {
2373   return mh->obj_field(_type_offset);
2374 }
2375 
2376 void java_lang_invoke_MethodHandle::set_type(oop mh, oop mtype) {
2377   mh->obj_field_put(_type_offset, mtype);
2378 }
2379 
2380 int java_lang_invoke_MethodHandle::vmslots(oop mh) {
2381   int vmslots_offset = _vmslots_offset;
2382   if (vmslots_offset != 0) {
2383 #ifdef ASSERT
2384     int x = mh->int_field(vmslots_offset);
2385     int y = compute_vmslots(mh);
2386     assert(x == y, "correct hoisted value");
2387 #endif


2965   // java_lang_StackTraceElement
2966   java_lang_StackTraceElement::declaringClass_offset = java_lang_StackTraceElement::hc_declaringClass_offset  * x + header;
2967   java_lang_StackTraceElement::methodName_offset = java_lang_StackTraceElement::hc_methodName_offset * x + header;
2968   java_lang_StackTraceElement::fileName_offset   = java_lang_StackTraceElement::hc_fileName_offset   * x + header;
2969   java_lang_StackTraceElement::lineNumber_offset = java_lang_StackTraceElement::hc_lineNumber_offset * x + header;
2970   java_lang_AssertionStatusDirectives::classes_offset = java_lang_AssertionStatusDirectives::hc_classes_offset * x + header;
2971   java_lang_AssertionStatusDirectives::classEnabled_offset = java_lang_AssertionStatusDirectives::hc_classEnabled_offset * x + header;
2972   java_lang_AssertionStatusDirectives::packages_offset = java_lang_AssertionStatusDirectives::hc_packages_offset * x + header;
2973   java_lang_AssertionStatusDirectives::packageEnabled_offset = java_lang_AssertionStatusDirectives::hc_packageEnabled_offset * x + header;
2974   java_lang_AssertionStatusDirectives::deflt_offset = java_lang_AssertionStatusDirectives::hc_deflt_offset * x + header;
2975 
2976 }
2977 
2978 
2979 // Compute non-hard-coded field offsets of all the classes in this file
2980 void JavaClasses::compute_offsets() {
2981 
2982   java_lang_Class::compute_offsets();
2983   java_lang_Thread::compute_offsets();
2984   java_lang_ThreadGroup::compute_offsets();
2985   if (EnableMethodHandles) {
2986     java_lang_invoke_MethodHandle::compute_offsets();
2987     java_lang_invoke_MemberName::compute_offsets();
2988     java_lang_invoke_DirectMethodHandle::compute_offsets();
2989     java_lang_invoke_BoundMethodHandle::compute_offsets();
2990     java_lang_invoke_AdapterMethodHandle::compute_offsets();
2991     java_lang_invoke_MethodType::compute_offsets();
2992     java_lang_invoke_MethodTypeForm::compute_offsets();
2993   }
2994   if (EnableInvokeDynamic) {
2995     java_lang_invoke_CallSite::compute_offsets();
2996   }
2997   java_security_AccessControlContext::compute_offsets();
2998   // Initialize reflection classes. The layouts of these classes
2999   // changed with the new reflection implementation in JDK 1.4, and
3000   // since the Universe doesn't know what JDK version it is until this
3001   // point we defer computation of these offsets until now.
3002   java_lang_reflect_AccessibleObject::compute_offsets();
3003   java_lang_reflect_Method::compute_offsets();
3004   java_lang_reflect_Constructor::compute_offsets();
3005   java_lang_reflect_Field::compute_offsets();
3006   if (JDK_Version::is_gte_jdk14x_version()) {
3007     java_nio_Buffer::compute_offsets();
3008   }
3009   if (JDK_Version::is_gte_jdk15x_version()) {
3010     sun_reflect_ConstantPool::compute_offsets();
3011     sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();
3012   }
3013   sun_misc_AtomicLongCSImpl::compute_offsets();
3014 




2305 int java_lang_invoke_MethodHandle::_vmtarget_offset;
2306 int java_lang_invoke_MethodHandle::_vmentry_offset;
2307 int java_lang_invoke_MethodHandle::_vmslots_offset;
2308 
2309 int java_lang_invoke_MemberName::_clazz_offset;
2310 int java_lang_invoke_MemberName::_name_offset;
2311 int java_lang_invoke_MemberName::_type_offset;
2312 int java_lang_invoke_MemberName::_flags_offset;
2313 int java_lang_invoke_MemberName::_vmtarget_offset;
2314 int java_lang_invoke_MemberName::_vmindex_offset;
2315 
2316 int java_lang_invoke_DirectMethodHandle::_vmindex_offset;
2317 
2318 int java_lang_invoke_BoundMethodHandle::_argument_offset;
2319 int java_lang_invoke_BoundMethodHandle::_vmargslot_offset;
2320 
2321 int java_lang_invoke_AdapterMethodHandle::_conversion_offset;
2322 
2323 void java_lang_invoke_MethodHandle::compute_offsets() {
2324   klassOop k = SystemDictionary::MethodHandle_klass();
2325   if (k != NULL && EnableInvokeDynamic) {
2326     bool allow_super = false;
2327     if (AllowTransitionalJSR292)  allow_super = true;  // temporary, to access java.dyn.MethodHandleImpl
2328     compute_offset(_type_offset,      k, vmSymbols::type_name(),      vmSymbols::java_lang_invoke_MethodType_signature(), allow_super);
2329     compute_offset(_vmtarget_offset,  k, vmSymbols::vmtarget_name(),  vmSymbols::object_signature(),                      allow_super);
2330     compute_offset(_vmentry_offset,   k, vmSymbols::vmentry_name(),   vmSymbols::machine_word_signature(),                allow_super);
2331 
2332     // Note:  MH.vmslots (if it is present) is a hoisted copy of MH.type.form.vmslots.
2333     // It is optional pending experiments to keep or toss.
2334     compute_optional_offset(_vmslots_offset, k, vmSymbols::vmslots_name(), vmSymbols::int_signature(), allow_super);
2335   }
2336 }
2337 
2338 void java_lang_invoke_MemberName::compute_offsets() {
2339   klassOop k = SystemDictionary::MemberName_klass();
2340   if (k != NULL && EnableInvokeDynamic) {
2341     compute_offset(_clazz_offset,     k, vmSymbols::clazz_name(),     vmSymbols::class_signature());
2342     compute_offset(_name_offset,      k, vmSymbols::name_name(),      vmSymbols::string_signature());
2343     compute_offset(_type_offset,      k, vmSymbols::type_name(),      vmSymbols::object_signature());
2344     compute_offset(_flags_offset,     k, vmSymbols::flags_name(),     vmSymbols::int_signature());
2345     compute_offset(_vmtarget_offset,  k, vmSymbols::vmtarget_name(),  vmSymbols::object_signature());
2346     compute_offset(_vmindex_offset,   k, vmSymbols::vmindex_name(),   vmSymbols::int_signature());
2347   }
2348 }
2349 
2350 void java_lang_invoke_DirectMethodHandle::compute_offsets() {
2351   klassOop k = SystemDictionary::DirectMethodHandle_klass();
2352   if (k != NULL && EnableInvokeDynamic) {
2353     compute_offset(_vmindex_offset,   k, vmSymbols::vmindex_name(),   vmSymbols::int_signature(),    true);
2354   }
2355 }
2356 
2357 void java_lang_invoke_BoundMethodHandle::compute_offsets() {
2358   klassOop k = SystemDictionary::BoundMethodHandle_klass();
2359   if (k != NULL && EnableInvokeDynamic) {
2360     compute_offset(_vmargslot_offset, k, vmSymbols::vmargslot_name(), vmSymbols::int_signature(),    true);
2361     compute_offset(_argument_offset,  k, vmSymbols::argument_name(),  vmSymbols::object_signature(), true);
2362   }
2363 }
2364 
2365 void java_lang_invoke_AdapterMethodHandle::compute_offsets() {
2366   klassOop k = SystemDictionary::AdapterMethodHandle_klass();
2367   if (k != NULL && EnableInvokeDynamic) {
2368     compute_offset(_conversion_offset, k, vmSymbols::conversion_name(), vmSymbols::int_signature(), true);
2369   }
2370 }
2371 
2372 oop java_lang_invoke_MethodHandle::type(oop mh) {
2373   return mh->obj_field(_type_offset);
2374 }
2375 
2376 void java_lang_invoke_MethodHandle::set_type(oop mh, oop mtype) {
2377   mh->obj_field_put(_type_offset, mtype);
2378 }
2379 
2380 int java_lang_invoke_MethodHandle::vmslots(oop mh) {
2381   int vmslots_offset = _vmslots_offset;
2382   if (vmslots_offset != 0) {
2383 #ifdef ASSERT
2384     int x = mh->int_field(vmslots_offset);
2385     int y = compute_vmslots(mh);
2386     assert(x == y, "correct hoisted value");
2387 #endif


2965   // java_lang_StackTraceElement
2966   java_lang_StackTraceElement::declaringClass_offset = java_lang_StackTraceElement::hc_declaringClass_offset  * x + header;
2967   java_lang_StackTraceElement::methodName_offset = java_lang_StackTraceElement::hc_methodName_offset * x + header;
2968   java_lang_StackTraceElement::fileName_offset   = java_lang_StackTraceElement::hc_fileName_offset   * x + header;
2969   java_lang_StackTraceElement::lineNumber_offset = java_lang_StackTraceElement::hc_lineNumber_offset * x + header;
2970   java_lang_AssertionStatusDirectives::classes_offset = java_lang_AssertionStatusDirectives::hc_classes_offset * x + header;
2971   java_lang_AssertionStatusDirectives::classEnabled_offset = java_lang_AssertionStatusDirectives::hc_classEnabled_offset * x + header;
2972   java_lang_AssertionStatusDirectives::packages_offset = java_lang_AssertionStatusDirectives::hc_packages_offset * x + header;
2973   java_lang_AssertionStatusDirectives::packageEnabled_offset = java_lang_AssertionStatusDirectives::hc_packageEnabled_offset * x + header;
2974   java_lang_AssertionStatusDirectives::deflt_offset = java_lang_AssertionStatusDirectives::hc_deflt_offset * x + header;
2975 
2976 }
2977 
2978 
2979 // Compute non-hard-coded field offsets of all the classes in this file
2980 void JavaClasses::compute_offsets() {
2981 
2982   java_lang_Class::compute_offsets();
2983   java_lang_Thread::compute_offsets();
2984   java_lang_ThreadGroup::compute_offsets();
2985   if (EnableInvokeDynamic) {
2986     java_lang_invoke_MethodHandle::compute_offsets();
2987     java_lang_invoke_MemberName::compute_offsets();
2988     java_lang_invoke_DirectMethodHandle::compute_offsets();
2989     java_lang_invoke_BoundMethodHandle::compute_offsets();
2990     java_lang_invoke_AdapterMethodHandle::compute_offsets();
2991     java_lang_invoke_MethodType::compute_offsets();
2992     java_lang_invoke_MethodTypeForm::compute_offsets();


2993     java_lang_invoke_CallSite::compute_offsets();
2994   }
2995   java_security_AccessControlContext::compute_offsets();
2996   // Initialize reflection classes. The layouts of these classes
2997   // changed with the new reflection implementation in JDK 1.4, and
2998   // since the Universe doesn't know what JDK version it is until this
2999   // point we defer computation of these offsets until now.
3000   java_lang_reflect_AccessibleObject::compute_offsets();
3001   java_lang_reflect_Method::compute_offsets();
3002   java_lang_reflect_Constructor::compute_offsets();
3003   java_lang_reflect_Field::compute_offsets();
3004   if (JDK_Version::is_gte_jdk14x_version()) {
3005     java_nio_Buffer::compute_offsets();
3006   }
3007   if (JDK_Version::is_gte_jdk15x_version()) {
3008     sun_reflect_ConstantPool::compute_offsets();
3009     sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();
3010   }
3011   sun_misc_AtomicLongCSImpl::compute_offsets();
3012 


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