Merge
This commit is contained in:
commit
e30672b37d
@ -5,3 +5,5 @@ nbproject/private/
|
||||
^.hgtip
|
||||
^.bridge2
|
||||
.DS_Store
|
||||
.metadata/
|
||||
.recommenders/
|
||||
|
@ -438,6 +438,18 @@ jdk.jvmstat_COPY := aliasmap
|
||||
|
||||
################################################################################
|
||||
|
||||
jdk.vm.ci_EXCLUDE_FILES += \
|
||||
jdk/vm/ci/options/processor/OptionProcessor.java \
|
||||
jdk/vm/ci/service/processor/ServiceProviderProcessor.java \
|
||||
#
|
||||
|
||||
jdk.vm.ci_EXCLUDES += \
|
||||
META-INF/jvmci.options \
|
||||
META-INF/jvmci.providers \
|
||||
#
|
||||
|
||||
################################################################################
|
||||
|
||||
jdk.xml.bind_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
|
||||
jdk.xml.bind_CLEAN := .properties
|
||||
jdk.xml.bind_COPY := .xsd JAXBContextFactory.java ZeroOneBooleanAdapter.java
|
||||
@ -479,6 +491,7 @@ ifneq ($(OPENJDK_TARGET_OS), $(OPENJDK_TARGET_OS_TYPE))
|
||||
endif
|
||||
|
||||
SHARE_SRC_DIRS += \
|
||||
$(HOTSPOT_TOPDIR)/src/$1/share/classes \
|
||||
$(JDK_TOPDIR)/src/$1/share/classes \
|
||||
$(LANGTOOLS_TOPDIR)/src/$1/share/classes \
|
||||
$(CORBA_TOPDIR)/src/$1/share/classes \
|
||||
@ -531,7 +544,7 @@ define SetupModuleCompilation
|
||||
|
||||
$$(eval $$(call SetupJavaCompilation,$1, \
|
||||
SETUP := $$(if $$($1_SETUP), $$($1_SETUP), GENERATE_JDKBYTECODE), \
|
||||
SRC := $$(wildcard $$(call ALL_SRC_DIRS,$1)), \
|
||||
SRC := $$(if $$($1_SRC), $$($1_SRC), $$(wildcard $$(call ALL_SRC_DIRS,$1))), \
|
||||
INCLUDES := $(JDK_USER_DEFINED_FILTER),\
|
||||
BIN := $$(if $$($1_BIN), $$($1_BIN), $(JDK_OUTPUTDIR)/modules/$1), \
|
||||
HEADERS := $(SUPPORT_OUTPUTDIR)/headers/$1, \
|
||||
|
@ -39,7 +39,8 @@ $(eval $(call IncludeCustomExtension, , Images-pre.gmk))
|
||||
|
||||
MAIN_MODULES += java.se java.smartcardio jdk.httpserver jdk.sctp \
|
||||
jdk.security.auth jdk.security.jgss jdk.pack200 jdk.xml.dom \
|
||||
jdk.accessibility jdk.internal.le jdk.scripting.nashorn.shell
|
||||
jdk.accessibility jdk.internal.le jdk.scripting.nashorn.shell \
|
||||
jdk.vm.ci
|
||||
|
||||
# providers
|
||||
PROVIDER_MODULES += jdk.charsets jdk.crypto.ec jdk.crypto.pkcs11 jdk.jvmstat jdk.localedata \
|
||||
|
@ -110,6 +110,7 @@ $(eval $(call DeclareRecipesForPhase, GENSRC, \
|
||||
JDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS))
|
||||
LANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS))
|
||||
CORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS))
|
||||
HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS))
|
||||
|
||||
ALL_TARGETS += $(GENSRC_TARGETS)
|
||||
|
||||
@ -131,7 +132,8 @@ $(eval $(call DeclareRecipesForPhase, COPY, \
|
||||
FILE_PREFIX := Copy, \
|
||||
MAKE_SUBDIR := copy, \
|
||||
CHECK_MODULES := $(ALL_MODULES), \
|
||||
USE_WRAPPER := true))
|
||||
USE_WRAPPER := true, \
|
||||
MULTIPLE_MAKEFILES := true))
|
||||
|
||||
ALL_TARGETS += $(COPY_TARGETS)
|
||||
|
||||
@ -355,6 +357,8 @@ else
|
||||
|
||||
$(CORBA_GENSRC_TARGETS): interim-langtools
|
||||
|
||||
$(HOTSPOT_GENSRC_TARGETS): interim-langtools
|
||||
|
||||
$(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk
|
||||
|
||||
$(GENDATA_TARGETS): interim-langtools buildtools-jdk
|
||||
@ -424,6 +428,9 @@ else
|
||||
# Explicitly add dependencies for special targets
|
||||
java.base-java: unpack-sec
|
||||
|
||||
# The copy target copies files generated by gensrc
|
||||
java.base-copy-hotspot: java.base-gensrc-hotspot
|
||||
|
||||
jdk.jdeps-gendata: java rmic
|
||||
|
||||
zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \
|
||||
|
@ -108,7 +108,8 @@ endef
|
||||
|
||||
################################################################################
|
||||
|
||||
MAKE_TOPDIR_LIST := $(JDK_TOPDIR) $(CORBA_TOPDIR) $(LANGTOOLS_TOPDIR)
|
||||
MAKE_TOPDIR_LIST := $(JDK_TOPDIR) $(CORBA_TOPDIR) $(LANGTOOLS_TOPDIR) \
|
||||
$(HOTSPOT_TOPDIR)
|
||||
MAKE_MAKEDIR_LIST := make
|
||||
|
||||
# Helper macro for DeclareRecipesForPhase
|
||||
@ -179,7 +180,7 @@ endef
|
||||
# FILE_PREFIX : File prefix for this build phase
|
||||
# USE_WRAPPER : Set to true to use ModuleWrapper.gmk
|
||||
# CHECK_MODULES : List of modules to try
|
||||
# MULTIPLE_MAKEFILES : Set to true to handle makefils for the same module in
|
||||
# MULTIPLE_MAKEFILES : Set to true to handle makefiles for the same module and
|
||||
# phase in multiple repos
|
||||
# Exported variables:
|
||||
# $1_MODULES : All modules that had rules generated
|
||||
|
@ -33,6 +33,7 @@ include SetupJavaCompilers.gmk
|
||||
# Module list macros
|
||||
|
||||
ALL_TOP_SRC_DIRS := \
|
||||
$(HOTSPOT_TOPDIR)/src \
|
||||
$(JDK_TOPDIR)/src \
|
||||
$(LANGTOOLS_TOPDIR)/src \
|
||||
$(CORBA_TOPDIR)/src \
|
||||
|
14
modules.xml
14
modules.xml
@ -237,6 +237,7 @@
|
||||
<to>java.instrument</to>
|
||||
<to>jdk.jfr</to>
|
||||
<to>jdk.scripting.nashorn</to>
|
||||
<to>jdk.vm.ci</to>
|
||||
</export>
|
||||
<export>
|
||||
<name>jdk.internal.org.objectweb.asm.commons</name>
|
||||
@ -290,6 +291,7 @@
|
||||
<to>jdk.security.auth</to>
|
||||
<to>jdk.security.jgss</to>
|
||||
<to>jdk.snmp</to>
|
||||
<to>jdk.vm.ci</to>
|
||||
<to>java.instrument</to>
|
||||
</export>
|
||||
<export>
|
||||
@ -1900,6 +1902,18 @@
|
||||
<name>com.sun.security.jgss</name>
|
||||
</export>
|
||||
</module>
|
||||
<module>
|
||||
<name>jdk.vm.ci</name>
|
||||
<depend>java.base</depend>
|
||||
<export>
|
||||
<name>jdk.vm.ci.hotspot</name>
|
||||
<to>jdk.jfr</to>
|
||||
</export>
|
||||
<export>
|
||||
<name>jdk.vm.ci.hotspot.events</name>
|
||||
<to>jdk.jfr</to>
|
||||
</export>
|
||||
</module>
|
||||
<module>
|
||||
<name>jdk.xml.bind</name>
|
||||
<depend>java.activation</depend>
|
||||
|
@ -67,6 +67,7 @@ import java.util.UUID;
|
||||
public class LingeredApp {
|
||||
|
||||
private static final long spinDelay = 1000;
|
||||
private static final int appWaitTime = 100;
|
||||
|
||||
private final String lockFileName;
|
||||
private long lockCreationTime;
|
||||
@ -111,6 +112,12 @@ public class LingeredApp {
|
||||
this.storedAppOutput = new ArrayList<String>();
|
||||
}
|
||||
|
||||
public LingeredApp() {
|
||||
final String lockName = UUID.randomUUID().toString() + ".lck";
|
||||
this.lockFileName = lockName;
|
||||
this.storedAppOutput = new ArrayList<String>();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return name of lock file
|
||||
@ -338,21 +345,18 @@ public class LingeredApp {
|
||||
* High level interface for test writers
|
||||
*/
|
||||
/**
|
||||
* Factory method that creates SmartAppTest object with ready to use application
|
||||
* lock name is autogenerated, wait timeout is hardcoded
|
||||
* Factory method that creates LingeredApp object with ready to use application
|
||||
* lock name is autogenerated
|
||||
* @param cmd - vm options, could be null to auto add testvm.options
|
||||
* @return LingeredApp object
|
||||
* @throws IOException
|
||||
*/
|
||||
public static LingeredApp startApp(List<String> cmd) throws IOException {
|
||||
final String lockName = UUID.randomUUID().toString() + ".lck";
|
||||
final int waitTime = 10;
|
||||
|
||||
LingeredApp a = new LingeredApp(lockName);
|
||||
LingeredApp a = new LingeredApp();
|
||||
a.createLock();
|
||||
try {
|
||||
a.runApp(cmd);
|
||||
a.waitAppReady(waitTime);
|
||||
a.waitAppReady(appWaitTime);
|
||||
} catch (Exception ex) {
|
||||
a.deleteLock();
|
||||
throw ex;
|
||||
@ -361,6 +365,26 @@ public class LingeredApp {
|
||||
return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory method that starts pre-created LingeredApp
|
||||
* lock name is autogenerated
|
||||
* @param cmd - vm options, could be null to auto add testvm.options
|
||||
* @param theApp - app to start
|
||||
* @return LingeredApp object
|
||||
* @throws IOException
|
||||
*/
|
||||
|
||||
public static void startApp(List<String> cmd, LingeredApp theApp) throws IOException {
|
||||
theApp.createLock();
|
||||
try {
|
||||
theApp.runApp(cmd);
|
||||
theApp.waitAppReady(appWaitTime);
|
||||
} catch (Exception ex) {
|
||||
theApp.deleteLock();
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
public static LingeredApp startApp() throws IOException {
|
||||
return startApp(null);
|
||||
}
|
||||
|
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2015, 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.
|
||||
*/
|
||||
package jdk.test.lib.apps;
|
||||
|
||||
import java.util.concurrent.Phaser;
|
||||
|
||||
public class LingeredAppWithDeadlock extends LingeredApp {
|
||||
|
||||
private static final Object Lock1 = new Object();
|
||||
private static final Object Lock2 = new Object();
|
||||
|
||||
private static volatile int reachCount = 0;
|
||||
|
||||
private static final Phaser p = new Phaser(2);
|
||||
|
||||
private static class ThreadOne extends Thread {
|
||||
public void run() {
|
||||
// wait Lock2 is locked
|
||||
p.arriveAndAwaitAdvance();
|
||||
synchronized (Lock1) {
|
||||
// signal Lock1 is locked
|
||||
p.arriveAndAwaitAdvance();
|
||||
synchronized (Lock2) {
|
||||
reachCount += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class ThreadTwo extends Thread {
|
||||
public void run() {
|
||||
synchronized (Lock2) {
|
||||
// signal Lock2 is locked
|
||||
p.arriveAndAwaitAdvance();
|
||||
// wait Lock1 is locked
|
||||
p.arriveAndAwaitAdvance();
|
||||
synchronized (Lock1) {
|
||||
reachCount += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String args[]) {
|
||||
if (args.length != 1) {
|
||||
System.err.println("Lock file name is not specified");
|
||||
System.exit(7);
|
||||
}
|
||||
|
||||
// Run two theads that should come to deadlock
|
||||
new ThreadOne().start();
|
||||
new ThreadTwo().start();
|
||||
|
||||
if (reachCount > 0) {
|
||||
// Not able to deadlock, exiting
|
||||
System.exit(3);
|
||||
}
|
||||
|
||||
LingeredApp.main(args);
|
||||
}
|
||||
}
|
@ -112,6 +112,12 @@ public class WhiteBox {
|
||||
|
||||
public native void forceSafepoint();
|
||||
|
||||
private native long getConstantPool0(Class<?> aClass);
|
||||
public long getConstantPool(Class<?> aClass) {
|
||||
Objects.requireNonNull(aClass);
|
||||
return getConstantPool0(aClass);
|
||||
}
|
||||
|
||||
// JVMTI
|
||||
private native void addToBootstrapClassLoaderSearch0(String segment);
|
||||
public void addToBootstrapClassLoaderSearch(String segment){
|
||||
@ -159,6 +165,7 @@ public class WhiteBox {
|
||||
public native int NMTGetHashSize();
|
||||
|
||||
// Compiler
|
||||
public native int matchesMethod(Executable method, String pattern);
|
||||
public native int deoptimizeFrames(boolean makeNotEntrant);
|
||||
public native void deoptimizeAll();
|
||||
public boolean isMethodCompiled(Executable method) {
|
||||
@ -288,6 +295,11 @@ public class WhiteBox {
|
||||
public native void forceNMethodSweep();
|
||||
public native Object[] getCodeHeapEntries(int type);
|
||||
public native int getCompilationActivityMode();
|
||||
private native long getMethodData0(Executable method);
|
||||
public long getMethodData(Executable method) {
|
||||
Objects.requireNonNull(method);
|
||||
return getMethodData0(method);
|
||||
}
|
||||
public native Object[] getCodeBlob(long addr);
|
||||
|
||||
// Intered strings
|
||||
|
@ -35,14 +35,16 @@ public class NMethod extends CodeBlob {
|
||||
}
|
||||
private NMethod(Object[] obj) {
|
||||
super((Object[])obj[0]);
|
||||
assert obj.length == 4;
|
||||
assert obj.length == 5;
|
||||
comp_level = (Integer) obj[1];
|
||||
insts = (byte[]) obj[2];
|
||||
compile_id = (Integer) obj[3];
|
||||
address = (Long) obj[4];
|
||||
}
|
||||
public final byte[] insts;
|
||||
public final int comp_level;
|
||||
public final int compile_id;
|
||||
public final long address;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
@ -51,6 +53,7 @@ public class NMethod extends CodeBlob {
|
||||
+ ", insts=" + insts
|
||||
+ ", comp_level=" + comp_level
|
||||
+ ", compile_id=" + compile_id
|
||||
+ ", address=" + address
|
||||
+ '}';
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user