提交 3c77ecd1 编写于 作者: R robm

8227467: Better class method invocations

Reviewed-by: thartmann, dholmes, ahgross, andrew
上级 db0b8bdb
......@@ -1241,7 +1241,7 @@ class ClassHierarchyWalker {
ClassHierarchyWalker wf(_participants, _num_participants);
Klass* w = wf.find_witness_subtype(k);
if (w != NULL) {
Method* wm = InstanceKlass::cast(w)->find_instance_method(_name, _signature);
Method* wm = InstanceKlass::cast(w)->find_instance_method(_name, _signature, Klass::skip_private);
if (!Dependencies::is_concrete_method(wm, w)) {
// Found a concrete subtype 'w' which does not override abstract method 'm'.
// Bail out because 'm' could be called with 'w' as receiver (leading to an
......
......@@ -587,11 +587,11 @@ public:
// find a local method, but skip static methods
Method* find_instance_method(const Symbol* name, const Symbol* signature,
PrivateLookupMode private_mode = find_private) const;
PrivateLookupMode private_mode) const;
static Method* find_instance_method(const Array<Method*>* methods,
const Symbol* name,
const Symbol* signature,
PrivateLookupMode private_mode = find_private);
PrivateLookupMode private_mode);
// find a local method (returns NULL if not found)
Method* find_local_method(const Symbol* name,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册