summaryrefslogtreecommitdiff
path: root/java/openjdk6/files/icedtea/security/20130416/8009699.patch
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()) {