8316970: Add internal annotation to mark restricted methods

Reviewed-by: jvernee, iris, alanb
This commit is contained in:
Maurizio Cimadamore 2023-09-28 09:49:57 +00:00
parent 77fac0f4c6
commit 798125152b
7 changed files with 221 additions and 0 deletions

View file

@ -27,6 +27,7 @@ package java.lang.foreign;
import jdk.internal.foreign.layout.ValueLayouts;
import jdk.internal.javac.PreviewFeature;
import jdk.internal.javac.Restricted;
import jdk.internal.reflect.CallerSensitive;
import java.lang.foreign.Linker.Option;
@ -108,6 +109,7 @@ public sealed interface AddressLayout extends ValueLayout permits ValueLayouts.O
* @see #targetLayout()
*/
@CallerSensitive
@Restricted
AddressLayout withTargetLayout(MemoryLayout layout);
/**

View file

@ -30,6 +30,7 @@ import jdk.internal.foreign.abi.LinkerOptions;
import jdk.internal.foreign.abi.CapturableState;
import jdk.internal.foreign.abi.SharedUtils;
import jdk.internal.javac.PreviewFeature;
import jdk.internal.javac.Restricted;
import jdk.internal.reflect.CallerSensitive;
import jdk.internal.reflect.Reflection;
@ -528,6 +529,7 @@ public sealed interface Linker permits AbstractLinker {
* @see SymbolLookup
*/
@CallerSensitive
@Restricted
MethodHandle downcallHandle(MemorySegment address, FunctionDescriptor function, Option... options);
/**
@ -574,6 +576,7 @@ public sealed interface Linker permits AbstractLinker {
* @throws IllegalCallerException If the caller is in a module that does not have native access enabled.
*/
@CallerSensitive
@Restricted
MethodHandle downcallHandle(FunctionDescriptor function, Option... options);
/**
@ -618,6 +621,7 @@ public sealed interface Linker permits AbstractLinker {
* @throws IllegalCallerException If the caller is in a module that does not have native access enabled.
*/
@CallerSensitive
@Restricted
MemorySegment upcallStub(MethodHandle target, FunctionDescriptor function, Arena arena, Linker.Option... options);
/**

View file

@ -50,6 +50,7 @@ import jdk.internal.foreign.Utils;
import jdk.internal.foreign.abi.SharedUtils;
import jdk.internal.foreign.layout.ValueLayouts;
import jdk.internal.javac.PreviewFeature;
import jdk.internal.javac.Restricted;
import jdk.internal.reflect.CallerSensitive;
import jdk.internal.vm.annotation.ForceInline;
@ -607,6 +608,7 @@ public sealed interface MemorySegment permits AbstractMemorySegmentImpl {
* @throws IllegalCallerException If the caller is in a module that does not have native access enabled.
*/
@CallerSensitive
@Restricted
MemorySegment reinterpret(long newSize);
/**
@ -646,6 +648,7 @@ public sealed interface MemorySegment permits AbstractMemorySegmentImpl {
* @throws IllegalCallerException If the caller is in a module that does not have native access enabled.
*/
@CallerSensitive
@Restricted
MemorySegment reinterpret(Arena arena, Consumer<MemorySegment> cleanup);
/**
@ -688,6 +691,7 @@ public sealed interface MemorySegment permits AbstractMemorySegmentImpl {
* @throws IllegalCallerException If the caller is in a module that does not have native access enabled.
*/
@CallerSensitive
@Restricted
MemorySegment reinterpret(long newSize, Arena arena, Consumer<MemorySegment> cleanup);
/**

View file

@ -30,6 +30,7 @@ import jdk.internal.access.SharedSecrets;
import jdk.internal.foreign.MemorySessionImpl;
import jdk.internal.foreign.Utils;
import jdk.internal.javac.PreviewFeature;
import jdk.internal.javac.Restricted;
import jdk.internal.loader.BuiltinClassLoader;
import jdk.internal.loader.NativeLibrary;
import jdk.internal.loader.RawNativeLibraries;
@ -232,6 +233,7 @@ public interface SymbolLookup {
* @throws IllegalCallerException If the caller is in a module that does not have native access enabled.
*/
@CallerSensitive
@Restricted
static SymbolLookup libraryLookup(String name, Arena arena) {
Reflection.ensureNativeAccess(Reflection.getCallerClass(), SymbolLookup.class, "libraryLookup");
if (Utils.containsNullChars(name)) {
@ -264,6 +266,7 @@ public interface SymbolLookup {
* @throws IllegalCallerException If the caller is in a module that does not have native access enabled.
*/
@CallerSensitive
@Restricted
static SymbolLookup libraryLookup(Path path, Arena arena) {
Reflection.ensureNativeAccess(Reflection.getCallerClass(), SymbolLookup.class, "libraryLookup");
return libraryLookup(path, RawNativeLibraries::load, arena);