Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge jdk16 #2040

Closed
wants to merge 7 commits into from
Closed

Merge jdk16 #2040

Changes from all commits
Commits
File filter
Filter file types
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.

Always

Just for now

@@ -124,12 +124,18 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lpthread"
fi
# Libatomic library
# 32-bit MIPS needs fallback library for 8-byte atomic ops
if test "x$OPENJDK_TARGET_OS" = xlinux &&
(test "x$OPENJDK_TARGET_CPU" = xmips ||
test "x$OPENJDK_TARGET_CPU" = xmipsel); then
BASIC_JVM_LIBS="$BASIC_JVM_LIBS -latomic"
# Atomic library
# 32-bit platforms needs fallback library for 8-byte atomic ops on Zero
if HOTSPOT_CHECK_JVM_VARIANT(zero); then
if test "x$OPENJDK_TARGET_OS" = xlinux &&
(test "x$OPENJDK_TARGET_CPU" = xarm ||
test "x$OPENJDK_TARGET_CPU" = xm68k ||
test "x$OPENJDK_TARGET_CPU" = xmips ||
test "x$OPENJDK_TARGET_CPU" = xmipsel ||
test "x$OPENJDK_TARGET_CPU" = xppc ||
test "x$OPENJDK_TARGET_CPU" = xsh); then
BASIC_JVM_LIBS="$BASIC_JVM_LIBS -latomic"
fi
fi
# perfstat lib
@@ -1001,9 +1001,9 @@ var getJibProfilesProfiles = function (input, common, data) {
// test tasks. Care must however be taken not to polute that work dir by
// setting the appropriate make variables to control output directories.
//
// Use the existance of the top level README as indication of if this is
// Use the existance of the top level README.md as indication of if this is
// the full source or just src.conf.
if (!new java.io.File(__DIR__, "../../README").exists()) {
if (!new java.io.File(__DIR__, "../../README.md").exists()) {
var runTestPrebuiltSrcFullExtra = {
dependencies: "src.full",
work_dir: input.get("src.full", "install_path"),
@@ -92,7 +92,16 @@ Java_sun_nio_ch_UnixDomainSockets_socketSupported(JNIEnv *env, jclass cl)
return JNI_FALSE;
}
closesocket(s);
return JNI_TRUE;

/* Check for build 18362 or newer, due to Windows bug described in 8259014 */

OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0 };
DWORDLONG cond_mask = 0;

VER_SET_CONDITION(cond_mask, VER_BUILDNUMBER, VER_GREATER_EQUAL);
osvi.dwBuildNumber = 18362; // Windows 10 (1903) or newer

return VerifyVersionInfoW(&osvi, VER_BUILDNUMBER, cond_mask) != 0;
}

JNIEXPORT jint JNICALL
@@ -75,12 +75,15 @@ public String getName() {

@Override
public void init(JavacTask task, String... args) {
// ignore
throw new IllegalStateException("doclint not available");
}

@Override
public boolean isValidOption(String s) {
return false;
// passively accept all "plausible" options
return s.equals(XMSGS_OPTION)
|| s.startsWith(XMSGS_CUSTOM_PREFIX)
|| s.startsWith(XCHECK_PACKAGE);
}
}
}
@@ -55,6 +55,7 @@
import com.sun.tools.javac.platform.PlatformDescription.PluginInfo;
import com.sun.tools.javac.processing.JavacProcessingEnvironment;
import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.DefinedBy;
@@ -257,8 +258,11 @@ private void initPlugin(Plugin p, String... args) {
public void initDocLint(List<String> docLintOpts) {
if (docLintOpts.isEmpty())
return;

DocLint.newDocLint().init(this, docLintOpts.toArray(new String[docLintOpts.size()]));
JavaCompiler.instance(context).keepComments = true;
try {
DocLint.newDocLint().init(this, docLintOpts.toArray(new String[docLintOpts.size()]));
JavaCompiler.instance(context).keepComments = true;
} catch (IllegalStateException e) {
Log.instance(context).warning(Warnings.DoclintNotAvailable);
}
}
}
@@ -2056,6 +2056,9 @@ compiler.warn.deprecated.annotation.has.no.effect=\
compiler.warn.invalid.path=\
Invalid filename: {0}

compiler.warn.doclint.not.available=\
No service provider for doclint is available

# 0: string
compiler.err.invalid.path=\
Invalid filename: {0}
@@ -876,10 +876,9 @@ static MemorySegment allocateNative(long bytesSize) {
* @param mapMode a file mapping mode, see {@link FileChannel#map(FileChannel.MapMode, long, long)}; the chosen mapping mode
* might affect the behavior of the returned memory mapped segment (see {@link MappedMemorySegments#force(MemorySegment)}).
* @return a new confined mapped memory segment.
* @throws IllegalArgumentException if {@code bytesOffset < 0}.
* @throws IllegalArgumentException if {@code bytesSize < 0}.
* @throws UnsupportedOperationException if an unsupported map mode is specified, or if the {@code path} is associated
* with a provider that does not support creating file channels.
* @throws IllegalArgumentException if {@code bytesOffset < 0}, {@code bytesSize < 0}, or if {@code path} is not associated
* with the default file system.
* @throws UnsupportedOperationException if an unsupported map mode is specified.
* @throws IOException if the specified path does not point to an existing file, or if some other I/O error occurs.
* @throws SecurityException If a security manager is installed and it denies an unspecified permission required by the implementation.
* In the case of the default provider, the {@link SecurityManager#checkRead(String)} method is invoked to check
@@ -34,6 +34,8 @@
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.OpenOption;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
@@ -114,8 +116,13 @@ public static MemorySegment makeMappedSegment(Path path, long bytesOffset, long
Objects.requireNonNull(mapMode);
if (bytesSize < 0) throw new IllegalArgumentException("Requested bytes size must be >= 0.");
if (bytesOffset < 0) throw new IllegalArgumentException("Requested bytes offset must be >= 0.");
try (FileChannelImpl channelImpl = (FileChannelImpl)FileChannel.open(path, openOptions(mapMode))) {
UnmapperProxy unmapperProxy = channelImpl.mapInternal(mapMode, bytesOffset, bytesSize);
FileSystem fs = path.getFileSystem();
if (fs != FileSystems.getDefault() ||
fs.getClass().getModule() != Object.class.getModule()) {
throw new IllegalArgumentException("Unsupported file system");
}
try (FileChannel channelImpl = FileChannel.open(path, openOptions(mapMode))) {
UnmapperProxy unmapperProxy = ((FileChannelImpl)channelImpl).mapInternal(mapMode, bytesOffset, bytesSize);
int modes = defaultAccessModes(bytesSize);
if (mapMode == FileChannel.MapMode.READ_ONLY) {
modes &= ~WRITE;
@@ -32,12 +32,12 @@
import java.util.Set;
import java.util.TreeSet;

import com.sun.tools.doclint.DocLint;
import jdk.javadoc.internal.doclets.toolkit.BaseOptions;
import jdk.javadoc.internal.doclets.toolkit.Messages;
import jdk.javadoc.internal.doclets.toolkit.Resources;
import jdk.javadoc.internal.doclets.toolkit.util.DocFile;
import jdk.javadoc.internal.doclets.toolkit.util.Utils;
import jdk.javadoc.internal.doclint.DocLint;

/**
* Storage for all options supported by the
@@ -405,7 +405,7 @@ public boolean process(String opt, List<String> args) {
messages.error("doclet.Option_doclint_no_qualifiers");
return false;
}
if (!DocLint.newDocLint().isValidOption(dopt)) {
if (!(new DocLint()).isValidOption(dopt)) {
messages.error("doclet.Option_doclint_invalid_arg");
return false;
}
@@ -418,7 +418,7 @@ public boolean process(String opt, List<String> args) {
@Override
public boolean process(String opt, List<String> args) {
String dopt = opt.replace("-Xdoclint/package:", DocLint.XCHECK_PACKAGE);
if (!DocLint.newDocLint().isValidOption(dopt)) {
if (!(new DocLint()).isValidOption(dopt)) {
messages.error("doclet.Option_doclint_package_invalid_arg");
return false;
}
@@ -47,6 +47,7 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.net.URI;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
@@ -513,6 +514,12 @@ public void testMapZeroSize() throws IOException {
}
}

@Test(expectedExceptions = IllegalArgumentException.class)
public void testMapCustomPath() throws IOException {
Path path = Path.of(URI.create("jrt:/"));
MemorySegment.mapFile(path, 0L, 0L, FileChannel.MapMode.READ_WRITE);
}

@Test(dataProvider="resizeOps")
public void testCopyHeapToNative(Consumer<MemorySegment> checker, Consumer<MemorySegment> initializer, SequenceLayout seq) {
checkByteArrayAlignment(seq.elementLayout());
@@ -110,6 +110,7 @@ compiler.misc.wrong.version # ClassReader
compiler.warn.annotation.method.not.found # ClassReader
compiler.warn.annotation.method.not.found.reason # ClassReader
compiler.warn.big.major.version # ClassReader
compiler.warn.doclint.not.available # requires restricted image
compiler.warn.future.attr # ClassReader
compiler.warn.illegal.char.for.encoding
compiler.warn.incubating.modules # requires adjusted classfile
@@ -0,0 +1,75 @@
/*
* Copyright (c) 2020, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/

/**
* @test
* @bug 8253996
* @summary Verify doclint behavior when doclint not available
* @library /tools/lib
* @modules jdk.compiler/com.sun.tools.javac.api
* jdk.compiler/com.sun.tools.javac.main
* @run main/othervm --limit-modules jdk.compiler,jdk.zipfs LimitedImage
*/

import java.io.IOException;
import java.nio.file.Path;
import java.util.List;

import toolbox.JavacTask;
import toolbox.Task.Expect;
import toolbox.Task.Mode;
import toolbox.Task.OutputKind;
import toolbox.ToolBox;

public class LimitedImage {
public static void main(String... args) throws IOException {
ToolBox tb = new ToolBox();

//showing help should be OK
new JavacTask(tb, Mode.CMDLINE)
.options("--help")
.run().writeAll();

Path testSource = Path.of("Test.java");
tb.writeFile(testSource, "class Test {}");

List<String> actualOutput;
List<String> expectedOutput = List.of(
"- compiler.warn.doclint.not.available",
"1 warning"
);

//check proper diagnostics when doclint provider not present:
System.err.println("Test -Xdoclint when doclint not available");
actualOutput = new JavacTask(tb, Mode.CMDLINE)
.options("-XDrawDiagnostics", "-Xdoclint")
.files(testSource)
.outdir(".")
.run(Expect.SUCCESS)
.writeAll()
.getOutputLines(OutputKind.DIRECT);

tb.checkEqual(expectedOutput, actualOutput);
}

}
ProTip! Use n and p to navigate between commits in a pull request.