< prev index next >
src/java.base/share/classes/java/lang/invoke/MemberName.java
Print this page
@@ -41,10 +41,13 @@
import java.util.List;
import static java.lang.invoke.MethodHandleNatives.Constants.*;
import static java.lang.invoke.MethodHandleStatics.*;
import java.util.Objects;
+import jdk.internal.misc.JavaLangInvokeAccess;
+import jdk.internal.misc.SharedSecrets;
+
/**
* A {@code MemberName} is a compact symbolic datum which fully characterizes
* a method or field reference.
* A member name refers to a field, method, constructor, or member type.
* Every member name has a simple name (a string) and a type (either a Class or MethodType).
@@ -1125,17 +1128,27 @@
return buf;
}
}
static {
- // Allow privileged classes outside of java.lang
- jdk.internal.misc.SharedSecrets.setJavaLangInvokeAccess(new jdk.internal.misc.JavaLangInvokeAccess() {
+ // StackFrameInfo stores Member and this provides the shared secrets
+ // for stack walker to access MemberName information.
+ SharedSecrets.setJavaLangInvokeAccess(new JavaLangInvokeAccess() {
+ @Override
public Object newMemberName() {
return new MemberName();
}
+
+ @Override
public String getName(Object mname) {
MemberName memberName = (MemberName)mname;
return memberName.getName();
}
+
+ @Override
+ public boolean isNative(Object mname) {
+ MemberName memberName = (MemberName)mname;
+ return memberName.isNative();
+ }
});
}
}
< prev index next >