blob: f4a15a33693f74ed5262be197e707399b20ae68e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# HG changeset patch
# User andrew
# Date 1365790031 -3600
# Node ID e95f24ac8e1e3c54e389b55c6992a8fc0266a698
# Parent ef36be1ae9bc7d061721f8890797e5d89c901846
8009699: Methodhandle lookup
Reviewed-by: ahgross, jrose, jdn
diff --git a/src/share/vm/prims/methodHandles.cpp b/src/share/vm/prims/methodHandles.cpp
--- hotspot/src/share/vm/prims/methodHandles.cpp
+++ hotspot/src/share/vm/prims/methodHandles.cpp
@@ -536,6 +536,13 @@
}
}
methodHandle m = result.resolved_method();
+ KlassHandle mklass = m->method_holder();
+ KlassHandle receiver_limit = result.resolved_klass();
+ if (receiver_limit.is_null() ||
+ // ignore passed-in limit; interfaces are interconvertible
+ receiver_limit->is_interface() && mklass->is_interface()) {
+ receiver_limit = mklass;
+ }
oop vmtarget = NULL;
int vmindex = methodOopDesc::nonvirtual_vtable_index;
if (defc->is_interface()) {
|