Merge
This commit is contained in:
commit
dbc5e5d48d
@ -1,45 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||||
#
|
||||
|
||||
# Define library interface.
|
||||
|
||||
SUNWprivate_1.1 {
|
||||
global:
|
||||
Java_oracle_jrockit_jfr_Process_getpid;
|
||||
Java_oracle_jrockit_jfr_Timing_counterTime;
|
||||
Java_oracle_jrockit_jfr_Timing_init;
|
||||
Java_oracle_jrockit_jfr_Logger_output0;
|
||||
Java_oracle_jrockit_jfr_JFR_isCommercialFeaturesUnlocked;
|
||||
Java_oracle_jrockit_jfr_JFR_isStarted;
|
||||
Java_oracle_jrockit_jfr_JFR_isSupportedInVM;
|
||||
Java_oracle_jrockit_jfr_JFR_startFlightRecorder;
|
||||
Java_oracle_jrockit_jfr_JFR_isDisabledOnCommandLine;
|
||||
Java_oracle_jrockit_jfr_JFR_isEnabled;
|
||||
Java_oracle_jrockit_jfr_VMJFR_options;
|
||||
Java_oracle_jrockit_jfr_VMJFR_init;
|
||||
Java_oracle_jrockit_jfr_VMJFR_addConstPool;
|
||||
Java_oracle_jrockit_jfr_VMJFR_removeConstPool;
|
||||
Java_oracle_jrockit_jfr_VMJFR_storeConstPool;
|
||||
Java_oracle_jrockit_jfr_VMJFR_classID0;
|
||||
Java_oracle_jrockit_jfr_VMJFR_stackTraceID;
|
||||
Java_oracle_jrockit_jfr_VMJFR_threadID;
|
||||
Java_oracle_jrockit_jfr_VMJFR_rotate;
|
||||
Java_oracle_jrockit_jfr_VMJFR_shutdown;
|
||||
Java_oracle_jrockit_jfr_VMJFR_start;
|
||||
Java_oracle_jrockit_jfr_VMJFR_stop;
|
||||
Java_oracle_jrockit_jfr_VMJFR_buffer;
|
||||
Java_oracle_jrockit_jfr_VMJFR_flush;
|
||||
Java_oracle_jrockit_jfr_VMJFR_write;
|
||||
Java_oracle_jrockit_jfr_VMJFR_add;
|
||||
Java_oracle_jrockit_jfr_VMJFR_remove;
|
||||
Java_oracle_jrockit_jfr_VMJFR_setThreshold;
|
||||
Java_oracle_jrockit_jfr_VMJFR_setPeriod;
|
||||
Java_oracle_jrockit_jfr_VMJFR_getPeriod;
|
||||
Java_oracle_jrockit_jfr_VMJFR_descriptors;
|
||||
Java_oracle_jrockit_jfr_VMJFR_retransformClasses0;
|
||||
JNI_OnLoad;
|
||||
local:
|
||||
*;
|
||||
};
|
@ -27,6 +27,7 @@ jdk.vm.cds
|
||||
jdk.vm.ci
|
||||
jdk.management
|
||||
jdk.management.cmm
|
||||
jdk.management.jfr
|
||||
jdk.management.resource
|
||||
jdk.naming.rmi
|
||||
jdk.sctp
|
||||
|
@ -81,9 +81,8 @@ final class ProcessHandleImpl implements ProcessHandle {
|
||||
ThreadGroup systemThreadGroup = tg;
|
||||
|
||||
ThreadFactory threadFactory = grimReaper -> {
|
||||
// Our thread stack requirement is quite modest.
|
||||
Thread t = new Thread(systemThreadGroup, grimReaper,
|
||||
"process reaper", 32768);
|
||||
long stackSize = Boolean.getBoolean("jdk.lang.processReaperUseDefaultStackSize") ? 0 : 32768;
|
||||
Thread t = new Thread(systemThreadGroup, grimReaper, "process reaper", stackSize);
|
||||
t.setDaemon(true);
|
||||
// A small attempt (probably futile) to avoid priority inversion
|
||||
t.setPriority(Thread.MAX_PRIORITY);
|
||||
|
@ -42,6 +42,7 @@ import java.util.regex.PatternSyntaxException;
|
||||
import java.util.stream.IntStream;
|
||||
import java.util.stream.StreamSupport;
|
||||
import jdk.internal.HotSpotIntrinsicCandidate;
|
||||
import jdk.internal.vm.annotation.Stable;
|
||||
|
||||
/**
|
||||
* The {@code String} class represents character strings. All
|
||||
@ -119,7 +120,18 @@ import jdk.internal.HotSpotIntrinsicCandidate;
|
||||
public final class String
|
||||
implements java.io.Serializable, Comparable<String>, CharSequence {
|
||||
|
||||
/** The value is used for character storage. */
|
||||
/**
|
||||
* The value is used for character storage.
|
||||
*
|
||||
* @implNote This field is trusted by the VM, and is a subject to
|
||||
* constant folding if String instance is constant. Overwriting this
|
||||
* field after construction will cause problems.
|
||||
*
|
||||
* Additionally, it is marked with {@link Stable} to trust the contents
|
||||
* of the array. No other facility in JDK provides this functionality (yet).
|
||||
* {@link Stable} is safe here, because value is never null.
|
||||
*/
|
||||
@Stable
|
||||
private final byte[] value;
|
||||
|
||||
/**
|
||||
@ -129,6 +141,9 @@ public final class String
|
||||
* LATIN1
|
||||
* UTF16
|
||||
*
|
||||
* @implNote This field is trusted by the VM, and is a subject to
|
||||
* constant folding if String instance is constant. Overwriting this
|
||||
* field after construction will cause problems.
|
||||
*/
|
||||
private final byte coder;
|
||||
|
||||
|
@ -782,6 +782,46 @@ public final class Unsafe {
|
||||
Object expected,
|
||||
Object x);
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final native Object compareAndExchangeObjectVolatile(Object o, long offset,
|
||||
Object expected,
|
||||
Object x);
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final Object compareAndExchangeObjectAcquire(Object o, long offset,
|
||||
Object expected,
|
||||
Object x) {
|
||||
return compareAndExchangeObjectVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final Object compareAndExchangeObjectRelease(Object o, long offset,
|
||||
Object expected,
|
||||
Object x) {
|
||||
return compareAndExchangeObjectVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapObject(Object o, long offset,
|
||||
Object expected,
|
||||
Object x) {
|
||||
return compareAndSwapObject(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapObjectAcquire(Object o, long offset,
|
||||
Object expected,
|
||||
Object x) {
|
||||
return compareAndSwapObject(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapObjectRelease(Object o, long offset,
|
||||
Object expected,
|
||||
Object x) {
|
||||
return compareAndSwapObject(o, offset, expected, x);
|
||||
}
|
||||
|
||||
/**
|
||||
* Atomically updates Java variable to {@code x} if it is currently
|
||||
* holding {@code expected}.
|
||||
@ -796,6 +836,46 @@ public final class Unsafe {
|
||||
int expected,
|
||||
int x);
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final native int compareAndExchangeIntVolatile(Object o, long offset,
|
||||
int expected,
|
||||
int x);
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final int compareAndExchangeIntAcquire(Object o, long offset,
|
||||
int expected,
|
||||
int x) {
|
||||
return compareAndExchangeIntVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final int compareAndExchangeIntRelease(Object o, long offset,
|
||||
int expected,
|
||||
int x) {
|
||||
return compareAndExchangeIntVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapInt(Object o, long offset,
|
||||
int expected,
|
||||
int x) {
|
||||
return compareAndSwapInt(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapIntAcquire(Object o, long offset,
|
||||
int expected,
|
||||
int x) {
|
||||
return compareAndSwapInt(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapIntRelease(Object o, long offset,
|
||||
int expected,
|
||||
int x) {
|
||||
return compareAndSwapInt(o, offset, expected, x);
|
||||
}
|
||||
|
||||
/**
|
||||
* Atomically updates Java variable to {@code x} if it is currently
|
||||
* holding {@code expected}.
|
||||
@ -810,6 +890,46 @@ public final class Unsafe {
|
||||
long expected,
|
||||
long x);
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final native long compareAndExchangeLongVolatile(Object o, long offset,
|
||||
long expected,
|
||||
long x);
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final long compareAndExchangeLongAcquire(Object o, long offset,
|
||||
long expected,
|
||||
long x) {
|
||||
return compareAndExchangeLongVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final long compareAndExchangeLongRelease(Object o, long offset,
|
||||
long expected,
|
||||
long x) {
|
||||
return compareAndExchangeLongVolatile(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapLong(Object o, long offset,
|
||||
long expected,
|
||||
long x) {
|
||||
return compareAndSwapLong(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapLongAcquire(Object o, long offset,
|
||||
long expected,
|
||||
long x) {
|
||||
return compareAndSwapLong(o, offset, expected, x);
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean weakCompareAndSwapLongRelease(Object o, long offset,
|
||||
long expected,
|
||||
long x) {
|
||||
return compareAndSwapLong(o, offset, expected, x);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches a reference value from a given Java variable, with volatile
|
||||
* load semantics. Otherwise identical to {@link #getObject(Object, long)}
|
||||
@ -908,6 +1028,224 @@ public final class Unsafe {
|
||||
@HotSpotIntrinsicCandidate
|
||||
public native void putOrderedLong(Object o, long offset, long x);
|
||||
|
||||
/** Acquire version of {@link #getObjectVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final Object getObjectAcquire(Object o, long offset) {
|
||||
return getObjectVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Acquire version of {@link #getBooleanVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean getBooleanAcquire(Object o, long offset) {
|
||||
return getBooleanVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Acquire version of {@link #getByteVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final byte getByteAcquire(Object o, long offset) {
|
||||
return getByteVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Acquire version of {@link #getShortVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final short getShortAcquire(Object o, long offset) {
|
||||
return getShortVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Acquire version of {@link #getCharVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final char getCharAcquire(Object o, long offset) {
|
||||
return getCharVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Acquire version of {@link #getIntVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final int getIntAcquire(Object o, long offset) {
|
||||
return getIntVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Acquire version of {@link #getFloatVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final float getFloatAcquire(Object o, long offset) {
|
||||
return getFloatVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Acquire version of {@link #getLongVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final long getLongAcquire(Object o, long offset) {
|
||||
return getLongVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Acquire version of {@link #getDoubleVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final double getDoubleAcquire(Object o, long offset) {
|
||||
return getDoubleVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Release version of {@link #putObjectVolatile(Object, long, Object)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putObjectRelease(Object o, long offset, Object x) {
|
||||
putObjectVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Release version of {@link #putBooleanVolatile(Object, long, boolean)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putBooleanRelease(Object o, long offset, boolean x) {
|
||||
putBooleanVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Release version of {@link #putByteVolatile(Object, long, byte)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putByteRelease(Object o, long offset, byte x) {
|
||||
putByteVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Release version of {@link #putShortVolatile(Object, long, short)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putShortRelease(Object o, long offset, short x) {
|
||||
putShortVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Release version of {@link #putCharVolatile(Object, long, char)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putCharRelease(Object o, long offset, char x) {
|
||||
putCharVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Release version of {@link #putIntVolatile(Object, long, int)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putIntRelease(Object o, long offset, int x) {
|
||||
putIntVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Release version of {@link #putFloatVolatile(Object, long, float)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putFloatRelease(Object o, long offset, float x) {
|
||||
putFloatVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Release version of {@link #putLongVolatile(Object, long, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putLongRelease(Object o, long offset, long x) {
|
||||
putLongVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Release version of {@link #putDoubleVolatile(Object, long, double)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putDoubleRelease(Object o, long offset, double x) {
|
||||
putDoubleVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
// ------------------------------ Opaque --------------------------------------
|
||||
|
||||
/** Opaque version of {@link #getObjectVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final Object getObjectOpaque(Object o, long offset) {
|
||||
return getObjectVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #getBooleanVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final boolean getBooleanOpaque(Object o, long offset) {
|
||||
return getBooleanVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #getByteVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final byte getByteOpaque(Object o, long offset) {
|
||||
return getByteVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #getShortVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final short getShortOpaque(Object o, long offset) {
|
||||
return getShortVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #getCharVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final char getCharOpaque(Object o, long offset) {
|
||||
return getCharVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #getIntVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final int getIntOpaque(Object o, long offset) {
|
||||
return getIntVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #getFloatVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final float getFloatOpaque(Object o, long offset) {
|
||||
return getFloatVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #getLongVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final long getLongOpaque(Object o, long offset) {
|
||||
return getLongVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #getDoubleVolatile(Object, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final double getDoubleOpaque(Object o, long offset) {
|
||||
return getDoubleVolatile(o, offset);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #putObjectVolatile(Object, long, Object)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putObjectOpaque(Object o, long offset, Object x) {
|
||||
putObjectVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #putBooleanVolatile(Object, long, boolean)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putBooleanOpaque(Object o, long offset, boolean x) {
|
||||
putBooleanVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #putByteVolatile(Object, long, byte)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putByteOpaque(Object o, long offset, byte x) {
|
||||
putByteVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #putShortVolatile(Object, long, short)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putShortOpaque(Object o, long offset, short x) {
|
||||
putShortVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #putCharVolatile(Object, long, char)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putCharOpaque(Object o, long offset, char x) {
|
||||
putCharVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #putIntVolatile(Object, long, int)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putIntOpaque(Object o, long offset, int x) {
|
||||
putIntVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #putFloatVolatile(Object, long, float)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putFloatOpaque(Object o, long offset, float x) {
|
||||
putFloatVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #putLongVolatile(Object, long, long)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putLongOpaque(Object o, long offset, long x) {
|
||||
putLongVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/** Opaque version of {@link #putDoubleVolatile(Object, long, double)} */
|
||||
@HotSpotIntrinsicCandidate
|
||||
public final void putDoubleOpaque(Object o, long offset, double x) {
|
||||
putDoubleVolatile(o, offset, x);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unblocks the given thread blocked on {@code park}, or, if it is
|
||||
* not blocked, causes the subsequent call to {@code park} not to
|
||||
@ -1100,6 +1438,23 @@ public final class Unsafe {
|
||||
@HotSpotIntrinsicCandidate
|
||||
public native void fullFence();
|
||||
|
||||
/**
|
||||
* Ensures that loads before the fence will not be reordered with
|
||||
* loads after the fence.
|
||||
*/
|
||||
public final void loadLoadFence() {
|
||||
loadFence();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that stores before the fence will not be reordered with
|
||||
* stores after the fence.
|
||||
*/
|
||||
public final void storeStoreFence() {
|
||||
storeFence();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Throws IllegalAccessError; for use by the VM for access control
|
||||
* error support.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2016, 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
|
||||
@ -1952,6 +1952,7 @@ JNI_OnUnload(JavaVM *vm, void *reserved);
|
||||
#define JNI_VERSION_1_4 0x00010004
|
||||
#define JNI_VERSION_1_6 0x00010006
|
||||
#define JNI_VERSION_1_8 0x00010008
|
||||
#define JNI_VERSION_9 0x00090000
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2016, 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
|
||||
@ -469,7 +469,9 @@ GetJavaProperties(JNIEnv* env)
|
||||
* Windows Server 2008 R2 6 1 (!VER_NT_WORKSTATION)
|
||||
* Windows 8 6 2 (VER_NT_WORKSTATION)
|
||||
* Windows Server 2012 6 2 (!VER_NT_WORKSTATION)
|
||||
* Windows Server 2012 R2 6 3 (!VER_NT_WORKSTATION)
|
||||
* Windows 10 10 0 (VER_NT_WORKSTATION)
|
||||
* Windows Server 2016 10 0 (!VER_NT_WORKSTATION)
|
||||
*
|
||||
* This mapping will presumably be augmented as new Windows
|
||||
* versions are released.
|
||||
@ -543,6 +545,7 @@ GetJavaProperties(JNIEnv* env)
|
||||
}
|
||||
} else {
|
||||
switch (minorVersion) {
|
||||
case 0: sprops.os_name = "Windows Server 2016"; break;
|
||||
default: sprops.os_name = "Windows NT (unknown)";
|
||||
}
|
||||
}
|
||||
|
@ -334,9 +334,6 @@ javax/imageio/plugins/tiff/WriteToSequenceAfterAbort.java generic-all
|
||||
|
||||
# jdk_time
|
||||
|
||||
# 8134979
|
||||
java/time/tck/java/time/chrono/TCKJapaneseChronology.java generic-all
|
||||
|
||||
############################################################################
|
||||
|
||||
# jdk_tools
|
||||
|
79
jdk/test/com/sun/jdi/RedefineAddPrivateMethod.sh
Normal file
79
jdk/test/com/sun/jdi/RedefineAddPrivateMethod.sh
Normal file
@ -0,0 +1,79 @@
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright (c) 2016, 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 8149743
|
||||
# @summary crash when adding a breakpoint after redefining to add a private static method
|
||||
# @run shell RedefineAddPrivateMethod.sh
|
||||
|
||||
compileOptions=-g
|
||||
|
||||
createJavaFile()
|
||||
{
|
||||
cat <<EOF > $1.java.1
|
||||
public class $1 {
|
||||
static public void main(String[] args) {
|
||||
System.out.println("@1 breakpoint");
|
||||
System.out.println("@2 breakpoint");
|
||||
}
|
||||
|
||||
// @1 uncomment private static void test() {}
|
||||
}
|
||||
EOF
|
||||
}
|
||||
|
||||
# This is called to feed cmds to jdb.
|
||||
dojdbCmds()
|
||||
{
|
||||
setBkpts @1
|
||||
runToBkpt @1
|
||||
redefineClass @1
|
||||
setBkpts @2
|
||||
runToBkpt @2
|
||||
cmd exitJdb
|
||||
}
|
||||
|
||||
|
||||
mysetup()
|
||||
{
|
||||
if [ -z "$TESTSRC" ] ; then
|
||||
TESTSRC=.
|
||||
fi
|
||||
|
||||
for ii in . $TESTSRC $TESTSRC/.. ; do
|
||||
if [ -r "$ii/ShellScaffold.sh" ] ; then
|
||||
. $ii/ShellScaffold.sh
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# You could replace this next line with the contents
|
||||
# of ShellScaffold.sh and this script will run just the same.
|
||||
mysetup
|
||||
|
||||
runit
|
||||
debuggeeFailIfPresent "Internal exception:"
|
||||
pass
|
@ -752,6 +752,7 @@ abstract public class TestScaffold extends TargetAdapter {
|
||||
sr.addClassExclusionFilter("com.oracle.*");
|
||||
sr.addClassExclusionFilter("oracle.*");
|
||||
sr.addClassExclusionFilter("jdk.internal.*");
|
||||
sr.addClassExclusionFilter("jdk.jfr.*");
|
||||
sr.addCountFilter(1);
|
||||
sr.enable();
|
||||
StepEvent retEvent = (StepEvent)waitForRequestedEvent(sr);
|
||||
|
@ -31,7 +31,7 @@
|
||||
* java.management
|
||||
* java.instrument
|
||||
* @run shell/timeout=240 MakeJAR2.sh NativeMethodPrefixAgent NativeMethodPrefixApp 'Can-Retransform-Classes: true' 'Can-Set-Native-Method-Prefix: true'
|
||||
* @run main/othervm -javaagent:NativeMethodPrefixAgent.jar NativeMethodPrefixApp
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:-CheckIntrinsics -javaagent:NativeMethodPrefixAgent.jar NativeMethodPrefixApp
|
||||
*/
|
||||
|
||||
import java.lang.instrument.*;
|
||||
|
@ -29,7 +29,7 @@ import java.nio.file.Paths;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/* @test
|
||||
* @bug 8027351
|
||||
* @bug 8027351 8148940
|
||||
* @summary Basic test of the finalize method
|
||||
*/
|
||||
|
||||
@ -63,6 +63,19 @@ public class FinalizeOverride {
|
||||
while (finalizedCount.get() != (count+1)) {
|
||||
System.gc();
|
||||
System.runFinalization();
|
||||
// Running System.gc() and System.runFinalization() in a
|
||||
// tight loop can trigger frequent safepointing that slows
|
||||
// down the VM and, as a result, the test. (With the
|
||||
// HotSpot VM, the effect of frequent safepointing is
|
||||
// especially noticeable if the test is run with the
|
||||
// -Xcomp flag.) Sleeping for a second after every
|
||||
// garbage collection and finalization cycle gives the VM
|
||||
// time to make progress.
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
System.out.println("Main thread interrupted, continuing execution.");
|
||||
}
|
||||
}
|
||||
|
||||
if (privateFinalizeInvoked) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user