8136421: JEP 243: Java-Level JVM Compiler Interface

Reviewed-by: ihse, alanb, roland, coleenp, iveresov, kvn, kbarrett
This commit is contained in:
Christian Thalinger 2015-10-08 11:31:14 -10:00
parent f7ea8ac7b8
commit 4308ec2ec8
9 changed files with 59 additions and 6 deletions

View File

@ -5,3 +5,5 @@ nbproject/private/
^.hgtip ^.hgtip
^.bridge2 ^.bridge2
.DS_Store .DS_Store
.metadata/
.recommenders/

View File

@ -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_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
jdk.xml.bind_CLEAN := .properties jdk.xml.bind_CLEAN := .properties
jdk.xml.bind_COPY := .xsd JAXBContextFactory.java ZeroOneBooleanAdapter.java jdk.xml.bind_COPY := .xsd JAXBContextFactory.java ZeroOneBooleanAdapter.java
@ -479,6 +491,7 @@ ifneq ($(OPENJDK_TARGET_OS), $(OPENJDK_TARGET_OS_TYPE))
endif endif
SHARE_SRC_DIRS += \ SHARE_SRC_DIRS += \
$(HOTSPOT_TOPDIR)/src/$1/share/classes \
$(JDK_TOPDIR)/src/$1/share/classes \ $(JDK_TOPDIR)/src/$1/share/classes \
$(LANGTOOLS_TOPDIR)/src/$1/share/classes \ $(LANGTOOLS_TOPDIR)/src/$1/share/classes \
$(CORBA_TOPDIR)/src/$1/share/classes \ $(CORBA_TOPDIR)/src/$1/share/classes \
@ -531,7 +544,7 @@ define SetupModuleCompilation
$$(eval $$(call SetupJavaCompilation,$1, \ $$(eval $$(call SetupJavaCompilation,$1, \
SETUP := $$(if $$($1_SETUP), $$($1_SETUP), GENERATE_JDKBYTECODE), \ 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),\ INCLUDES := $(JDK_USER_DEFINED_FILTER),\
BIN := $$(if $$($1_BIN), $$($1_BIN), $(JDK_OUTPUTDIR)/modules/$1), \ BIN := $$(if $$($1_BIN), $$($1_BIN), $(JDK_OUTPUTDIR)/modules/$1), \
HEADERS := $(SUPPORT_OUTPUTDIR)/headers/$1, \ HEADERS := $(SUPPORT_OUTPUTDIR)/headers/$1, \

View File

@ -39,7 +39,8 @@ $(eval $(call IncludeCustomExtension, , Images-pre.gmk))
MAIN_MODULES += java.se java.smartcardio jdk.httpserver jdk.sctp \ MAIN_MODULES += java.se java.smartcardio jdk.httpserver jdk.sctp \
jdk.security.auth jdk.security.jgss jdk.pack200 jdk.xml.dom \ 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 # providers
PROVIDER_MODULES += jdk.charsets jdk.crypto.ec jdk.crypto.pkcs11 jdk.jvmstat jdk.localedata \ PROVIDER_MODULES += jdk.charsets jdk.crypto.ec jdk.crypto.pkcs11 jdk.jvmstat jdk.localedata \

View File

@ -107,6 +107,7 @@ $(eval $(call DeclareRecipesForPhase, GENSRC, \
JDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS)) JDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS))
LANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS)) LANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS))
CORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS)) CORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS))
HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS))
ALL_TARGETS += $(GENSRC_TARGETS) ALL_TARGETS += $(GENSRC_TARGETS)
@ -128,7 +129,8 @@ $(eval $(call DeclareRecipesForPhase, COPY, \
FILE_PREFIX := Copy, \ FILE_PREFIX := Copy, \
MAKE_SUBDIR := copy, \ MAKE_SUBDIR := copy, \
CHECK_MODULES := $(ALL_MODULES), \ CHECK_MODULES := $(ALL_MODULES), \
USE_WRAPPER := true)) USE_WRAPPER := true, \
MULTIPLE_MAKEFILES := true))
ALL_TARGETS += $(COPY_TARGETS) ALL_TARGETS += $(COPY_TARGETS)
@ -352,6 +354,8 @@ else
$(CORBA_GENSRC_TARGETS): interim-langtools $(CORBA_GENSRC_TARGETS): interim-langtools
$(HOTSPOT_GENSRC_TARGETS): interim-langtools
$(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk
$(GENDATA_TARGETS): interim-langtools buildtools-jdk $(GENDATA_TARGETS): interim-langtools buildtools-jdk
@ -415,6 +419,9 @@ else
# Explicitly add dependencies for special targets # Explicitly add dependencies for special targets
java.base-java: unpack-sec 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 jdk.jdeps-gendata: java rmic
zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \ zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \

View File

@ -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 MAKE_MAKEDIR_LIST := make
# Helper macro for DeclareRecipesForPhase # Helper macro for DeclareRecipesForPhase
@ -179,7 +180,7 @@ endef
# FILE_PREFIX : File prefix for this build phase # FILE_PREFIX : File prefix for this build phase
# USE_WRAPPER : Set to true to use ModuleWrapper.gmk # USE_WRAPPER : Set to true to use ModuleWrapper.gmk
# CHECK_MODULES : List of modules to try # 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 # phase in multiple repos
# Exported variables: # Exported variables:
# $1_MODULES : All modules that had rules generated # $1_MODULES : All modules that had rules generated

View File

@ -33,6 +33,7 @@ include SetupJavaCompilers.gmk
# Module list macros # Module list macros
ALL_TOP_SRC_DIRS := \ ALL_TOP_SRC_DIRS := \
$(HOTSPOT_TOPDIR)/src \
$(JDK_TOPDIR)/src \ $(JDK_TOPDIR)/src \
$(LANGTOOLS_TOPDIR)/src \ $(LANGTOOLS_TOPDIR)/src \
$(CORBA_TOPDIR)/src \ $(CORBA_TOPDIR)/src \

View File

@ -237,6 +237,7 @@
<to>java.instrument</to> <to>java.instrument</to>
<to>jdk.jfr</to> <to>jdk.jfr</to>
<to>jdk.scripting.nashorn</to> <to>jdk.scripting.nashorn</to>
<to>jdk.vm.ci</to>
</export> </export>
<export> <export>
<name>jdk.internal.org.objectweb.asm.commons</name> <name>jdk.internal.org.objectweb.asm.commons</name>
@ -290,6 +291,7 @@
<to>jdk.security.auth</to> <to>jdk.security.auth</to>
<to>jdk.security.jgss</to> <to>jdk.security.jgss</to>
<to>jdk.snmp</to> <to>jdk.snmp</to>
<to>jdk.vm.ci</to>
<to>java.instrument</to> <to>java.instrument</to>
</export> </export>
<export> <export>
@ -1871,6 +1873,18 @@
<name>com.sun.security.jgss</name> <name>com.sun.security.jgss</name>
</export> </export>
</module> </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> <module>
<name>jdk.xml.bind</name> <name>jdk.xml.bind</name>
<depend>java.activation</depend> <depend>java.activation</depend>

View File

@ -112,6 +112,12 @@ public class WhiteBox {
public native void forceSafepoint(); public native void forceSafepoint();
private native long getConstantPool0(Class<?> aClass);
public long getConstantPool(Class<?> aClass) {
Objects.requireNonNull(aClass);
return getConstantPool0(aClass);
}
// JVMTI // JVMTI
private native void addToBootstrapClassLoaderSearch0(String segment); private native void addToBootstrapClassLoaderSearch0(String segment);
public void addToBootstrapClassLoaderSearch(String segment){ public void addToBootstrapClassLoaderSearch(String segment){
@ -289,6 +295,11 @@ public class WhiteBox {
public native void forceNMethodSweep(); public native void forceNMethodSweep();
public native Object[] getCodeHeapEntries(int type); public native Object[] getCodeHeapEntries(int type);
public native int getCompilationActivityMode(); 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); public native Object[] getCodeBlob(long addr);
// Intered strings // Intered strings

View File

@ -35,14 +35,16 @@ public class NMethod extends CodeBlob {
} }
private NMethod(Object[] obj) { private NMethod(Object[] obj) {
super((Object[])obj[0]); super((Object[])obj[0]);
assert obj.length == 4; assert obj.length == 5;
comp_level = (Integer) obj[1]; comp_level = (Integer) obj[1];
insts = (byte[]) obj[2]; insts = (byte[]) obj[2];
compile_id = (Integer) obj[3]; compile_id = (Integer) obj[3];
address = (Long) obj[4];
} }
public final byte[] insts; public final byte[] insts;
public final int comp_level; public final int comp_level;
public final int compile_id; public final int compile_id;
public final long address;
@Override @Override
public String toString() { public String toString() {
@ -51,6 +53,7 @@ public class NMethod extends CodeBlob {
+ ", insts=" + insts + ", insts=" + insts
+ ", comp_level=" + comp_level + ", comp_level=" + comp_level
+ ", compile_id=" + compile_id + ", compile_id=" + compile_id
+ ", address=" + address
+ '}'; + '}';
} }
} }