< prev index next >

src/hotspot/share/prims/methodHandles.cpp

Print this page
rev 55127 : 8223351: [lworld] Primary mirror and nullable mirror for inline type
Reviewed-by: tbd


 319   assert(java_lang_invoke_ResolvedMethodName::vmtarget(resolved_method()) == m() || m->is_old(),
 320          "Should not change after link resolution");
 321 
 322   oop mname_oop = mname();
 323   java_lang_invoke_MemberName::set_flags  (mname_oop, flags);
 324   java_lang_invoke_MemberName::set_method (mname_oop, resolved_method());
 325   java_lang_invoke_MemberName::set_vmindex(mname_oop, vmindex);   // vtable/itable index
 326   java_lang_invoke_MemberName::set_clazz  (mname_oop, m_klass->java_mirror());
 327   // Note:  name and type can be lazily computed by resolve_MemberName,
 328   // if Java code needs them as resolved String and MethodType objects.
 329   // If relevant, the vtable or itable value is stored as vmindex.
 330   // This is done eagerly, since it is readily available without
 331   // constructing any new objects.
 332   return mname();
 333 }
 334 
 335 oop MethodHandles::init_field_MemberName(Handle mname, fieldDescriptor& fd, bool is_setter) {
 336   int flags = (jushort)( fd.access_flags().as_short() & JVM_RECOGNIZED_FIELD_MODIFIERS );
 337   flags |= IS_FIELD | ((fd.is_static() ? JVM_REF_getStatic : JVM_REF_getField) << REFERENCE_KIND_SHIFT);
 338   if (fd.is_flattenable()) {
 339     flags |= JVM_ACC_FLATTENABLE;
 340   }
 341     if (fd.is_flattened()) {
 342     flags |= JVM_ACC_FIELD_FLATTENED;
 343   }
 344   if (is_setter)  flags += ((JVM_REF_putField - JVM_REF_getField) << REFERENCE_KIND_SHIFT);
 345   int vmindex        = fd.offset();  // determines the field uniquely when combined with static bit
 346 
 347   oop mname_oop = mname();
 348   java_lang_invoke_MemberName::set_flags  (mname_oop, flags);
 349   java_lang_invoke_MemberName::set_method (mname_oop, NULL);
 350   java_lang_invoke_MemberName::set_vmindex(mname_oop, vmindex);
 351   java_lang_invoke_MemberName::set_clazz  (mname_oop, fd.field_holder()->java_mirror());
 352 
 353   oop type = field_signature_type_or_null(fd.signature());
 354   oop name = field_name_or_null(fd.name());
 355   if (name != NULL)
 356     java_lang_invoke_MemberName::set_name(mname_oop,   name);
 357   if (type != NULL)
 358     java_lang_invoke_MemberName::set_type(mname_oop,   type);
 359   // Note:  name and type can be lazily computed by resolve_MemberName,




 319   assert(java_lang_invoke_ResolvedMethodName::vmtarget(resolved_method()) == m() || m->is_old(),
 320          "Should not change after link resolution");
 321 
 322   oop mname_oop = mname();
 323   java_lang_invoke_MemberName::set_flags  (mname_oop, flags);
 324   java_lang_invoke_MemberName::set_method (mname_oop, resolved_method());
 325   java_lang_invoke_MemberName::set_vmindex(mname_oop, vmindex);   // vtable/itable index
 326   java_lang_invoke_MemberName::set_clazz  (mname_oop, m_klass->java_mirror());
 327   // Note:  name and type can be lazily computed by resolve_MemberName,
 328   // if Java code needs them as resolved String and MethodType objects.
 329   // If relevant, the vtable or itable value is stored as vmindex.
 330   // This is done eagerly, since it is readily available without
 331   // constructing any new objects.
 332   return mname();
 333 }
 334 
 335 oop MethodHandles::init_field_MemberName(Handle mname, fieldDescriptor& fd, bool is_setter) {
 336   int flags = (jushort)( fd.access_flags().as_short() & JVM_RECOGNIZED_FIELD_MODIFIERS );
 337   flags |= IS_FIELD | ((fd.is_static() ? JVM_REF_getStatic : JVM_REF_getField) << REFERENCE_KIND_SHIFT);
 338   if (fd.is_flattenable()) {
 339     flags |= JVM_ACC_FIELD_FLATTENABLE;
 340   }
 341     if (fd.is_flattened()) {
 342     flags |= JVM_ACC_FIELD_FLATTENED;
 343   }
 344   if (is_setter)  flags += ((JVM_REF_putField - JVM_REF_getField) << REFERENCE_KIND_SHIFT);
 345   int vmindex        = fd.offset();  // determines the field uniquely when combined with static bit
 346 
 347   oop mname_oop = mname();
 348   java_lang_invoke_MemberName::set_flags  (mname_oop, flags);
 349   java_lang_invoke_MemberName::set_method (mname_oop, NULL);
 350   java_lang_invoke_MemberName::set_vmindex(mname_oop, vmindex);
 351   java_lang_invoke_MemberName::set_clazz  (mname_oop, fd.field_holder()->java_mirror());
 352 
 353   oop type = field_signature_type_or_null(fd.signature());
 354   oop name = field_name_or_null(fd.name());
 355   if (name != NULL)
 356     java_lang_invoke_MemberName::set_name(mname_oop,   name);
 357   if (type != NULL)
 358     java_lang_invoke_MemberName::set_type(mname_oop,   type);
 359   // Note:  name and type can be lazily computed by resolve_MemberName,


< prev index next >