--- old/src/hotspot/share/classfile/javaClasses.cpp 2018-09-28 11:53:02.000000000 -0700 +++ new/src/hotspot/share/classfile/javaClasses.cpp 2018-09-28 11:53:02.000000000 -0700 @@ -2992,18 +2992,15 @@ field->obj_field_put(annotations_offset, value); } -#define CONSTANTPOOL_FIELDS_DO(macro) \ - macro(_oop_offset, k, "constantPoolOop", object_signature, false) void reflect_ConstantPool::compute_offsets() { InstanceKlass* k = SystemDictionary::reflect_ConstantPool_klass(); - // The field is called ConstantPool* in the sun.reflect.ConstantPool class. - CONSTANTPOOL_FIELDS_DO(FIELD_COMPUTE_OFFSET); + CONSTANTPOOL_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET); } #if INCLUDE_CDS void reflect_ConstantPool::serialize_offsets(SerializeClosure* f) { - CONSTANTPOOL_FIELDS_DO(FIELD_SERIALIZE_OFFSET); + CONSTANTPOOL_INJECTED_FIELDS(INJECTED_FIELD_SERIALIZE_OFFSET); } #endif @@ -3147,26 +3144,22 @@ module->address_field_put(_module_entry_offset, (address)module_entry); } -Handle reflect_ConstantPool::create(TRAPS) { +Handle reflect_ConstantPool::create_from_pool(ConstantPool* value, TRAPS) { assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); InstanceKlass* k = SystemDictionary::reflect_ConstantPool_klass(); // Ensure it is initialized k->initialize(CHECK_NH); - return k->allocate_instance_handle(THREAD); -} - - -void reflect_ConstantPool::set_cp(oop reflect, ConstantPool* value) { - assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); + Handle reflect = k->allocate_instance_handle(THREAD); oop mirror = value->pool_holder()->java_mirror(); // Save the mirror to get back the constant pool. - reflect->obj_field_put(_oop_offset, mirror); + reflect->obj_field_put(_constantPoolOop_offset, mirror); + return reflect; } ConstantPool* reflect_ConstantPool::get_cp(oop reflect) { assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem"); - oop mirror = reflect->obj_field(_oop_offset); + oop mirror = reflect->obj_field(_constantPoolOop_offset); Klass* k = java_lang_Class::as_Klass(mirror); assert(k->is_instance_klass(), "Must be"); @@ -4063,7 +4056,7 @@ int java_lang_AssertionStatusDirectives::deflt_offset; int java_nio_Buffer::_limit_offset; int java_util_concurrent_locks_AbstractOwnableSynchronizer::_owner_offset; -int reflect_ConstantPool::_oop_offset; +int reflect_ConstantPool::_constantPoolOop_offset; int reflect_UnsafeStaticFieldAccessorImpl::_base_offset;