diff options
author | jfrijters <jfrijters> | 2011-08-08 15:29:35 +0400 |
---|---|---|
committer | jfrijters <jfrijters> | 2011-08-08 15:29:35 +0400 |
commit | 6486a0cf2926efc27643e79d0cdba89ef980ab44 (patch) | |
tree | d647995ede5bb2490cb5a96b4bc124b13c47258d /openjdk | |
parent | 2a092d7049f4138ce1b43da1fda8cb96a1e68357 (diff) |
Special case reflective invocation of MethodHandle.invoke[Exact].
Diffstat (limited to 'openjdk')
-rw-r--r-- | openjdk/map.xml | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/openjdk/map.xml b/openjdk/map.xml index 38fc5cda..016bac28 100644 --- a/openjdk/map.xml +++ b/openjdk/map.xml @@ -2764,6 +2764,46 @@ <class name="java.lang.StackTraceElement"> <attribute type="System.SerializableAttribute" sig="()V" /> </class> + <class name="java.lang.invoke.MethodHandle"> + <method name="invoke" sig="([Ljava.lang.Object;)Ljava.lang.Object;"> + <attribute type="IKVM.Attributes.HideFromJavaAttribute" sig="()V" /> + </method> + <method name="invokeExact" sig="([Ljava.lang.Object;)Ljava.lang.Object;"> + <attribute type="IKVM.Attributes.HideFromJavaAttribute" sig="()V" /> + </method> + <!-- NOTE Modifiers.Final and MethodAttributes.NewSlot is recognized by AotTypeWrapper.MapModifiers() as a magic combination that generates a non-virtual method --> + <method name="reflectionInvoke" sig="([Ljava.lang.Object;)Ljava.lang.Object;" modifiers="final" attributes="NewSlot"> + <throws class="java.lang.Throwable" /> + <attribute type="IKVM.Attributes.NameSigAttribute" sig="(Ljava.lang.String;Ljava.lang.String;)V"> + <parameter>invoke</parameter> + <parameter>([Ljava.lang.Object;)Ljava.lang.Object;</parameter> + </attribute> + <attribute type="IKVM.Attributes.ModifiersAttribute" sig="(Lcli.IKVM.Attributes.Modifiers;)V"> + <parameter>Public,Final,Native</parameter> + </attribute> + <body> + <ldstr value="MethodHandle.invoke cannot be invoked reflectively" /> + <newobj class="java.lang.UnsupportedOperationException" name="<init>" sig="(Ljava.lang.String;)V" /> + <throw /> + </body> + </method> + <!-- NOTE Modifiers.Final and MethodAttributes.NewSlot is recognized by AotTypeWrapper.MapModifiers() as a magic combination that generates a non-virtual method --> + <method name="reflectionInvokeExact" sig="([Ljava.lang.Object;)Ljava.lang.Object;" modifiers="final" attributes="NewSlot"> + <throws class="java.lang.Throwable" /> + <attribute type="IKVM.Attributes.NameSigAttribute" sig="(Ljava.lang.String;Ljava.lang.String;)V"> + <parameter>invokeExact</parameter> + <parameter>([Ljava.lang.Object;)Ljava.lang.Object;</parameter> + </attribute> + <attribute type="IKVM.Attributes.ModifiersAttribute" sig="(Lcli.IKVM.Attributes.Modifiers;)V"> + <parameter>Public,Final,Native</parameter> + </attribute> + <body> + <ldstr value="MethodHandle.invokeExact cannot be invoked reflectively" /> + <newobj class="java.lang.UnsupportedOperationException" name="<init>" sig="(Ljava.lang.String;)V" /> + <throw /> + </body> + </method> + </class> <class name="java.lang.invoke.MethodHandleImpl$AllocateObject"> <method name="allocate" sig="()Ljava.lang.Object;"> <attribute type="System.Security.SecuritySafeCriticalAttribute" sig="()V" /> |