Mercurial > hg > graal-compiler
comparison src/share/vm/prims/methodHandles.cpp @ 10128:41ed397cc0cd
8006267: InterfaceMethod_ref should allow invokestatic and invokespecial
Summary: Lambda changes; spec 0.6.2 - Allow static invokestatic and invokespecial calls to InterfaceMethod_ref
Reviewed-by: dholmes, acorn
author | bharadwaj |
---|---|
date | Thu, 18 Apr 2013 08:05:35 -0700 |
parents | 16885e702c88 |
children | 6337ca4dcad8 |
comparison
equal
deleted
inserted
replaced
10126:63e31ce40bdb | 10128:41ed397cc0cd |
---|---|
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()) { |