8139921: add mx configuration files to support HotSpot IDE configuration generation
authortwisti
Tue, 01 Dec 2015 08:30:11 -1000
changeset 34505 90f4fd15d739
parent 34503 57d1a0e76091
child 34506 7af1663b3497
8139921: add mx configuration files to support HotSpot IDE configuration generation Reviewed-by: iveresov
hotspot/.hgignore
hotspot/.mx.jvmci/.project
hotspot/.mx.jvmci/.pydevproject
hotspot/.mx.jvmci/eclipse-settings/org.eclipse.jdt.core.prefs
hotspot/.mx.jvmci/hotspot/templates/eclipse/cproject
hotspot/.mx.jvmci/hotspot/templates/eclipse/settings/org.eclipse.cdt.core.prefs
hotspot/.mx.jvmci/hotspot/templates/eclipse/settings/org.eclipse.cdt.ui.prefs
hotspot/.mx.jvmci/hotspot/templates/eclipse/settings/org.eclipse.core.runtime.prefs
hotspot/.mx.jvmci/mx_jvmci.py
hotspot/.mx.jvmci/suite.py
--- a/hotspot/.hgignore	Tue Dec 01 08:05:10 2015 +0100
+++ b/hotspot/.hgignore	Tue Dec 01 08:30:11 2015 -1000
@@ -11,7 +11,12 @@
 ^.hgtip
 .DS_Store
 \.class$
-^\.?mx.jvmci/
+^\.mx.jvmci/env
+^\.mx.jvmci/.*\.pyc
+^\.mx.jvmci/eclipse-launches/.*
+^\.mx.jvmci/hotspot/eclipse/.*
+^\.idea/
+^workingsets.xml
 ^src/jdk.vm.ci/share/classes/\w[\w\.]*/.*\.xml
 ^src/jdk.vm.ci/share/classes/\w[\w\.]*/.*\.iml
 ^src/jdk.vm.ci/share/classes/\w[\w\.]*/nbproject
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/.mx.jvmci/.project	Tue Dec 01 08:30:11 2015 -1000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>mx.jvmci</name>
+	<comment></comment>
+	<projects>
+		<project>mx</project>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.python.pydev.PyDevBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.python.pydev.pythonNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/.mx.jvmci/.pydevproject	Tue Dec 01 08:30:11 2015 -1000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?eclipse-pydev version="1.0"?>
+
+<pydev_project>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
+<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
+<path>/mx.jvmci</path>
+</pydev_pathproperty>
+<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
+<path>/mx</path>
+</pydev_pathproperty>
+
+</pydev_project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/.mx.jvmci/eclipse-settings/org.eclipse.jdt.core.prefs	Tue Dec 01 08:30:11 2015 -1000
@@ -0,0 +1,1 @@
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/.mx.jvmci/hotspot/templates/eclipse/cproject	Tue Dec 01 08:30:11 2015 -1000
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="cdt.managedbuild.toolchain.gnu.solaris.base.945602881">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.solaris.base.945602881" moduleId="org.eclipse.cdt.core.settings" name="Default">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="hotspot" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.solaris.base.945602881" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
+					<folderInfo id="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.305678577" name="/" resourcePath="">
+						<toolChain id="cdt.managedbuild.toolchain.gnu.base.1866612258" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
+							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.base.2075405295" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
+							<builder autoBuildTarget="" buildPath="${workspace_loc:/hotspot}/.." cleanBuildTarget="clean" enableAutoBuild="true" enableCleanBuild="false" enabledIncrementalBuild="false" id="cdt.managedbuild.target.gnu.builder.base.81453037" incrementalBuildTarget="jvmg1" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.base">
+								<outputEntries>
+									<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name=""/>
+								</outputEntries>
+							</builder>
+							<tool id="cdt.managedbuild.tool.gnu.archiver.base.1094883386" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+							<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1342888057" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
+								<option id="gnu.cpp.compiler.option.preprocessor.def.634868600" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+									<listOptionValue builtIn="false" value="_LP64=1"/>
+									<listOptionValue builtIn="false" value="COMPILER1=1"/>
+									<listOptionValue builtIn="false" value="VM_LITTLE_ENDIAN=1"/>
+									<listOptionValue builtIn="false" value="ASSERT=1"/>
+									<listOptionValue builtIn="false" value="_REENTRANT=1"/>
+									<listOptionValue builtIn="false" value="DEBUG=1"/>
+									<listOptionValue builtIn="false" value="AMD64=1"/>
+									<listOptionValue builtIn="false" value="LINUX=1"/>
+									<listOptionValue builtIn="false" value="TARGET_ARCH_x86=1"/>
+									<listOptionValue builtIn="false" value="TARGET_COMPILER_gcc=1"/>
+									<listOptionValue builtIn="false" value="TARGET_OS_FAMILY_linux=1"/>
+									<listOptionValue builtIn="false" value="TARGET_OS_ARCH_linux_x86=1"/>
+									<listOptionValue builtIn="false" value="TARGET_ARCH_MODEL_x86_64=1"/>
+									<listOptionValue builtIn="false" value="INCLUDE_JVMCI=1"/>
+									<listOptionValue builtIn="false" value="COMPILER2=1"/>
+								</option>
+								<option id="gnu.cpp.compiler.option.preprocessor.undef.2137486146" name="Undefined symbols (-U)" superClass="gnu.cpp.compiler.option.preprocessor.undef"/>
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.866181452" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1535888880" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
+								<option id="gnu.c.compiler.option.preprocessor.def.symbols.825962493" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+									<listOptionValue builtIn="false" value="_LP64=1"/>
+									<listOptionValue builtIn="false" value="COMPILER1=1"/>
+									<listOptionValue builtIn="false" value="VM_LITTLE_ENDIAN=1"/>
+									<listOptionValue builtIn="false" value="ASSERT=1"/>
+									<listOptionValue builtIn="false" value="_REENTRANT=1"/>
+									<listOptionValue builtIn="false" value="DEBUG=1"/>
+									<listOptionValue builtIn="false" value="AMD64=1"/>
+								</option>
+								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.906671119" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.c.linker.base.1271041307" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
+							<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.550499946" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.274517766" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.assembler.base.554053529" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
+								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1055083385" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+					<sourceEntries>
+						<entry excluding="cpu/vm/templateTable_x86_32.cpp|cpu/vm/templateInterpreter_x86_32.cpp|cpu/vm/stubRoutines_x86_32.cpp|cpu/vm/stubGenerator_x86_32.cpp|cpu/vm/sharedRuntime_x86_32.cpp|cpu/vm/jniFastGetField_x86_32.cpp|cpu/vm/interpreterRT_x86_32.cpp|cpu/vm/interpreter_x86_32.cpp|cpu/vm/interp_masm_x86_32.cpp|cpu/vm/vtableStubs_x86_32.cpp" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
+					</sourceEntries>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+			<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+			<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+			<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="hotspot.null.1712822257" name="hotspot"/>
+	</storageModule>
+	<storageModule moduleId="refreshScope" versionNumber="2">
+		<configuration configurationName="Default">
+			<resource resourceType="PROJECT" workspacePath="/hotspot"/>
+		</configuration>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162.;cdt.managedbuild.tool.gnu.c.compiler.base.1862778408;cdt.managedbuild.tool.gnu.c.compiler.input.29080811">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.;cdt.managedbuild.tool.gnu.cpp.compiler.base.501581878;cdt.managedbuild.tool.gnu.cpp.compiler.input.1552002453">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.388217325;cdt.managedbuild.tool.gnu.solaris.cpp.compiler.base.377383651;cdt.managedbuild.tool.gnu.cpp.compiler.input.103897085">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.305678577;cdt.managedbuild.tool.gnu.solaris.c.compiler.base.351149667;cdt.managedbuild.tool.gnu.c.compiler.input.820447325">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.388217325;cdt.managedbuild.tool.gnu.solaris.c.compiler.base.212558466;cdt.managedbuild.tool.gnu.c.compiler.input.1115218695">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.305678577;cdt.managedbuild.tool.gnu.c.compiler.base.1535888880;cdt.managedbuild.tool.gnu.c.compiler.input.906671119">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051.;cdt.managedbuild.tool.gnu.c.compiler.base.592469102;cdt.managedbuild.tool.gnu.c.compiler.input.1891927256">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.305678577;cdt.managedbuild.tool.gnu.solaris.cpp.compiler.base.429326045;cdt.managedbuild.tool.gnu.cpp.compiler.input.1860785837">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.;cdt.managedbuild.tool.gnu.c.compiler.base.647707969;cdt.managedbuild.tool.gnu.c.compiler.input.1613323394">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162.;cdt.managedbuild.tool.gnu.c.compiler.base.1536145259;cdt.managedbuild.tool.gnu.c.compiler.input.1935913022">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.305678577;cdt.managedbuild.tool.gnu.cpp.compiler.base.1342888057;cdt.managedbuild.tool.gnu.cpp.compiler.input.866181452">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1404788740;cdt.managedbuild.tool.gnu.cpp.compiler.input.1175382997">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162.;cdt.managedbuild.tool.gnu.cpp.compiler.base.677873708;cdt.managedbuild.tool.gnu.cpp.compiler.input.429177901">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1920567990;cdt.managedbuild.tool.gnu.cpp.compiler.input.1463421641">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225.;cdt.managedbuild.tool.gnu.c.compiler.base.961579870;cdt.managedbuild.tool.gnu.c.compiler.input.1710196852">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162;cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1673917487;cdt.managedbuild.tool.gnu.cpp.compiler.input.931461388">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.core.pathentry"/>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/.mx.jvmci/hotspot/templates/eclipse/settings/org.eclipse.cdt.core.prefs	Tue Dec 01 08:30:11 2015 -1000
@@ -0,0 +1,198 @@
+eclipse.preferences.version=1
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162/BUILDING_FROM_IDE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162/BUILDING_FROM_IDE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162/BUILDING_FROM_IDE/value=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162/append=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.1958236162/appendContributed=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.562670952/BUILDING_FROM_IDE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.562670952/BUILDING_FROM_IDE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.562670952/BUILDING_FROM_IDE/value=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.562670952/append=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004.562670952/appendContributed=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004/BUILDING_FROM_IDE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004/BUILDING_FROM_IDE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004/BUILDING_FROM_IDE/value=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004/append=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.2116626004/appendContributed=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051/BUILDING_FROM_IDE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051/BUILDING_FROM_IDE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051/BUILDING_FROM_IDE/value=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051/append=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.500153051/appendContributed=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225/BUILDING_FROM_IDE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225/BUILDING_FROM_IDE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225/BUILDING_FROM_IDE/value=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225/append=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.915924225/appendContributed=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162/BUILDING_FROM_IDE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162/BUILDING_FROM_IDE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162/BUILDING_FROM_IDE/value=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162/append=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881.982312162/appendContributed=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881/BUILDING_FROM_IDE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881/BUILDING_FROM_IDE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881/BUILDING_FROM_IDE/value=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881/append=true
+environment/project/cdt.managedbuild.toolchain.gnu.solaris.base.945602881/appendContributed=true
+org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.cdt.core.formatter.alignment_for_assignment=16
+org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80
+org.eclipse.cdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.cdt.core.formatter.alignment_for_compact_if=0
+org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18
+org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=0
+org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16
+org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48
+org.eclipse.cdt.core.formatter.alignment_for_expression_list=0
+org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.cdt.core.formatter.alignment_for_member_access=0
+org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=16
+org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.cdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=end_of_line
+org.eclipse.cdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=1
+org.eclipse.cdt.core.formatter.comment.never_indent_line_comments_on_first_column=true
+org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.cdt.core.formatter.compact_else_if=true
+org.eclipse.cdt.core.formatter.continuation_indentation=2
+org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false
+org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0
+org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true
+org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=false
+org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false
+org.eclipse.cdt.core.formatter.indent_empty_lines=false
+org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.cdt.core.formatter.indentation.size=2
+org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert
+org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert
+org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert
+org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert
+org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert
+org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert
+org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert
+org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert
+org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert
+org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert
+org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert
+org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert
+org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.cdt.core.formatter.join_wrapped_lines=true
+org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=true
+org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.cdt.core.formatter.lineSplit=160
+org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.cdt.core.formatter.tabulation.char=space
+org.eclipse.cdt.core.formatter.tabulation.size=2
+org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/.mx.jvmci/hotspot/templates/eclipse/settings/org.eclipse.cdt.ui.prefs	Tue Dec 01 08:30:11 2015 -1000
@@ -0,0 +1,5 @@
+#Wed Sep 01 16:21:02 PDT 2010
+eclipse.preferences.version=1
+formatter_profile=_hotspotStyle
+formatter_settings_version=1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/.mx.jvmci/hotspot/templates/eclipse/settings/org.eclipse.core.runtime.prefs	Tue Dec 01 08:30:11 2015 -1000
@@ -0,0 +1,6 @@
+#Wed Sep 01 16:13:40 PDT 2010
+content-types/enabled=true
+content-types/org.eclipse.cdt.core.cxxHeader/file-extensions=hpp,incl
+content-types/org.eclipse.cdt.core.cxxSource/file-extensions=cpp
+eclipse.preferences.version=1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/.mx.jvmci/mx_jvmci.py	Tue Dec 01 08:30:11 2015 -1000
@@ -0,0 +1,890 @@
+#
+# ----------------------------------------------------------------------------------------------------
+#
+# Copyright (c) 2007, 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.
+#
+# ----------------------------------------------------------------------------------------------------
+
+import os, shutil, zipfile, re, time, sys, datetime, platform
+from os.path import join, exists, dirname, isdir
+from argparse import ArgumentParser, REMAINDER
+import StringIO
+import xml.dom.minidom
+import subprocess
+
+import mx
+import mx_gate
+import mx_unittest
+
+from mx_gate import Task
+from mx_unittest import unittest
+
+_suite = mx.suite('jvmci')
+
+"""
+Top level directory of the JDK source workspace.
+"""
+_jdkSourceRoot = dirname(_suite.dir)
+
+_JVMCI_JDK_TAG = 'jvmci'
+
+_minVersion = mx.VersionSpec('1.9')
+
+# max version (first _unsupported_ version)
+_untilVersion = None
+
+_jvmciModes = {
+    'hosted' : ['-XX:+UnlockExperimentalVMOptions', '-XX:+EnableJVMCI'],
+    'jit' : ['-XX:+UnlockExperimentalVMOptions', '-XX:+EnableJVMCI', '-XX:+UseJVMCICompiler'],
+    'disabled' : []
+}
+
+# TODO: can optimized be built without overriding release build?
+_jdkDebugLevels = ['release', 'fastdebug', 'slowdebug']
+
+# TODO: add client once/if it can be built on 64-bit platforms
+_jdkJvmVariants = ['server']
+
+"""
+Translation table from mx_jvmci:8 --vmbuild values to mx_jvmci:9 --jdk-debug-level values.
+"""
+_legacyVmbuilds = {
+    'product' : 'release',
+    'debug' : 'slowdebug'
+}
+
+"""
+Translates a mx_jvmci:8 --vmbuild value to a mx_jvmci:9 --jdk-debug-level value.
+"""
+def _translateLegacyDebugLevel(debugLevel):
+    return _legacyVmbuilds.get(debugLevel, debugLevel)
+
+"""
+Translation table from mx_jvmci:8 --vm values to mx_jvmci:9 (--jdk-jvm-variant, --jvmci-mode) tuples.
+"""
+_legacyVms = {
+    'jvmci' : ('server', 'jit')
+}
+
+"""
+A VM configuration composed of a JDK debug level, JVM variant and a JVMCI mode.
+This is also a context manager that can be used with the 'with' statement to set/change
+a VM configuration within a dynamic scope. For example:
+
+    with ConfiguredJDK(debugLevel='fastdebug'):
+        dacapo(['pmd'])
+"""
+class VM:
+    def __init__(self, jvmVariant=None, debugLevel=None, jvmciMode=None):
+        self.update(jvmVariant, debugLevel, jvmciMode)
+
+    def update(self, jvmVariant=None, debugLevel=None, jvmciMode=None):
+        if jvmVariant in _legacyVms:
+            # Backwards compatibility for mx_jvmci:8 API
+            jvmVariant, newJvmciMode = _legacyVms[jvmVariant]
+            if jvmciMode is not None and jvmciMode != newJvmciMode:
+                mx.abort('JVM variant "' + jvmVariant + '" implies JVMCI mode "' + newJvmciMode +
+                         '" which conflicts with explicitly specified JVMCI mode of "' + jvmciMode + '"')
+            jvmciMode = newJvmciMode
+        debugLevel = _translateLegacyDebugLevel(debugLevel)
+        assert jvmVariant is None or jvmVariant in _jdkJvmVariants, jvmVariant
+        assert debugLevel is None or debugLevel in _jdkDebugLevels, debugLevel
+        assert jvmciMode is None or jvmciMode in _jvmciModes, jvmciMode
+        self.jvmVariant = jvmVariant or _vm.jvmVariant
+        self.debugLevel = debugLevel or _vm.debugLevel
+        self.jvmciMode = jvmciMode or _vm.jvmciMode
+
+    def __enter__(self):
+        global _vm
+        self.previousVm = _vm
+        _vm = self
+
+    def __exit__(self, exc_type, exc_value, traceback):
+        global _vm
+        _vm = self.previousVm
+
+_vm = VM(jvmVariant=_jdkJvmVariants[0], debugLevel=_jdkDebugLevels[0], jvmciMode='hosted')
+
+def get_vm():
+    """
+    Gets the configured VM.
+    """
+    return _vm
+
+def relativeVmLibDirInJdk():
+    mxos = mx.get_os()
+    if mxos == 'darwin':
+        return join('lib')
+    if mxos == 'windows' or mxos == 'cygwin':
+        return join('bin')
+    return join('lib', mx.get_arch())
+
+def isJVMCIEnabled(vm):
+    assert vm in _jdkJvmVariants
+    return True
+
+class JvmciJDKDeployedDist(object):
+    def __init__(self, name, compilers=False):
+        self._name = name
+        self._compilers = compilers
+
+    def dist(self):
+        return mx.distribution(self._name)
+
+    def deploy(self, jdkDir):
+        mx.nyi('deploy', self)
+
+class ExtJDKDeployedDist(JvmciJDKDeployedDist):
+    def __init__(self, name):
+        JvmciJDKDeployedDist.__init__(self, name)
+
+
+"""
+The monolithic JVMCI distribution is deployed through use of -Xbootclasspath/p
+so that it's not necessary to run JDK make after editing JVMCI sources.
+The latter causes all JDK Java sources to be rebuilt since JVMCI is
+(currently) in java.base.
+"""
+_monolithicJvmci = JvmciJDKDeployedDist('JVMCI')
+
+"""
+List of distributions that are deployed on the boot class path.
+Note: In jvmci-8, they were deployed directly into the JDK directory.
+"""
+jdkDeployedDists = [_monolithicJvmci]
+
+def _makehelp():
+    return subprocess.check_output([mx.gmake_cmd(), 'help'], cwd=_jdkSourceRoot)
+
+def _runmake(args):
+    """run the JDK make process
+
+To build hotspot and import it into the JDK: "mx make hotspot import-hotspot"
+{0}"""
+
+    jdkBuildDir = _get_jdk_build_dir()
+    if not exists(jdkBuildDir):
+        # JDK9 must be bootstrapped with a JDK8
+        compliance = mx.JavaCompliance('8')
+        jdk8 = mx.get_jdk(compliance.exactMatch, versionDescription=compliance.value)
+        cmd = ['sh', 'configure', '--with-debug-level=' + _vm.debugLevel, '--disable-debug-symbols', '--disable-precompiled-headers',
+               '--with-jvm-variants=' + _vm.jvmVariant, '--disable-warnings-as-errors', '--with-boot-jdk=' + jdk8.home]
+        mx.run(cmd, cwd=_jdkSourceRoot)
+    cmd = [mx.gmake_cmd(), 'CONF=' + _vm.debugLevel]
+    if mx.get_opts().verbose:
+        cmd.append('LOG=debug')
+    cmd.extend(args)
+    if mx.get_opts().use_jdk_image and 'images' not in args:
+        cmd.append('images')
+
+    if not mx.get_opts().verbose:
+        mx.log('--------------- make execution ----------------------')
+        mx.log('Working directory: ' + _jdkSourceRoot)
+        mx.log('Command line: ' + ' '.join(cmd))
+        mx.log('-----------------------------------------------------')
+
+    mx.run(cmd, cwd=_jdkSourceRoot)
+
+    if 'images' in cmd:
+        _create_jdk_bundle(jdkBuildDir)
+
+def _get_jdk_bundle_arches():
+    """
+    Gets a list of names that will be the part of a JDK bundle's file name denoting the architecture.
+    The first element in the list is the canonical name. Symlinks should be created for the
+    remaining names.
+    """
+    cpu = mx.get_arch()
+    if cpu == 'amd64':
+        return ['x64', 'x86_64', 'amd64']
+    elif cpu == 'sparcv9':
+        return ['sparcv9']
+    mx.abort('Unsupported JDK bundle arch: ' + cpu)
+
+def _create_jdk_bundle(jdkBuildDir):
+    """
+    Creates a tar.gz JDK archive, an accompanying tar.gz.sha1 file with its
+    SHA1 signature plus symlinks to the archive for non-canonical architecture names.
+    """
+    jdkImageDir = join(jdkBuildDir, 'images', 'jdk')
+
+    arches = _get_jdk_bundle_arches()
+    jdkTgzPath = join(_suite.get_output_root(), 'jdk-bundles', 'jdk9-{}-{}.tar.gz'.format(_get_openjdk_os(), arches[0]))
+    with mx.Archiver(jdkTgzPath, kind='tgz') as arc:
+        mx.log('Creating ' + jdkTgzPath)
+        for root, _, filenames in os.walk(jdkImageDir):
+            for name in filenames:
+                f = join(root, name)
+                arcname = 'jdk1.9.0/' + os.path.relpath(f, jdkImageDir)
+                arc.zf.add(name=f, arcname=arcname, recursive=False)
+        # The OpenJDK build creates an empty cacerts file so grab one from
+        # the default JDK which is assumed to be an OracleJDK
+        cacerts = join(mx.get_jdk(tag='default').home, 'jre', 'lib', 'security', 'cacerts')
+        arc.zf.add(name=cacerts, arcname='jdk1.9.0/lib/security/cacerts')
+
+    with open(jdkTgzPath + '.sha1', 'w') as fp:
+        mx.log('Creating ' + jdkTgzPath + '.sha1')
+        fp.write(mx.sha1OfFile(jdkTgzPath))
+
+    def _create_link(source, link_name):
+        if exists(link_name):
+            os.remove(link_name)
+        mx.log('Creating ' + link_name + ' -> ' + source)
+        os.symlink(source, link_name)
+
+    for arch in arches[1:]:
+        link_name = join(_suite.get_output_root(), 'jdk-bundles', 'jdk9-{}-{}.tar.gz'.format(_get_openjdk_os(), arch))
+        jdkTgzName = os.path.basename(jdkTgzPath)
+        _create_link(jdkTgzName, link_name)
+        _create_link(jdkTgzName + '.sha1', link_name + '.sha1')
+
+def _runmultimake(args):
+    """run the JDK make process for one or more configurations"""
+
+    jvmVariantsDefault = ','.join(_jdkJvmVariants)
+    debugLevelsDefault = ','.join(_jdkDebugLevels)
+
+    parser = ArgumentParser(prog='mx multimake')
+    parser.add_argument('--jdk-jvm-variants', '--vms', help='a comma separated list of VMs to build (default: ' + jvmVariantsDefault + ')', metavar='<args>', default=jvmVariantsDefault)
+    parser.add_argument('--jdk-debug-levels', '--builds', help='a comma separated list of JDK debug levels (default: ' + debugLevelsDefault + ')', metavar='<args>', default=debugLevelsDefault)
+    parser.add_argument('-n', '--no-check', action='store_true', help='omit running "java -version" after each build')
+    select = parser.add_mutually_exclusive_group()
+    select.add_argument('-c', '--console', action='store_true', help='send build output to console instead of log files')
+    select.add_argument('-d', '--output-dir', help='directory for log files instead of current working directory', default=os.getcwd(), metavar='<dir>')
+
+    args = parser.parse_args(args)
+    jvmVariants = args.jdk_jvm_variants.split(',')
+    debugLevels = [_translateLegacyDebugLevel(dl) for dl in args.jdk_debug_levels.split(',')]
+
+    allStart = time.time()
+    for jvmVariant in jvmVariants:
+        for debugLevel in debugLevels:
+            if not args.console:
+                logFile = join(mx.ensure_dir_exists(args.output_dir), jvmVariant + '-' + debugLevel + '.log')
+                log = open(logFile, 'wb')
+                start = time.time()
+                mx.log('BEGIN: ' + jvmVariant + '-' + debugLevel + '\t(see: ' + logFile + ')')
+                verbose = ['-v'] if mx.get_opts().verbose else []
+                # Run as subprocess so that output can be directed to a file
+                cmd = [sys.executable, '-u', mx.__file__] + verbose + ['--jdk-jvm-variant=' + jvmVariant, '--jdk-debug-level=' + debugLevel, 'make']
+                mx.logv("executing command: " + str(cmd))
+                subprocess.check_call(cmd, cwd=_suite.dir, stdout=log, stderr=subprocess.STDOUT)
+                duration = datetime.timedelta(seconds=time.time() - start)
+                mx.log('END:   ' + jvmVariant + '-' + debugLevel + '\t[' + str(duration) + ']')
+            else:
+                with VM(jvmVariant=jvmVariant, debugLevel=debugLevel):
+                    _runmake([])
+            if not args.no_check:
+                with VM(jvmciMode='jit'):
+                    run_vm(['-XX:-BootstrapJVMCI', '-version'])
+    allDuration = datetime.timedelta(seconds=time.time() - allStart)
+    mx.log('TOTAL TIME:   ' + '[' + str(allDuration) + ']')
+
+class HotSpotProject(mx.NativeProject):
+    """
+    Defines a NativeProject representing the HotSpot binaries built via make.
+    """
+    def __init__(self, suite, name, deps, workingSets, **args):
+        assert name == 'hotspot'
+        mx.NativeProject.__init__(self, suite, name, "", [], deps, workingSets, None, None, join(suite.mxDir, name))
+
+    def eclipse_config_up_to_date(self, configZip):
+        # Assume that any change to this module might imply changes to the generated IDE files
+        if configZip.isOlderThan(__file__):
+            return False
+        for _, source in self._get_eclipse_settings_sources().iteritems():
+            if configZip.isOlderThan(source):
+                return False
+        return True
+
+    def _get_eclipse_settings_sources(self):
+        """
+        Gets a dictionary from the name of an Eclipse settings file to
+        the file providing its generated content.
+        """
+        if not hasattr(self, '_eclipse_settings'):
+            esdict = {}
+            templateSettingsDir = join(self.dir, 'templates', 'eclipse', 'settings')
+            if exists(templateSettingsDir):
+                for name in os.listdir(templateSettingsDir):
+                    source = join(templateSettingsDir, name)
+                    esdict[name] = source
+            self._eclipse_settings = esdict
+        return self._eclipse_settings
+
+    def _eclipseinit(self, files=None, libFiles=None):
+        """
+        Generates an Eclipse project for each HotSpot build configuration.
+        """
+
+        roots = [
+            'ASSEMBLY_EXCEPTION',
+            'LICENSE',
+            'README',
+            'THIRD_PARTY_README',
+            'agent',
+            'make',
+            'src',
+            'test'
+        ]
+
+        for jvmVariant in _jdkJvmVariants:
+            for debugLevel in _jdkDebugLevels:
+                name = jvmVariant + '-' + debugLevel
+                eclProjectDir = join(self.dir, 'eclipse', name)
+                mx.ensure_dir_exists(eclProjectDir)
+
+                out = mx.XMLDoc()
+                out.open('projectDescription')
+                out.element('name', data='hotspot:' + name)
+                out.element('comment', data='')
+                out.element('projects', data='')
+                out.open('buildSpec')
+                out.open('buildCommand')
+                out.element('name', data='org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder')
+                out.element('triggers', data='full,incremental')
+                out.element('arguments', data='')
+                out.close('buildCommand')
+
+                out.close('buildSpec')
+                out.open('natures')
+                out.element('nature', data='org.eclipse.cdt.core.cnature')
+                out.element('nature', data='org.eclipse.cdt.core.ccnature')
+                out.element('nature', data='org.eclipse.cdt.managedbuilder.core.managedBuildNature')
+                out.element('nature', data='org.eclipse.cdt.managedbuilder.core.ScannerConfigNature')
+                out.close('natures')
+
+                if roots:
+                    out.open('linkedResources')
+                    for r in roots:
+                        f = join(_suite.dir, r)
+                        out.open('link')
+                        out.element('name', data=r)
+                        out.element('type', data='2' if isdir(f) else '1')
+                        out.element('locationURI', data=mx.get_eclipse_project_rel_locationURI(f, eclProjectDir))
+                        out.close('link')
+
+                    out.open('link')
+                    out.element('name', data='generated')
+                    out.element('type', data='2')
+                    generated = join(_get_hotspot_build_dir(jvmVariant, debugLevel), 'generated')
+                    out.element('locationURI', data=mx.get_eclipse_project_rel_locationURI(generated, eclProjectDir))
+                    out.close('link')
+
+                    out.close('linkedResources')
+                out.close('projectDescription')
+                projectFile = join(eclProjectDir, '.project')
+                mx.update_file(projectFile, out.xml(indent='\t', newl='\n'))
+                if files:
+                    files.append(projectFile)
+
+                cprojectTemplate = join(self.dir, 'templates', 'eclipse', 'cproject')
+                cprojectFile = join(eclProjectDir, '.cproject')
+                with open(cprojectTemplate) as f:
+                    content = f.read()
+                mx.update_file(cprojectFile, content)
+                if files:
+                    files.append(cprojectFile)
+
+                settingsDir = join(eclProjectDir, ".settings")
+                mx.ensure_dir_exists(settingsDir)
+                for name, source in self._get_eclipse_settings_sources().iteritems():
+                    out = StringIO.StringIO()
+                    print >> out, '# GENERATED -- DO NOT EDIT'
+                    print >> out, '# Source:', source
+                    with open(source) as f:
+                        print >> out, f.read()
+                    content = out.getvalue()
+                    mx.update_file(join(settingsDir, name), content)
+                    if files:
+                        files.append(join(settingsDir, name))
+
+    def getBuildTask(self, args):
+        return JDKBuildTask(self, args, _vm.debugLevel, _vm.jvmVariant)
+
+
+class JDKBuildTask(mx.NativeBuildTask):
+    def __init__(self, project, args, debugLevel, jvmVariant):
+        mx.NativeBuildTask.__init__(self, args, project)
+        self.jvmVariant = jvmVariant
+        self.debugLevel = debugLevel
+
+    def __str__(self):
+        return 'Building JDK[{}, {}]'.format(self.debugLevel, self.jvmVariant)
+
+    def build(self):
+        if mx.get_opts().use_jdk_image:
+            _runmake(['images'])
+        else:
+            _runmake([])
+        self._newestOutput = None
+
+    def clean(self, forBuild=False):
+        if forBuild:  # Let make handle incremental builds
+            return
+        if exists(_get_jdk_build_dir(self.debugLevel)):
+            _runmake(['clean'])
+        self._newestOutput = None
+
+# Backwards compatibility for mx_jvmci:8 API
+def buildvms(args):
+    _runmultimake(args)
+
+def run_vm(args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, debugLevel=None, vmbuild=None):
+    """run a Java program by executing the java executable in a JVMCI JDK"""
+    jdkTag = mx.get_jdk_option().tag
+    if jdkTag and jdkTag != _JVMCI_JDK_TAG:
+        mx.abort('The "--jdk" option must have the tag "' + _JVMCI_JDK_TAG + '" when running a command requiring a JVMCI VM')
+    jdk = get_jvmci_jdk(debugLevel=debugLevel or _translateLegacyDebugLevel(vmbuild))
+    return jdk.run_java(args, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd, timeout=timeout)
+
+def _unittest_vm_launcher(vmArgs, mainClass, mainClassArgs):
+    run_vm(vmArgs + [mainClass] + mainClassArgs)
+
+mx_unittest.set_vm_launcher('JVMCI VM launcher', _unittest_vm_launcher)
+
+def _jvmci_gate_runner(args, tasks):
+    # Build release server VM now so we can run the unit tests
+    with Task('BuildHotSpotJVMCIHosted: release', tasks) as t:
+        if t: _runmultimake(['--jdk-jvm-variants', 'server', '--jdk-debug-levels', 'release'])
+
+    # Run unit tests in hosted mode
+    with VM(jvmVariant='server', debugLevel='release', jvmciMode='hosted'):
+        with Task('JVMCI UnitTests: hosted-release', tasks) as t:
+            if t: unittest(['--suite', 'jvmci', '--enable-timing', '--verbose', '--fail-fast'])
+
+    # Build the other VM flavors
+    with Task('BuildHotSpotJVMCIOthers: fastdebug', tasks) as t:
+        if t: _runmultimake(['--jdk-jvm-variants', 'server', '--jdk-debug-levels', 'fastdebug'])
+
+    with Task('CleanAndBuildIdealGraphVisualizer', tasks, disableJacoco=True) as t:
+        if t and platform.processor() != 'sparc':
+            buildxml = mx._cygpathU2W(join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml'))
+            mx.run(['ant', '-f', buildxml, '-q', 'clean', 'build'], env=_igvBuildEnv())
+
+mx_gate.add_gate_runner(_suite, _jvmci_gate_runner)
+mx_gate.add_gate_argument('-g', '--only-build-jvmci', action='store_false', dest='buildNonJVMCI', help='only build the JVMCI VM')
+
+def _igvJdk():
+    v8u20 = mx.VersionSpec("1.8.0_20")
+    v8u40 = mx.VersionSpec("1.8.0_40")
+    v8 = mx.VersionSpec("1.8")
+    def _igvJdkVersionCheck(version):
+        return version >= v8 and (version < v8u20 or version >= v8u40)
+    return mx.get_jdk(_igvJdkVersionCheck, versionDescription='>= 1.8 and < 1.8.0u20 or >= 1.8.0u40', purpose="building & running IGV").home
+
+def _igvBuildEnv():
+        # When the http_proxy environment variable is set, convert it to the proxy settings that ant needs
+    env = dict(os.environ)
+    proxy = os.environ.get('http_proxy')
+    if not (proxy is None) and len(proxy) > 0:
+        if '://' in proxy:
+            # Remove the http:// prefix (or any other protocol prefix)
+            proxy = proxy.split('://', 1)[1]
+        # Separate proxy server name and port number
+        proxyName, proxyPort = proxy.split(':', 1)
+        proxyEnv = '-DproxyHost="' + proxyName + '" -DproxyPort=' + proxyPort
+        env['ANT_OPTS'] = proxyEnv
+
+    env['JAVA_HOME'] = _igvJdk()
+    return env
+
+def igv(args):
+    """run the Ideal Graph Visualizer"""
+    logFile = '.ideal_graph_visualizer.log'
+    with open(join(_suite.dir, logFile), 'w') as fp:
+        mx.logv('[Ideal Graph Visualizer log is in ' + fp.name + ']')
+        nbplatform = join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'nbplatform')
+
+        # Remove NetBeans platform if it is earlier than the current supported version
+        if exists(nbplatform):
+            updateTrackingFile = join(nbplatform, 'platform', 'update_tracking', 'org-netbeans-core.xml')
+            if not exists(updateTrackingFile):
+                mx.log('Could not find \'' + updateTrackingFile + '\', removing NetBeans platform')
+                shutil.rmtree(nbplatform)
+            else:
+                dom = xml.dom.minidom.parse(updateTrackingFile)
+                currentVersion = mx.VersionSpec(dom.getElementsByTagName('module_version')[0].getAttribute('specification_version'))
+                supportedVersion = mx.VersionSpec('3.43.1')
+                if currentVersion < supportedVersion:
+                    mx.log('Replacing NetBeans platform version ' + str(currentVersion) + ' with version ' + str(supportedVersion))
+                    shutil.rmtree(nbplatform)
+                elif supportedVersion < currentVersion:
+                    mx.log('Supported NetBeans version in igv command should be updated to ' + str(currentVersion))
+
+        if not exists(nbplatform):
+            mx.logv('[This execution may take a while as the NetBeans platform needs to be downloaded]')
+
+        env = _igvBuildEnv()
+        # make the jar for Batik 1.7 available.
+        env['IGV_BATIK_JAR'] = mx.library('BATIK').get_path(True)
+        if mx.run(['ant', '-f', mx._cygpathU2W(join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml')), '-l', mx._cygpathU2W(fp.name), 'run'], env=env, nonZeroIsFatal=False):
+            mx.abort("IGV ant build & launch failed. Check '" + logFile + "'. You can also try to delete 'src/share/tools/IdealGraphVisualizer/nbplatform'.")
+
+def c1visualizer(args):
+    """run the Cl Compiler Visualizer"""
+    libpath = join(_suite.dir, 'lib')
+    if mx.get_os() == 'windows':
+        executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer.exe')
+    else:
+        executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer')
+
+    # Check whether the current C1Visualizer installation is the up-to-date
+    if exists(executable) and not exists(mx.library('C1VISUALIZER_DIST').get_path(resolve=False)):
+        mx.log('Updating C1Visualizer')
+        shutil.rmtree(join(libpath, 'c1visualizer'))
+
+    archive = mx.library('C1VISUALIZER_DIST').get_path(resolve=True)
+
+    if not exists(executable):
+        zf = zipfile.ZipFile(archive, 'r')
+        zf.extractall(libpath)
+
+    if not exists(executable):
+        mx.abort('C1Visualizer binary does not exist: ' + executable)
+
+    if mx.get_os() != 'windows':
+        # Make sure that execution is allowed. The zip file does not always specfiy that correctly
+        os.chmod(executable, 0777)
+
+    mx.run([executable])
+
+def hsdis(args, copyToDir=None):
+    """download the hsdis library
+
+    This is needed to support HotSpot's assembly dumping features.
+    By default it downloads the Intel syntax version, use the 'att' argument to install AT&T syntax."""
+    flavor = 'intel'
+    if 'att' in args:
+        flavor = 'att'
+    if mx.get_arch() == "sparcv9":
+        flavor = "sparcv9"
+    lib = mx.add_lib_suffix('hsdis-' + mx.get_arch())
+    path = join(_suite.dir, 'lib', lib)
+
+    sha1s = {
+        'att/hsdis-amd64.dll' : 'bcbd535a9568b5075ab41e96205e26a2bac64f72',
+        'att/hsdis-amd64.so' : '58919ba085d4ef7a513f25bae75e7e54ee73c049',
+        'intel/hsdis-amd64.dll' : '6a388372cdd5fe905c1a26ced614334e405d1f30',
+        'intel/hsdis-amd64.so' : '844ed9ffed64fe9599638f29a8450c50140e3192',
+        'intel/hsdis-amd64.dylib' : 'fdb13ef0d7d23d93dacaae9c98837bea0d4fc5a2',
+        'sparcv9/hsdis-sparcv9.so': '970640a9af0bd63641f9063c11275b371a59ee60',
+    }
+
+    flavoredLib = flavor + "/" + lib
+    if flavoredLib not in sha1s:
+        mx.logv("hsdis not supported on this plattform or architecture")
+        return
+
+    if not exists(path):
+        sha1 = sha1s[flavoredLib]
+        sha1path = path + '.sha1'
+        mx.download_file_with_sha1('hsdis', path, ['https://lafo.ssw.uni-linz.ac.at/pub/hsdis/' + flavoredLib], sha1, sha1path, True, True, sources=False)
+    if copyToDir is not None and exists(copyToDir):
+        shutil.copy(path, copyToDir)
+
+def hcfdis(args):
+    """disassemble HexCodeFiles embedded in text files
+
+    Run a tool over the input files to convert all embedded HexCodeFiles
+    to a disassembled format."""
+
+    parser = ArgumentParser(prog='mx hcfdis')
+    parser.add_argument('-m', '--map', help='address to symbol map applied to disassembler output')
+    parser.add_argument('files', nargs=REMAINDER, metavar='files...')
+
+    args = parser.parse_args(args)
+
+    path = mx.library('HCFDIS').get_path(resolve=True)
+    mx.run_java(['-cp', path, 'com.oracle.max.hcfdis.HexCodeFileDis'] + args.files)
+
+    if args.map is not None:
+        addressRE = re.compile(r'0[xX]([A-Fa-f0-9]+)')
+        with open(args.map) as fp:
+            lines = fp.read().splitlines()
+        symbols = dict()
+        for l in lines:
+            addressAndSymbol = l.split(' ', 1)
+            if len(addressAndSymbol) == 2:
+                address, symbol = addressAndSymbol
+                if address.startswith('0x'):
+                    address = long(address, 16)
+                    symbols[address] = symbol
+        for f in args.files:
+            with open(f) as fp:
+                lines = fp.read().splitlines()
+            updated = False
+            for i in range(0, len(lines)):
+                l = lines[i]
+                for m in addressRE.finditer(l):
+                    sval = m.group(0)
+                    val = long(sval, 16)
+                    sym = symbols.get(val)
+                    if sym:
+                        l = l.replace(sval, sym)
+                        updated = True
+                        lines[i] = l
+            if updated:
+                mx.log('updating ' + f)
+                with open('new_' + f, "w") as fp:
+                    for l in lines:
+                        print >> fp, l
+
+def jol(args):
+    """Java Object Layout"""
+    joljar = mx.library('JOL_INTERNALS').get_path(resolve=True)
+    candidates = mx.findclass(args, logToConsole=False, matcher=lambda s, classname: s == classname or classname.endswith('.' + s) or classname.endswith('$' + s))
+
+    if len(candidates) > 0:
+        candidates = mx.select_items(sorted(candidates))
+    else:
+        # mx.findclass can be mistaken, don't give up yet
+        candidates = args
+
+    run_vm(['-javaagent:' + joljar, '-cp', os.pathsep.join([mx.classpath(), joljar]), "org.openjdk.jol.MainObjectInternals"] + candidates)
+
+class JVMCIArchiveParticipant:
+    def __init__(self, dist):
+        self.dist = dist
+
+    def __opened__(self, arc, srcArc, services):
+        self.services = services
+        self.arc = arc
+
+    def __add__(self, arcname, contents):
+        if arcname.startswith('META-INF/jvmci.providers/'):
+            provider = arcname[len('META-INF/jvmci.providers/'):]
+            for service in contents.strip().split(os.linesep):
+                assert service
+                self.services.setdefault(service, []).append(provider)
+            return True
+        elif arcname.endswith('_OptionDescriptors.class'):
+            # Need to create service files for the providers of the
+            # jdk.vm.ci.options.Options service created by
+            # jdk.vm.ci.options.processor.OptionProcessor.
+            provider = arcname[:-len('.class'):].replace('/', '.')
+            self.services.setdefault('jdk.vm.ci.options.OptionDescriptors', []).append(provider)
+        return False
+
+    def __addsrc__(self, arcname, contents):
+        return False
+
+    def __closing__(self):
+        pass
+
+def _get_openjdk_os():
+    # See: common/autoconf/platform.m4
+    os = mx.get_os()
+    if 'darwin' in os:
+        os = 'macosx'
+    elif 'linux' in os:
+        os = 'linux'
+    elif 'solaris' in os:
+        os = 'solaris'
+    elif 'cygwin' in os or 'mingw' in os:
+        os = 'windows'
+    return os
+
+def _get_openjdk_cpu():
+    cpu = mx.get_arch()
+    if cpu == 'amd64':
+        cpu = 'x86_64'
+    elif cpu == 'sparcv9':
+        cpu = 'sparcv9'
+    return cpu
+
+def _get_openjdk_os_cpu():
+    return _get_openjdk_os() + '-' + _get_openjdk_cpu()
+
+def _get_jdk_build_dir(debugLevel=None):
+    """
+    Gets the directory into which the JDK is built. This directory contains
+    the exploded JDK under jdk/ and the JDK image under images/jdk/.
+    """
+    if debugLevel is None:
+        debugLevel = _vm.debugLevel
+    name = '{}-{}-{}-{}'.format(_get_openjdk_os_cpu(), 'normal', _vm.jvmVariant, debugLevel)
+    return join(dirname(_suite.dir), 'build', name)
+
+_jvmci_bootclasspath_prepends = []
+
+def _get_hotspot_build_dir(jvmVariant=None, debugLevel=None):
+    """
+    Gets the directory in which a particular HotSpot configuration is built
+    (e.g., <JDK_REPO_ROOT>/build/macosx-x86_64-normal-server-release/hotspot/bsd_amd64_compiler2)
+    """
+    if jvmVariant is None:
+        jvmVariant = _vm.jvmVariant
+
+    os = mx.get_os()
+    if os == 'darwin':
+        os = 'bsd'
+    arch = mx.get_arch()
+    buildname = {'client': 'compiler1', 'server': 'compiler2'}.get(jvmVariant, jvmVariant)
+
+    name = '{}_{}_{}'.format(os, arch, buildname)
+    return join(_get_jdk_build_dir(debugLevel=debugLevel), 'hotspot', name)
+
+def add_bootclasspath_prepend(dep):
+    assert isinstance(dep, mx.ClasspathDependency)
+    _jvmci_bootclasspath_prepends.append(dep)
+
+class JVMCI9JDKConfig(mx.JDKConfig):
+    def __init__(self, debugLevel):
+        self.debugLevel = debugLevel
+        jdkBuildDir = _get_jdk_build_dir(debugLevel)
+        jdkDir = join(jdkBuildDir, 'images', 'jdk') if mx.get_opts().use_jdk_image else join(jdkBuildDir, 'jdk')
+        mx.JDKConfig.__init__(self, jdkDir, tag=_JVMCI_JDK_TAG)
+
+    def parseVmArgs(self, args, addDefaultArgs=True):
+        args = mx.expand_project_in_args(args, insitu=False)
+        jacocoArgs = mx_gate.get_jacoco_agent_args()
+        if jacocoArgs:
+            args = jacocoArgs + args
+
+        # Support for -G: options
+        def translateGOption(arg):
+            if arg.startswith('-G:+'):
+                if '=' in arg:
+                    mx.abort('Mixing + and = in -G: option specification: ' + arg)
+                arg = '-Djvmci.option.' + arg[len('-G:+'):] + '=true'
+            elif arg.startswith('-G:-'):
+                if '=' in arg:
+                    mx.abort('Mixing - and = in -G: option specification: ' + arg)
+                arg = '-Djvmci.option.' + arg[len('-G:+'):] + '=false'
+            elif arg.startswith('-G:'):
+                arg = '-Djvmci.option.' + arg[len('-G:'):]
+            return arg
+        args = map(translateGOption, args)
+
+        args = ['-Xbootclasspath/p:' + dep.classpath_repr() for dep in _jvmci_bootclasspath_prepends] + args
+
+        jvmciModeArgs = _jvmciModes[_vm.jvmciMode]
+        if jvmciModeArgs:
+            bcpDeps = [jdkDist.dist() for jdkDist in jdkDeployedDists]
+            if bcpDeps:
+                args = ['-Xbootclasspath/p:' + os.pathsep.join([d.classpath_repr() for d in bcpDeps])] + args
+
+        # Set the default JVMCI compiler
+        for jdkDist in reversed(jdkDeployedDists):
+            assert isinstance(jdkDist, JvmciJDKDeployedDist), jdkDist
+            if jdkDist._compilers:
+                jvmciCompiler = jdkDist._compilers[-1]
+                args = ['-Djvmci.compiler=' + jvmciCompiler] + args
+                break
+
+        if '-version' in args:
+            ignoredArgs = args[args.index('-version') + 1:]
+            if  len(ignoredArgs) > 0:
+                mx.log("Warning: The following options will be ignored by the vm because they come after the '-version' argument: " + ' '.join(ignoredArgs))
+        return self.processArgs(args, addDefaultArgs=addDefaultArgs)
+
+    # Overrides JDKConfig
+    def run_java(self, args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, env=None, addDefaultArgs=True):
+        if vm is None:
+            vm = 'server'
+
+        args = self.parseVmArgs(args, addDefaultArgs=addDefaultArgs)
+
+        jvmciModeArgs = _jvmciModes[_vm.jvmciMode]
+        cmd = [self.java] + ['-' + vm] + jvmciModeArgs + args
+        return mx.run(cmd, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd)
+
+"""
+The dict of JVMCI JDKs indexed by debug-level names.
+"""
+_jvmci_jdks = {}
+
+def get_jvmci_jdk(debugLevel=None):
+    """
+    Gets the JVMCI JDK corresponding to 'debugLevel'.
+    """
+    if not debugLevel:
+        debugLevel = _vm.debugLevel
+    jdk = _jvmci_jdks.get(debugLevel)
+    if jdk is None:
+        try:
+            jdk = JVMCI9JDKConfig(debugLevel)
+        except mx.JDKConfigException as e:
+            jdkBuildDir = _get_jdk_build_dir(debugLevel)
+            msg = 'Error with the JDK built into {}:\n{}\nTry (re)building it with: mx --jdk-debug-level={} make'
+            if mx.get_opts().use_jdk_image:
+                msg += ' images'
+            mx.abort(msg.format(jdkBuildDir, e.message, debugLevel))
+        _jvmci_jdks[debugLevel] = jdk
+    return jdk
+
+class JVMCIJDKFactory(mx.JDKFactory):
+    def getJDKConfig(self):
+        jdk = get_jvmci_jdk(_vm.debugLevel)
+        return jdk
+
+    def description(self):
+        return "JVMCI JDK"
+
+mx.update_commands(_suite, {
+    'make': [_runmake, '[args...]', _makehelp],
+    'multimake': [_runmultimake, '[options]'],
+    'c1visualizer' : [c1visualizer, ''],
+    'hsdis': [hsdis, '[att]'],
+    'hcfdis': [hcfdis, ''],
+    'igv' : [igv, ''],
+    'jol' : [jol, ''],
+    'vm': [run_vm, '[-options] class [args...]'],
+})
+
+mx.add_argument('-M', '--jvmci-mode', action='store', choices=sorted(_jvmciModes.viewkeys()), help='the JVM variant type to build/run (default: ' + _vm.jvmciMode + ')')
+mx.add_argument('--jdk-jvm-variant', '--vm', action='store', choices=_jdkJvmVariants + sorted(_legacyVms.viewkeys()), help='the JVM variant type to build/run (default: ' + _vm.jvmVariant + ')')
+mx.add_argument('--jdk-debug-level', '--vmbuild', action='store', choices=_jdkDebugLevels + sorted(_legacyVmbuilds.viewkeys()), help='the JDK debug level to build/run (default: ' + _vm.debugLevel + ')')
+mx.add_argument('-I', '--use-jdk-image', action='store_true', help='build/run JDK image instead of exploded JDK')
+
+def mx_post_parse_cmd_line(opts):
+    mx.addJDKFactory(_JVMCI_JDK_TAG, mx.JavaCompliance('9'), JVMCIJDKFactory())
+    mx.set_java_command_default_jdk_tag(_JVMCI_JDK_TAG)
+
+    jdkTag = mx.get_jdk_option().tag
+
+    jvmVariant = None
+    debugLevel = None
+    jvmciMode = None
+
+    if opts.jdk_jvm_variant is not None:
+        jvmVariant = opts.jdk_jvm_variant
+        if jdkTag and jdkTag != _JVMCI_JDK_TAG:
+            mx.warn('Ignoring "--jdk-jvm-variant" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"')
+
+    if opts.jdk_debug_level is not None:
+        debugLevel = _translateLegacyDebugLevel(opts.jdk_debug_level)
+        if jdkTag and jdkTag != _JVMCI_JDK_TAG:
+            mx.warn('Ignoring "--jdk-debug-level" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"')
+
+    if opts.jvmci_mode is not None:
+        jvmciMode = opts.jvmci_mode
+        if jdkTag and jdkTag != _JVMCI_JDK_TAG:
+            mx.warn('Ignoring "--jvmci-mode" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"')
+
+    _vm.update(jvmVariant, debugLevel, jvmciMode)
+
+    for jdkDist in jdkDeployedDists:
+        dist = jdkDist.dist()
+        if isinstance(jdkDist, JvmciJDKDeployedDist):
+            dist.set_archiveparticipant(JVMCIArchiveParticipant(dist))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/.mx.jvmci/suite.py	Tue Dec 01 08:30:11 2015 -1000
@@ -0,0 +1,358 @@
+suite = {
+  "mxversion" : "5.5.12",
+  "name" : "jvmci",
+  "url" : "http://openjdk.java.net/projects/graal",
+  "developer" : {
+    "name" : "Truffle and Graal developers",
+    "email" : "graal-dev@openjdk.java.net",
+    "organization" : "Graal",
+    "organizationUrl" : "http://openjdk.java.net/projects/graal",
+  },
+  "repositories" : {
+    "lafo-snapshots" : {
+      "url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots",
+      "licenses" : ["GPLv2-CPE", "UPL"]
+    },
+  },
+
+  "licenses" : {
+    "UPL" : {
+      "name" : "Universal Permissive License, Version 1.0",
+      "url" : "http://opensource.org/licenses/UPL",
+    }
+  },
+
+  "defaultLicense" : "GPLv2-CPE",
+
+  # This puts mx/ as a sibiling of the JDK build configuration directories
+  # (e.g., macosx-x86_64-normal-server-release).
+  "outputRoot" : "../build/mx/hotspot",
+
+    # ------------- Libraries -------------
+
+  "libraries" : {
+
+    # ------------- Libraries -------------
+
+    "HCFDIS" : {
+      "urls" : ["https://lafo.ssw.uni-linz.ac.at/pub/hcfdis-3.jar"],
+      "sha1" : "a71247c6ddb90aad4abf7c77e501acc60674ef57",
+    },
+
+    "C1VISUALIZER_DIST" : {
+      "urls" : ["https://java.net/downloads/c1visualizer/c1visualizer_2015-07-22.zip"],
+      "sha1" : "7ead6b2f7ed4643ef4d3343a5562e3d3f39564ac",
+    },
+
+    "JOL_INTERNALS" : {
+      "urls" : ["https://lafo.ssw.uni-linz.ac.at/pub/truffle/jol/jol-internals.jar"],
+      "sha1" : "508bcd26a4d7c4c44048990c6ea789a3b11a62dc",
+    },
+
+    "BATIK" : {
+      "sha1" : "122b87ca88e41a415cf8b523fd3d03b4325134a3",
+      "urls" : ["https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/batik-all-1.7.jar"],
+    },
+  },
+
+  "projects" : {
+
+    # ------------- JVMCI:Service -------------
+
+    "jdk.vm.ci.service" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "javaCompliance" : "1.8",
+      "workingSets" : "API,JVMCI",
+    },
+
+    "jdk.vm.ci.service.processor" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "dependencies" : ["jdk.vm.ci.service"],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "JVMCI,Codegen,HotSpot",
+    },
+
+    # ------------- JVMCI:API -------------
+
+    "jdk.vm.ci.common" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "API,JVMCI",
+    },
+
+    "jdk.vm.ci.meta" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "API,JVMCI",
+    },
+
+    "jdk.vm.ci.code" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "dependencies" : ["jdk.vm.ci.meta"],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "API,JVMCI",
+    },
+
+    "jdk.vm.ci.runtime" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "dependencies" : [
+        "jdk.vm.ci.code",
+      ],
+      "checkstyle" : "jdk.vm.ci.service",
+      "annotationProcessors" : ["JVMCI_OPTIONS_PROCESSOR"],
+      "javaCompliance" : "1.8",
+      "workingSets" : "API,JVMCI",
+    },
+
+    "jdk.vm.ci.runtime.test" : {
+      "subDir" : "test/compiler/jvmci",
+      "sourceDirs" : ["src"],
+      "dependencies" : [
+        "mx:JUNIT",
+        "jdk.vm.ci.common",
+        "jdk.vm.ci.runtime",
+      ],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "API,JVMCI",
+    },
+
+    "jdk.vm.ci.inittimer" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "JVMCI",
+    },
+
+    "jdk.vm.ci.options" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "checkstyle" : "jdk.vm.ci.service",
+      "dependencies" : ["jdk.vm.ci.inittimer"],
+      "javaCompliance" : "1.8",
+      "workingSets" : "JVMCI",
+    },
+
+    "jdk.vm.ci.options.processor" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "dependencies" : [
+        "jdk.vm.ci.options",
+      ],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "JVMCI,Codegen",
+    },
+
+    "jdk.vm.ci.options.test" : {
+      "subDir" : "test/compiler/jvmci",
+      "sourceDirs" : ["src"],
+      "dependencies" : [
+        "jdk.vm.ci.options",
+        "mx:JUNIT",
+      ],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "JVMCI",
+    },
+
+    # ------------- JVMCI:HotSpot -------------
+
+    "jdk.vm.ci.amd64" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "dependencies" : ["jdk.vm.ci.code"],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "JVMCI,AMD64",
+    },
+
+    "jdk.vm.ci.sparc" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "dependencies" : ["jdk.vm.ci.code"],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "JVMCI,SPARC",
+    },
+
+    "jdk.vm.ci.hotspot" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "dependencies" : [
+        "jdk.vm.ci.options",
+        "jdk.vm.ci.hotspotvmconfig",
+        "jdk.vm.ci.common",
+        "jdk.vm.ci.runtime",
+        "jdk.vm.ci.service",
+      ],
+      "annotationProcessors" : [
+        "JVMCI_OPTIONS_PROCESSOR",
+      ],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "JVMCI",
+    },
+
+    "jdk.vm.ci.hotspotvmconfig" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "checkstyle" : "jdk.vm.ci.service",
+      "javaCompliance" : "1.8",
+      "workingSets" : "JVMCI,HotSpot",
+    },
+
+    "jdk.vm.ci.hotspot.amd64" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "dependencies" : [
+        "jdk.vm.ci.amd64",
+        "jdk.vm.ci.hotspot",
+      ],
+      "checkstyle" : "jdk.vm.ci.service",
+      "annotationProcessors" : [
+        "JVMCI_SERVICE_PROCESSOR",
+      ],
+      "javaCompliance" : "1.8",
+      "workingSets" : "JVMCI,HotSpot,AMD64",
+    },
+
+    "jdk.vm.ci.hotspot.sparc" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "sourceDirs" : ["src"],
+      "dependencies" : [
+        "jdk.vm.ci.sparc",
+        "jdk.vm.ci.hotspot",
+      ],
+      "checkstyle" : "jdk.vm.ci.service",
+      "annotationProcessors" : [
+        "JVMCI_SERVICE_PROCESSOR",
+      ],
+      "javaCompliance" : "1.8",
+      "workingSets" : "JVMCI,HotSpot,SPARC",
+    },
+
+    "hotspot" : {
+      "native" : True,
+      "class" : "HotSpotProject",
+    }
+  },
+
+  "distributions" : {
+
+    # ------------- Distributions -------------
+
+    "JVMCI_SERVICE" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "dependencies" : ["jdk.vm.ci.service"],
+    },
+
+    "JVMCI_OPTIONS" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "dependencies" : ["jdk.vm.ci.options"],
+    },
+
+    "JVMCI_API" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "dependencies" : [
+        "jdk.vm.ci.inittimer",
+        "jdk.vm.ci.runtime",
+        "jdk.vm.ci.common",
+        "jdk.vm.ci.amd64",
+        "jdk.vm.ci.sparc",
+      ],
+      "distDependencies" : [
+        "JVMCI_OPTIONS",
+        "JVMCI_SERVICE",
+      ],
+    },
+
+    "JVMCI_HOTSPOTVMCONFIG" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "dependencies" : [
+        "jdk.vm.ci.hotspotvmconfig",
+      ],
+    },
+
+    "JVMCI_HOTSPOT" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "dependencies" : [
+        "jdk.vm.ci.hotspot.amd64",
+        "jdk.vm.ci.hotspot.sparc",
+      ],
+      "distDependencies" : [
+        "JVMCI_HOTSPOTVMCONFIG",
+        "JVMCI_SERVICE",
+        "JVMCI_API",
+      ],
+    },
+
+    "JVMCI_TEST" : {
+      "subDir" : "test/compiler/jvmci",
+      "dependencies" : [
+        "jdk.vm.ci.options.test",
+        "jdk.vm.ci.runtime.test",
+      ],
+      "distDependencies" : [
+        "JVMCI_API",
+      ],
+      "exclude" : ["mx:JUNIT"],
+    },
+
+    "JVMCI_OPTIONS_PROCESSOR" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "dependencies" : ["jdk.vm.ci.options.processor"],
+      "distDependencies" : [
+        "JVMCI_OPTIONS",
+      ],
+    },
+
+    "JVMCI_SERVICE_PROCESSOR" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "dependencies" : ["jdk.vm.ci.service.processor"],
+      "distDependencies" : [
+        "JVMCI_SERVICE",
+      ],
+    },
+
+    # This exists to have a monolithic jvmci.jar file which simplifies
+    # using the -Xoverride option in JDK9.
+    "JVMCI" : {
+      "subDir" : "src/jdk.vm.ci/share/classes",
+      "overlaps" : [
+        "JVMCI_API",
+        "JVMCI_OPTIONS",
+        "JVMCI_SERVICE",
+        "JVMCI_HOTSPOT",
+        "JVMCI_HOTSPOTVMCONFIG",
+        "JVMCI_SERVICE_PROCESSOR",
+        "JVMCI_OPTIONS_PROCESSOR"
+      ],
+      "dependencies" : [
+        "jdk.vm.ci.options",
+        "jdk.vm.ci.service",
+        "jdk.vm.ci.inittimer",
+        "jdk.vm.ci.runtime",
+        "jdk.vm.ci.common",
+        "jdk.vm.ci.amd64",
+        "jdk.vm.ci.sparc",
+        "jdk.vm.ci.hotspotvmconfig",
+        "jdk.vm.ci.hotspot.amd64",
+        "jdk.vm.ci.hotspot.sparc",
+        "jdk.vm.ci.options.processor",
+        "jdk.vm.ci.service.processor"
+      ],
+    },
+  },
+}