hotspot/src/share/vm/prims/methodHandles.cpp
changeset 17024 49cbeca23983
parent 16617 6235d2c7549f
child 17029 9ff8d7c0ed79
equal deleted inserted replaced
17022:584161d608a5 17024:49cbeca23983
   185     receiver_limit = mklass;
   185     receiver_limit = mklass;
   186   if (m->is_initializer()) {
   186   if (m->is_initializer()) {
   187     flags |= IS_CONSTRUCTOR | (JVM_REF_invokeSpecial << REFERENCE_KIND_SHIFT);
   187     flags |= IS_CONSTRUCTOR | (JVM_REF_invokeSpecial << REFERENCE_KIND_SHIFT);
   188   } else if (mods.is_static()) {
   188   } else if (mods.is_static()) {
   189     flags |= IS_METHOD | (JVM_REF_invokeStatic << REFERENCE_KIND_SHIFT);
   189     flags |= IS_METHOD | (JVM_REF_invokeStatic << REFERENCE_KIND_SHIFT);
       
   190      // Check if this method is a lambda method that is generated as
       
   191      // private static method.
       
   192      if (m->is_private() && m->method_holder()->is_interface()) {
       
   193        vmindex = klassItable::compute_itable_index(m);
       
   194      }
   190   } else if (receiver_limit != mklass &&
   195   } else if (receiver_limit != mklass &&
   191              !receiver_limit->is_subtype_of(mklass)) {
   196              !receiver_limit->is_subtype_of(mklass)) {
   192     return NULL;  // bad receiver limit
   197     return NULL;  // bad receiver limit
   193   } else if (receiver_limit->is_interface() &&
   198   } else if (receiver_limit->is_interface() &&
   194              mklass->is_interface()) {
   199              mklass->is_interface()) {