diff --git a/make/modules/java.base/Java.gmk b/make/modules/java.base/Java.gmk index 349741c0310..7f0ed040d9c 100644 --- a/make/modules/java.base/Java.gmk +++ b/make/modules/java.base/Java.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ # questions. # -DISABLED_WARNINGS_java += this-escape restricted +DISABLED_WARNINGS_java += this-escape DOCLINT += -Xdoclint:all/protected \ '-Xdoclint/package:java.*,javax.*' diff --git a/src/java.base/share/classes/java/lang/foreign/SymbolLookup.java b/src/java.base/share/classes/java/lang/foreign/SymbolLookup.java index de955a02541..9bfc7964322 100644 --- a/src/java.base/share/classes/java/lang/foreign/SymbolLookup.java +++ b/src/java.base/share/classes/java/lang/foreign/SymbolLookup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -205,6 +205,7 @@ public interface SymbolLookup { * @see System#loadLibrary(String) */ @CallerSensitive + @SuppressWarnings("restricted") static SymbolLookup loaderLookup() { Class caller = Reflection.getCallerClass(); // If there's no caller class, fallback to system loader @@ -227,7 +228,7 @@ public interface SymbolLookup { return addr == 0L ? Optional.empty() : Optional.of(MemorySegment.ofAddress(addr) - .reinterpret(loaderArena, null)); + .reinterpret(loaderArena, null)); // restricted }; } @@ -300,6 +301,7 @@ public interface SymbolLookup { return libraryLookup(path, RawNativeLibraries::load, arena); } + @SuppressWarnings("restricted") private static SymbolLookup libraryLookup(Z libDesc, BiFunction loadLibraryFunc, @@ -327,7 +329,7 @@ public interface SymbolLookup { return addr == 0L ? Optional.empty() : Optional.of(MemorySegment.ofAddress(addr) - .reinterpret(libArena, null)); + .reinterpret(libArena, null)); // restricted }; } } diff --git a/src/java.base/share/classes/jdk/internal/foreign/SystemLookup.java b/src/java.base/share/classes/jdk/internal/foreign/SystemLookup.java index 74fe8492f82..758366bfcf1 100644 --- a/src/java.base/share/classes/jdk/internal/foreign/SystemLookup.java +++ b/src/java.base/share/classes/jdk/internal/foreign/SystemLookup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -101,6 +101,7 @@ public final class SystemLookup implements SymbolLookup { SymbolLookup fallbackLibLookup = libLookup(libs -> libs.load(jdkLibraryPath("syslookup"))); + @SuppressWarnings("restricted") MemorySegment funcs = fallbackLibLookup.find("funcs").orElseThrow() .reinterpret(WindowsFallbackSymbols.LAYOUT.byteSize()); diff --git a/src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java b/src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java index d90e5acd259..12c9a2dfaa2 100644 --- a/src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java +++ b/src/java.base/share/classes/jdk/internal/foreign/abi/AbstractLinker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -256,6 +256,7 @@ public abstract sealed class AbstractLinker implements Linker permits LinuxAArch } } + @SuppressWarnings("restricted") private static MemoryLayout stripNames(MemoryLayout ml) { // we don't care about transferring alignment and byte order here // since the linker already restricts those such that they will always be the same @@ -264,7 +265,7 @@ public abstract sealed class AbstractLinker implements Linker permits LinuxAArch case UnionLayout ul -> MemoryLayout.unionLayout(stripNames(ul.memberLayouts())); case SequenceLayout sl -> MemoryLayout.sequenceLayout(sl.elementCount(), stripNames(sl.elementLayout())); case AddressLayout al -> al.targetLayout() - .map(tl -> al.withoutName().withTargetLayout(stripNames(tl))) + .map(tl -> al.withoutName().withTargetLayout(stripNames(tl))) // restricted .orElseGet(al::withoutName); default -> ml.withoutName(); // ValueLayout and PaddingLayout }; diff --git a/src/java.base/share/classes/jdk/internal/foreign/abi/Binding.java b/src/java.base/share/classes/jdk/internal/foreign/abi/Binding.java index 1bba50a78ce..1f7f3327fe5 100644 --- a/src/java.base/share/classes/jdk/internal/foreign/abi/Binding.java +++ b/src/java.base/share/classes/jdk/internal/foreign/abi/Binding.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -749,11 +749,12 @@ public sealed interface Binding { } @Override + @SuppressWarnings("restricted") public void interpret(Deque stack, StoreFunc storeFunc, LoadFunc loadFunc, SegmentAllocator allocator) { MemorySegment segment = Utils.longToAddress((long) stack.pop(), size, align); if (needsScope) { - segment = segment.reinterpret((Arena) allocator, null); + segment = segment.reinterpret((Arena) allocator, null); // restricted } stack.push(segment); } diff --git a/src/java.base/share/classes/jdk/internal/foreign/abi/SharedUtils.java b/src/java.base/share/classes/jdk/internal/foreign/abi/SharedUtils.java index 5f625242182..83698398eda 100644 --- a/src/java.base/share/classes/jdk/internal/foreign/abi/SharedUtils.java +++ b/src/java.base/share/classes/jdk/internal/foreign/abi/SharedUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -81,6 +81,7 @@ public final class SharedUtils { public static final MethodHandle MH_CHECK_SYMBOL; private static final MethodHandle MH_CHECK_CAPTURE_SEGMENT; + @SuppressWarnings("restricted") public static final AddressLayout C_POINTER = ADDRESS .withTargetLayout(MemoryLayout.sequenceLayout(Long.MAX_VALUE, JAVA_BYTE)); diff --git a/src/java.base/share/classes/jdk/internal/foreign/abi/UpcallStubs.java b/src/java.base/share/classes/jdk/internal/foreign/abi/UpcallStubs.java index 79adbe51542..2d4ccfe39bc 100644 --- a/src/java.base/share/classes/jdk/internal/foreign/abi/UpcallStubs.java +++ b/src/java.base/share/classes/jdk/internal/foreign/abi/UpcallStubs.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -51,6 +51,7 @@ public final class UpcallStubs { registerNatives(); } + @SuppressWarnings("restricted") static MemorySegment makeUpcall(long entry, Arena arena) { MemorySessionImpl.toMemorySession(arena).addOrCleanupIfFail(new MemorySessionImpl.ResourceList.ResourceCleanup() { @Override @@ -58,6 +59,6 @@ public final class UpcallStubs { freeUpcallStub(entry); } }); - return MemorySegment.ofAddress(entry).reinterpret(arena, null); + return MemorySegment.ofAddress(entry).reinterpret(arena, null); // restricted } } diff --git a/src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FallbackLinker.java b/src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FallbackLinker.java index a8d3eea8718..77c81c6dd58 100644 --- a/src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FallbackLinker.java +++ b/src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FallbackLinker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -218,6 +218,7 @@ public final class FallbackLinker extends AbstractLinker { // note that cif is not used, but we store it here to keep it alive private record UpcallData(MemoryLayout returnLayout, List argLayouts, MemorySegment cif) {} + @SuppressWarnings("restricted") private static void doUpcall(MethodHandle target, MemorySegment retPtr, MemorySegment argPtrs, UpcallData data) throws Throwable { List argLayouts = data.argLayouts(); int numArgs = argLayouts.size(); @@ -225,14 +226,14 @@ public final class FallbackLinker extends AbstractLinker { try (Arena upcallArena = Arena.ofConfined()) { MemorySegment argsSeg = argPtrs.reinterpret(numArgs * ADDRESS.byteSize(), upcallArena, null); MemorySegment retSeg = retLayout != null - ? retPtr.reinterpret(retLayout.byteSize(), upcallArena, null) + ? retPtr.reinterpret(retLayout.byteSize(), upcallArena, null) // restricted : null; Object[] args = new Object[numArgs]; for (int i = 0; i < numArgs; i++) { MemoryLayout argLayout = argLayouts.get(i); MemorySegment argPtr = argsSeg.getAtIndex(ADDRESS, i) - .reinterpret(argLayout.byteSize(), upcallArena, null); + .reinterpret(argLayout.byteSize(), upcallArena, null); // restricted args[i] = readValue(argPtr, argLayout); } diff --git a/src/java.base/share/classes/jdk/internal/foreign/abi/fallback/LibFallback.java b/src/java.base/share/classes/jdk/internal/foreign/abi/fallback/LibFallback.java index 106850a3042..b0b6bac3d64 100644 --- a/src/java.base/share/classes/jdk/internal/foreign/abi/fallback/LibFallback.java +++ b/src/java.base/share/classes/jdk/internal/foreign/abi/fallback/LibFallback.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -160,6 +160,7 @@ final class LibFallback { * @throws IllegalStateException if the call to {@code ffi_prep_closure_loc} returns a non-zero status code * @throws IllegalArgumentException if {@code target} does not have the right type */ + @SuppressWarnings("restricted") static MemorySegment createClosure(MemorySegment cif, MethodHandle target, Arena arena) throws IllegalStateException, IllegalArgumentException { if (target.type() != UPCALL_TARGET_TYPE) { @@ -172,7 +173,8 @@ final class LibFallback { long execPtr = ptrs[1]; long globalTarget = ptrs[2]; - return MemorySegment.ofAddress(execPtr).reinterpret(arena, unused -> freeClosure(closurePtr, globalTarget)); + return MemorySegment.ofAddress(execPtr) + .reinterpret(arena, unused -> freeClosure(closurePtr, globalTarget)); // restricted } // the target function for a closure call