--- old/src/share/vm/classfile/javaClasses.cpp 2014-11-07 14:34:11.613593126 -0500 +++ new/src/share/vm/classfile/javaClasses.cpp 2014-11-07 14:34:11.525589997 -0500 @@ -115,7 +115,7 @@ InstanceKlass* ik = InstanceKlass::cast(klass_oop); if (!find_field(ik, name_symbol, signature_symbol, &fd, allow_super)) { ResourceMark rm; - tty->print_cr("Invalid layout of %s at %s", ik->external_name(), name_symbol->as_C_string()); + tty->print_cr("Invalid layout of %s at %s sig %s", ik->external_name(), name_symbol->as_C_string(), signature_symbol->as_C_string()); #ifndef PRODUCT klass_oop->print(); tty->print_cr("all fields:"); @@ -874,11 +874,12 @@ assert(!offsets_computed, "offsets should be initialized only once"); offsets_computed = true; + Thread* THREAD = Thread::current(); Klass* k = SystemDictionary::Class_klass(); + compute_offset(_classData_offset, k, vmSymbols::classData_name(), vmSymbols::object_signature()); // The classRedefinedCount field is only present starting in 1.5, // so don't go fatal. - compute_optional_offset(classRedefinedCount_offset, - k, vmSymbols::classRedefinedCount_name(), vmSymbols::int_signature()); + compute_optional_offset(classRedefinedCount_offset, k, vmSymbols::classRedefinedCount_name(), vmSymbols::int_signature()); // Needs to be optional because the old build runs Queens during bootstrapping // and jdk8-9 doesn't have coordinated pushes yet. @@ -898,6 +899,10 @@ CLASS_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET); } +oop java_lang_Class::classData(oop obj) { + return obj->obj_field_volatile(_classData_offset); +} + int java_lang_Class::classRedefinedCount(oop the_class_mirror) { if (classRedefinedCount_offset == -1) { // If we don't have an offset for it then just return -1 as a marker. @@ -916,6 +921,22 @@ the_class_mirror->int_field_put(classRedefinedCount_offset, value); } +int java_lang_invoke_MemberName_ClassData::_publishedToVM_offset; + +void java_lang_invoke_MemberName_ClassData::compute_offsets() { + Thread* THREAD = Thread::current(); + Klass* k = SystemDictionary::MemberName_ClassData_klass(); + compute_offset(_publishedToVM_offset, k, vmSymbols::publishedToVM_name(), vmSymbols::java_lang_invoke_MemberName_signature()); +} + +bool java_lang_invoke_MemberName_ClassData::is_instance(oop obj) { + return obj != NULL && obj->klass() == SystemDictionary::MemberName_ClassData_klass(); +} + +oop java_lang_invoke_MemberName_ClassData::publishedToVM(oop obj) { + assert(is_instance(obj), err_msg("%s", obj == NULL ? "null" : obj->klass()->external_name())); + return obj->obj_field(_publishedToVM_offset); +} // Note: JDK1.1 and before had a privateInfo_offset field which was used for the // platform thread structure, and a eetop offset which was used for thread @@ -2700,6 +2721,7 @@ int java_lang_invoke_MemberName::_name_offset; int java_lang_invoke_MemberName::_type_offset; int java_lang_invoke_MemberName::_flags_offset; +int java_lang_invoke_MemberName::_next_offset; int java_lang_invoke_MemberName::_vmtarget_offset; int java_lang_invoke_MemberName::_vmloader_offset; int java_lang_invoke_MemberName::_vmindex_offset; @@ -2721,6 +2743,7 @@ compute_offset(_name_offset, klass_oop, vmSymbols::name_name(), vmSymbols::string_signature()); compute_offset(_type_offset, klass_oop, vmSymbols::type_name(), vmSymbols::object_signature()); compute_offset(_flags_offset, klass_oop, vmSymbols::flags_name(), vmSymbols::int_signature()); + compute_offset(_next_offset, klass_oop, vmSymbols::next_name(), vmSymbols::java_lang_invoke_MemberName_signature()); MEMBERNAME_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET); } } @@ -2792,6 +2815,11 @@ mname->int_field_put(_flags_offset, flags); } +oop java_lang_invoke_MemberName::next(oop mname) { + assert(is_instance(mname), "wrong type"); + return mname->obj_field(_next_offset); +} + Metadata* java_lang_invoke_MemberName::vmtarget(oop mname) { assert(is_instance(mname), "wrong type"); return (Metadata*)mname->address_field(_vmtarget_offset); @@ -3130,13 +3158,18 @@ int java_lang_Class::_component_mirror_offset; int java_lang_Class::_init_lock_offset; int java_lang_Class::_signers_offset; +int java_lang_Class::_classData_offset; + GrowableArray* java_lang_Class::_fixup_mirror_list = NULL; + int java_lang_Throwable::backtrace_offset; int java_lang_Throwable::detailMessage_offset; int java_lang_Throwable::cause_offset; int java_lang_Throwable::stackTrace_offset; int java_lang_Throwable::static_unassigned_stacktrace_offset; + int java_lang_reflect_AccessibleObject::override_offset; + int java_lang_reflect_Method::clazz_offset; int java_lang_reflect_Method::name_offset; int java_lang_reflect_Method::returnType_offset; @@ -3149,6 +3182,7 @@ int java_lang_reflect_Method::parameter_annotations_offset; int java_lang_reflect_Method::annotation_default_offset; int java_lang_reflect_Method::type_annotations_offset; + int java_lang_reflect_Constructor::clazz_offset; int java_lang_reflect_Constructor::parameterTypes_offset; int java_lang_reflect_Constructor::exceptionTypes_offset; @@ -3158,6 +3192,7 @@ int java_lang_reflect_Constructor::annotations_offset; int java_lang_reflect_Constructor::parameter_annotations_offset; int java_lang_reflect_Constructor::type_annotations_offset; + int java_lang_reflect_Field::clazz_offset; int java_lang_reflect_Field::name_offset; int java_lang_reflect_Field::type_offset; @@ -3166,12 +3201,15 @@ int java_lang_reflect_Field::signature_offset; int java_lang_reflect_Field::annotations_offset; int java_lang_reflect_Field::type_annotations_offset; + int java_lang_reflect_Parameter::name_offset; int java_lang_reflect_Parameter::modifiers_offset; int java_lang_reflect_Parameter::index_offset; int java_lang_reflect_Parameter::executable_offset; + int java_lang_boxing_object::value_offset; int java_lang_boxing_object::long_value_offset; + int java_lang_ref_Reference::referent_offset; int java_lang_ref_Reference::queue_offset; int java_lang_ref_Reference::next_offset; @@ -3179,25 +3217,34 @@ int java_lang_ref_Reference::static_lock_offset; int java_lang_ref_Reference::static_pending_offset; int java_lang_ref_Reference::number_of_fake_oop_fields; + int java_lang_ref_SoftReference::timestamp_offset; int java_lang_ref_SoftReference::static_clock_offset; + int java_lang_ClassLoader::parent_offset; + int java_lang_System::static_in_offset; int java_lang_System::static_out_offset; int java_lang_System::static_err_offset; int java_lang_System::static_security_offset; + int java_lang_StackTraceElement::declaringClass_offset; int java_lang_StackTraceElement::methodName_offset; int java_lang_StackTraceElement::fileName_offset; int java_lang_StackTraceElement::lineNumber_offset; + int java_lang_AssertionStatusDirectives::classes_offset; int java_lang_AssertionStatusDirectives::classEnabled_offset; int java_lang_AssertionStatusDirectives::packages_offset; int java_lang_AssertionStatusDirectives::packageEnabled_offset; int java_lang_AssertionStatusDirectives::deflt_offset; + int java_nio_Buffer::_limit_offset; + int java_util_concurrent_locks_AbstractOwnableSynchronizer::_owner_offset = 0; + int sun_reflect_ConstantPool::_oop_offset; + int sun_reflect_UnsafeStaticFieldAccessorImpl::_base_offset; @@ -3335,6 +3382,7 @@ java_lang_invoke_MethodHandle::compute_offsets(); java_lang_invoke_DirectMethodHandle::compute_offsets(); java_lang_invoke_MemberName::compute_offsets(); + java_lang_invoke_MemberName_ClassData::compute_offsets(); java_lang_invoke_LambdaForm::compute_offsets(); java_lang_invoke_MethodType::compute_offsets(); java_lang_invoke_CallSite::compute_offsets();