// Copyright 2010 Azul Systems, Inc. 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 Azul Systems, Inc., 1600 Plymouth Street, Mountain View,
// CA 94043 USA, or visit www.azulsystems.com if you need additional information
// or have any questions.
import java.io.*;
import java.util.*;
import java.util.concurrent.*;
import java.nio.channels.*;
/**
* A simple project build routine.
* I hate makefiles, and ANT uses the horrid XML so I'm doing this hack
* instead. Actually, I've used this technique before to great success. I
* ought to make a Real Project out of it someday.
*
* What you see is the 'guts' of make/ANT PLUS the project file dependencies
* at the end - all in pure Java. Thus I can add new features to the make
* (parallel distributed make, shared caching, etc) or add new dependencies.
* Especially for the dependencies, there is no obtuse format to describe
* things - it's all pure Java.
*
* TO DO LIST:
*
* Priority Queue of jobs to compile
* Parallize Yea Olde Above Priority Queue across the Build Farm (or even on same machine!)
* FindBugz nitpicky
*
* Priorties -
* 1) Things that failed for syntax errors last time; under the assumption
* you're working in a tight edit/compile cycle anything that failed in the
* last go-round should be compiled first this go-round - because you
* probably don't have all the syntax errors out yet. This is very useful
* when hacking top-level includes like thread.hpp, because each touch of
* thread.hpp will force the World to recompile but likely there's exactly
* .cpp file you care about (thread.cpp?) and it's usually very late in the
* build. One easy way to do this is to notice that failed build steps
* always nuke their target, so a missing target is most likely came from a
* syntax error on the last edit/compile cycle.
*
* 2) Jobs that might make more work - such as the ADLC or JVMTI or reading
* the foo.P files; each of these steps might possibly make more targets to
* build. Thus the priority queue has to be dynamic; some targets appear
* only after some build-steps have happened.
*
* 3) Slow jobs; waiting to the end of a 200-file compile to START compiling
* 'type.cpp' just lengthens the build cycle. type.cpp probably takes more
* than 60sec to compile whereas most jobs compile less than 5sec. We want
* to overlap the compile of type.cpp with many other compiles.
*
* @since 1.6
* @author Cliff Click
*/
class build {
static String _buildnumber = "00";
static String _jdkversion = "1.6.0_13";
static String _releaseversion = "0.0.0.0";
static String _avx_includes = null;
static int _aznix_api_version;
static String _gcc_dir = null;
static String _binutils_dir = null;
static int _verbose; // Be noisy; 0 (quiet), 1 (noisy) or 2 (very noisy)
static boolean _warn; // dump stderr and stdout from commands, default=false
static boolean _justprint; // Print, do not do any building
static boolean _clean; // Remove target instead of building it
static boolean _keepontrucking; // Do not stop at errors
static int _parallelism;
// Top-level project directory
static File TOP; // File for the project directory
static String TOP_PATH; // Path to top-level
static String TOP_PATH_SLASH;
// Where the results go
static String SANDBOX;
// Pick up JAVA_HOME from the java property "java.home"
static String JAVA_HOME;
// Target OSN
static String TARGET_OSN = "azlinux";
// Target ISA
static String TARGET_ISA = "x86_64";
// Some of the libraries for aztek-vega2 come from the txu directory and not
// the vega2 directory. Hence this addtional distinction for ISA
static String LIBS_TARGET_ISA = "x86_64";
// The libraries/archives for j2se are located under amd64 or txu.
// So hack up another variable to contruct this path
static String J2SE_ARCH_DIR = "amd64";
static String CORE_OR_JIT = "jit";
static void setDefines(String target) {
if (target.equals("azproxied-x86_64")) {
TARGET_OSN = "azproxied";
TARGET_ISA = "x86_64";
LIBS_TARGET_ISA = "x86_64";
J2SE_ARCH_DIR = "amd64";
} else if (target.equals("azlinux-x86_64")) {
TARGET_OSN = "azlinux";
TARGET_ISA = "x86_64";
LIBS_TARGET_ISA = "x86_64";
J2SE_ARCH_DIR = "amd64";
} else {
throw new Error("Unknown target platform");
}
}
// --- main ----------------------------------------------------------------
static public void main( final String args[] ) throws IOException, InterruptedException {
// --- First up: find build.java!
// Where we exec'd java.exe from
TOP = new File(".");
TOP_PATH = TOP.getCanonicalPath();
File f = new File(TOP,"build/build.java");
while( !f.exists() ) {
File p2 = new File(TOP,"..");
if( p2.getCanonicalPath().equals(TOP_PATH) )
throw new Error("build/build.java not found; build/build.java marks top of project hierarchy");
TOP = p2;
TOP_PATH = TOP.getCanonicalPath();
f = new File(TOP,"build/build.java");
}
TOP_PATH_SLASH = TOP_PATH.replaceAll("\\\\","\\\\\\\\");
// --- Track down default sandbox
File sand = TOP;
f = new File(sand,"sandbox");
while( !f.exists() ) {
File p2 = new File(sand,"..");
String spath = sand.getCanonicalPath();
if( p2.getCanonicalPath().equals(spath) )
break; // No sandbox found
sand = p2;
f = new File(sand,"sandbox");
}
if( f.exists() ) SANDBOX = f.getCanonicalPath();
JAVA_HOME = System.getProperty("java.home");
if (JAVA_HOME.endsWith("/jre")) {
JAVA_HOME = JAVA_HOME.substring(0, JAVA_HOME.lastIndexOf('/'));
}
// --- Strip out any flags; sanity check all targets before doing any of them
int j = 0;
boolean error = false;
String targetPlatform = null;
String buildvariant = null;
String g_suffix = "";
for( int i=0; i<args.length; i++ ) {
final String arg = args[i];
if( arg.charAt(0) == '-' ) {
if( false ) ;
else if( arg.equals("-bn" ) ) _buildnumber = args[++i]; // TODO - Verify arg
else if( arg.equals("-jv" ) ) _jdkversion = args[++i]; // TODO - Verify arg
else if( arg.equals("-rv" ) ) _releaseversion = args[++i]; // TODO - Verify arg
else if( arg.equals("-ai" ) ) _avx_includes = args[++i];
else if( arg.equals("-aav" ) ) _aznix_api_version = Integer.parseInt(args[++i]);
else if( arg.equals("-gccd" ) ) _gcc_dir = args[++i];
else if( arg.equals("-bud" ) ) _binutils_dir = args[++i];
else if( arg.equals("-v" ) ) _verbose = 1;
else if( arg.equals("-vv" ) ) _verbose = 2;
else if( arg.equals("-w" ) ) _warn= true;
else if( arg.equals("-n" ) ) _justprint = true;
else if( arg.equals("-k" ) ) _keepontrucking = true;
else if( arg.equals("-clean") ) _clean = true;
else if( arg.equals("-p" ) ) _parallelism = Integer.parseInt(args[++i]);
else if( arg.equals("-s" ) ) SANDBOX = args[++i];
else if( arg.equals("-t" ) ) targetPlatform = args[++i];
else if( arg.equals("-core" ) ) CORE_OR_JIT = "core";
else if( arg.equals("-jit" ) ) CORE_OR_JIT = "jit";
else {
error = true;
System.out.println("Unknown flag "+arg);
}
} else if( arg.equals("debug") || arg.equals("fastdebug") ) {
buildvariant = arg;
g_suffix = "_g";
} else if( arg.equals("optimized") || arg.equals("product") ) {
buildvariant = arg;
} else {
// TODO - We should make the user explicitly specify a target and
// that it is an avm build
if (arg.contains("azproxied")) {
setDefines("azproxied-x86_64");
} else if (arg.contains("azlinux")) {
setDefines("azlinux-x86_64");
}
args[j++] = arg; // Compact out flags from target list
}
}
if (targetPlatform != null) {
// Target platform can be azproxied-x86_64, azlinux-x86_64
if (targetPlatform.equals("azproxied-x86_64")) {
args[j++] = "sandbox/obj/hotspot6/azproxied_x86_64_" + CORE_OR_JIT + "1.6/" + buildvariant + "/libjvm" + g_suffix + ".a";
setDefines("azproxied-x86_64");
} else if (targetPlatform.equals("azlinux-x86_64")) {
// TODO - figure out what to ship, stripped or unstripped.
//args[j++] = "sandbox/obj/hotspot6/azlinux_x86_64_" + CORE_OR_JIT + "1.6/" + buildvariant + "/libjvm" + g_suffix + ".so.stripped";
args[j++] = "sandbox/obj/hotspot6/azlinux_x86_64_" + CORE_OR_JIT + "1.6/" + buildvariant + "/libjvm" + g_suffix + ".so";
setDefines("azlinux-x86_64");
} else {
throw new Error("Unknown target platform specified with -t");
}
if (_verbose > 0) {
System.out.println("Target is " + args[j-1]);
}
}
try {
if( error ) {
System.out.println("");
System.out.println("Usage: build -bn <num> -jv <jdkversion> -rv <releaseversion> -ai <AVX_INCLUDE_DIR> -aav <AZNIX_API_VERSION> -gccd <GCC_DIR> -bud <BINUTILS_DIR> [-v|-vv] [-n] [-w] [-k] [-clean] [-s SANDBOX] [-t PLATFORM] [-core|-jit] [debug|fastdebug|optimized|product]");
System.out.println("\t -bn : set build number");
System.out.println("\t -jv : set jdk version");
System.out.println("\t -rv : set release version");
System.out.println("\t -ai : set AVX_INCLUDE_DIR");
System.out.println("\t -aav : set AZNIX_API_VERSION");
System.out.println("\t -gccd : set GCC_DIR");
System.out.println("\t -bud : set BINUTILS_DIR");
System.out.println("\t -v : verbose output, overrides -vv option");
System.out.println("\t -vv : super verbose output, overrides -v option");
System.out.println("\t -n : do nothing, just print");
System.out.println("\t -w : show each command's stdout and stderr");
System.out.println("\t -k : don't stop on errors");
System.out.println("\t -clean : delete build output");
System.out.println("\t -s SANDBOX : set SANDBOX directory");
System.out.println("\t -t PLATFORM : set target platform");
System.out.println("\t -core : build the \"core\" target, overrides -jit option");
System.out.println("\t -jit : build the \"jit\" target, overrides -core option");
System.out.println("");
throw new Error("Command line errors");
}
if( _verbose > 0 )
System.out.println("Building in "+TOP.getCanonicalPath());
if( SANDBOX == null )
throw new Error("No sandbox");
if( !SANDBOX.endsWith("/sandbox") && !SANDBOX.endsWith("/sandbox/") )
throw new Error("Sandbox does not end with /sandbox");
if( !new File(SANDBOX).exists() )
throw new Error("Sandbox does not exist: "+SANDBOX);
if( _gcc_dir == null )
throw new Error("No GCC_DIR. -gccd <GCC_DIR> should be specified");
if( !new File(_gcc_dir).exists() )
throw new Error("GCC_DIR does not exist: "+_gcc_dir);
if( _binutils_dir == null )
throw new Error("No BINUTILS_DIR. -bud <BINUTILS_DIR> should be specified");
if( !new File(_binutils_dir).exists() )
throw new Error("BINUTILS_DIR does not exist: "+_binutils_dir);
if( _avx_includes == null )
throw new Error("No AVX_INCLUDE_DIR. -ai <AVX_INCLUDE_DIR> should be specified");
if( !new File(_avx_includes).exists() )
throw new Error("AVX_INCLUDES_DIR does not exist: "+_avx_includes);
// Make SANDBOX a relative path, if it's shorter. Much easier to read the output.
String t=TOP_PATH;
String up="";
String rel_sand = SANDBOX;
while( !rel_sand.startsWith(t) ) {
up = up+"../";
t = t.substring(0,t.lastIndexOf('/'));
}
rel_sand = up+rel_sand.substring(t.length()+1);
if( rel_sand.length() < SANDBOX.length() )
SANDBOX = rel_sand;
if( _verbose > 0 )
System.out.println("Sandbox is "+SANDBOX);
// Command-line targets starting with "sandbox/" are essentially
// shortcuts for "$SANDBOX/", but for our chosen SANDBOX not some OS
// environment variable.
for( int i=0; i<j; i++ )
if( args[i].startsWith("sandbox/") )
args[i] = SANDBOX+args[i].substring(7);
// --- Put all named targets into a bogus top-level target
if( j == 0 ) throw new Error("No default target and no targets specified; did you mean to build nothing?");
} finally {
// --- All Done!
System.out.flush();
System.err.flush();
}
build0.main0(Arrays.copyOf(args,j));
}
}
// --- build0 -------------------------------------------------------------------
class build0 {
static private class BuildError extends Error { BuildError( String s ) { super(s); } }
static final String _buildnumber = build._buildnumber;
static final String _jdkversion = build._jdkversion;
static final String _releaseversion = build._releaseversion;
static final String _avx_includes = build._avx_includes;
static final int _aznix_api_version = build._aznix_api_version;
static final String _gcc_dir = build._gcc_dir;
static final String _binutils_dir = build._binutils_dir;
static final int _verbose = build._verbose; // Be noisy; 0 (quiet), 1 (noisy) or 2 (very noisy)
static final boolean _warn = build._warn; // dump stdout and stderr from commands, default=false
static final boolean _justprint = build._justprint; // Print, do not do any building
static final boolean _clean = build._clean; // Remove target instead of building it
static final boolean _keepontrucking = build._keepontrucking; // Do not stop at errors
static final boolean _allow_timestamp_ties = true;
// Top-level project directory
static final File TOP = build.TOP; // File for the project directory
static final String TOP_PATH = build.TOP_PATH; // Path to top-level
static final String TOP_PATH_SLASH = build.TOP_PATH_SLASH; // Canonical path to top level
// Where the results go
final static String SANDBOX = build.SANDBOX;
// Some common strings
static final String CORE_OR_JIT = build.CORE_OR_JIT;
static final String JAVA_HOME = build.JAVA_HOME;
static final String JAVAC = JAVA_HOME + "/bin/javac";
static final String JAVA = JAVA_HOME + "/bin/java";
static final String TARGET_OSN = build.TARGET_OSN;
static final String TARGET_ISA = build.TARGET_ISA;
static final String LIBS_TARGET_ISA = build.LIBS_TARGET_ISA;
static final String J2SE_ARCH_DIR = build.J2SE_ARCH_DIR;
static final String SANDBOX_LIB_DIR = SANDBOX + "/" + TARGET_OSN + "/lib/" + TARGET_ISA + "/";
static final String SANDBOX_J2SE_LIB_DIR = SANDBOX + "/" + TARGET_OSN + "/j2sdk1.6/" + LIBS_TARGET_ISA + "/jre/lib/" + J2SE_ARCH_DIR + "/";
static final String SANDBOX_X11_LIB_DIR = SANDBOX + "/" + TARGET_OSN + "/x11/" + LIBS_TARGET_ISA + "/usr/X11R6/lib/";
// --- Build directory layout
static final String OBJDIR = SANDBOX+"/obj/hotspot6/";
static final String OBJDIR_AZLINUX_X86_CORE6 = OBJDIR+"azlinux_x86_64_core1.6/";
static final String OBJDIR_AZLINUX_X86_JIT6 = OBJDIR+"azlinux_x86_64_jit1.6/";
static final String OBJDIR_AZPROXIED_X86_CORE6 = OBJDIR+"azproxied_x86_64_core1.6/";
static final String OBJDIR_AZPROXIED_X86_JIT6 = OBJDIR+"azproxied_x86_64_jit1.6/";
static final String BUILD_DIR = OBJDIR + TARGET_OSN + "_" + TARGET_ISA + "_" + CORE_OR_JIT + "1.6/build";
// A work-queue for the Main thread. Tasks on this list need to have their
// dependencies inspected. This is normally once per task, but foo.P files
// run an "extra_check" which expands out a list of source .h file
// dependencies.
static final LinkedBlockingQueue<Q> _FindDeps = new LinkedBlockingQueue<Q>();
static final Q ALL_DONE_SENTINEL = new Q("no such target");
// The work queue
static final Runtime RUN = Runtime.getRuntime();
static final int numCPUs = (build._parallelism>0) ? build._parallelism : RUN.availableProcessors();
static final int numWorkers = (build._parallelism>0) ? build._parallelism
: ((numCPUs<3) ? (numCPUs+1) : ((numCPUs<8)?(numCPUs+2):(numCPUs+(numCPUs>>2))));
static final ThreadPoolExecutor TPE =
new ThreadPoolExecutor( numCPUs/*starting thread count*/, numWorkers/*max threads*/, 1L, TimeUnit.SECONDS,
new PriorityBlockingQueue<Runnable>());
// --- main0 ---------------------------------------------------------------
static public void main0( final String args[] ) throws IOException, InterruptedException {
// --- Next up: always re-make self as needed
// _build_c - is the class file for build.java (this file!)
_build_c.find_deps();
_FindDeps.take().find_deps();
assert _FindDeps.size() == 0 ;
long bc_time = _build_c._modtime;
_build_c.build_step(0);
_FindDeps.take();
if( _build_c._modtime != bc_time ) {
// Since we remade ourself, launch & run self in a nested process to do
// the actual 'build' using the new version of self.
TPE.shutdown();
String a = JAVA + " -cp "+BUILD_DIR+" build -s "+SANDBOX+" ";
if( _verbose == 1 ) a += "-v ";
if( _verbose == 2 ) a += "-vv ";
for( String arg : args )
a += arg+" ";
System.err.println(a);
sys_exec(a,null,true).writeTo(System.out);
System.out.flush();
System.err.flush();
System.exit(0);
}
if ( _verbose > 0 ) {
System.out.println("Parallelism: " +numCPUs+ " starting threads, " +numWorkers+ " maximum threads");
}
try {
Q qs[] = new Q[args.length];
boolean error = false;
for( int i=0; i<args.length; i++ ) { // For all targets
qs[i] = Q.FILES.get(args[i]);
if( qs[i] == null ) {
error = true;
System.err.println("Unknown target "+args[i]);
}
}
if( error ) throw new BuildError("Command line errors");
// When the top-level targets 'do_it' runs, it will do nothing but put the
// end-of-lazily-found deps on the _FindDeps queue, which will break the
// main thread back out and start shutting down the thread pools.
_FindDeps.put(new Q("targets",' ',qs));
// --- Now spin on the _FindDeps queue in the Main thread (only),
// processing tasks to produce any dependent tasks. Tasks can be added by
// worker threads asynchronously.
Thread.currentThread().setPriority(Thread.currentThread().getPriority()+1);
while( true ) {
final Q q = _FindDeps.take(); // Blocking call to get tasks.
if( q == ALL_DONE_SENTINEL )
break;
q.find_deps();
}
} catch( RejectedExecutionException e ) {
} finally {
// --- All Done!
TPE.shutdown();
System.out.flush();
System.err.flush();
}
// End of main
}
// --- StreamEater ---------------------------------------------------------
// Used to 'eat' the output stream from a remote process and store it in a
// local ByteArrayOutputStream.
static private class StreamEater extends Thread {
final private InputStream _is;
final public ByteArrayOutputStream _buf = new ByteArrayOutputStream();
private IOException _e;
StreamEater( InputStream is ) { _is = is; start(); }
public void run() {
byte[] buf = new byte[1024];
try {
int len;
while( (len=_is.read(buf)) != -1 ) {
_buf.write(buf,0,len);
}
} catch( IOException e ) {
_e = e; // Catch it for later, we're in the wrong thread
}
}
public void close() throws IOException, InterruptedException {
// called from the main thread on the StreamEater object, but not in the
// StreamEater thread.
join();
if( _e != null ) throw _e; // Rethrow any exception in the main thread
}
}
// --- sys_exec ------------------------------------------------------------
// Run the command string as a new system process. Throw an error if the
// return value is not zero, or any number of other errors happen. On an
// error, all process output is dumped to System.out (stdout). On success
// the output is buffered and the caller can decide how to dump.
static ByteArrayOutputStream sys_exec( String exec, File cwd, boolean die_on_fail ) {
if( exec.length() == 0 ) return null; // Vacuously works for empty commands
// The standard 'exec' call does not handle quoted strings very
// nicely; this makes it hard to e.g. pass a quoted string to a
// 'sh' shell thus allowing multiple commands in a single step.
String[] execs = null;
int x = exec.indexOf('"');
if( x != -1 && exec.charAt(x-1)==' ' ) { // exec String contains quotes?
// nothing yet
ArrayList<String> toks = new ArrayList<String>();
int tok=0;
for( int i=0; i<exec.length(); i++ ) {
char c = exec.charAt(i);
if( c == ' ' || c == '"' ) {
if( tok<i ) toks.add(exec.substring(tok,i));
tok=i+1; // next token starts after this whitespace
}
if( c == '"' ) {
i++;
while( exec.charAt(i) != '"' ) i++;
toks.add(exec.substring(tok,i));
tok = i+1;
}
}
if( tok<exec.length() ) toks.add(exec.substring(tok,exec.length()));
execs = new String[toks.size()];
toks.toArray(execs);
}
// Now run the command string in a seperate process. Buffer all output,
// so that error output from parallel processes can be dumped out without
// interleaving. Also if the command finishes without any errors and we
// are not running very-verbose then we don't dump the commands output.
StreamEater err = null, out = null;
// This try/catch block will dump any output from the process before make dies
try {
Process p = null;
// This try/catch block will catch any I/O errors and turn them into BuildErrors
try {
// Run the 'exec' String in a seperate process.
p = execs == null ? RUN.exec(exec,null,cwd) : RUN.exec(execs,null,cwd);
err = new StreamEater(p.getErrorStream()); // Start StreamEater threads
out = new StreamEater(p.getInputStream());
final int status = p.waitFor();
if( status != 0 )
throw new BuildError("Status "+status+" from "+exec);
out.close(); // catch runaway StreamEater thread
err.close(); // catch runaway StreamEater thread
} catch( IOException e ) {
if( err == null ) System.out.println(""+e);
throw new BuildError("IOException from "+exec);
} catch( InterruptedException e ) {
throw new BuildError("Interrupted while waiting on "+exec);
} finally {
if( p != null ) p.destroy(); // catch runaway process
}
} catch( BuildError be ) {
// Build-step choked. Dump any output
if( out != null ) try { out._buf.writeTo(System.out); } catch( IOException e ) { throw new BuildError(e.toString()); }
if( err != null ) try { err._buf.writeTo(System.out); } catch( IOException e ) { throw new BuildError(e.toString()); }
if( die_on_fail ) { // For nested builds
System.out.flush();
System.err.flush();
System.exit(0);
}
throw be; // Rethrow after dumping output
}
// concat err onto the end of out so that both are returned
if ( _warn ) {
// create a new output stream
ByteArrayOutputStream tmp = new ByteArrayOutputStream();
// write the command to the head of the tmp buffer.
try {
tmp.write(exec.getBytes());
} catch( IOException e ) {}
// copy out to the tmp stream
if (out._buf.size() > 0) {
try {
tmp.write('\n');
out._buf.writeTo(tmp);
} catch( IOException ioe) {}
}
// copy err to the tmp stream
if (err._buf.size() > 0) {
try {
tmp.write('\n');
err._buf.writeTo(tmp);
} catch( IOException ioe) {}
}
return tmp; // No errors? Then here is the buffered output
} else {
return out._buf; // No errors? Then here is the buffered output
}
// shouldn't get to here ...
}
// Compute the base file name for a CPP file.
// Silently chokes for non-CPP files.
static final String basename( final String name ) {
final String cppname = name.substring(name.lastIndexOf('/')+1);
final String basename = cppname.substring(0,cppname.length()-4);
return basename;
}
// --- A dependency --------------------------------------------------------
static private class Q implements Comparable, Runnable {
// A table of all dependencies & target files in the world
static ConcurrentHashMap<String,Q> FILES = new ConcurrentHashMap<String,Q>();
// Basic definition of a dependency
final String _target; // Target file name
final char _src_sep; // Standard string seperator used between dependent file names
// I assume that calling lastModified() is a modestly expensive OS call.
// I *know* that some OS's report file timestamps rounded down badly, to
// the nearest 1 second on linux.
long _modtime; // Cache of _dst.lastModified() (or System.CTM for -n builds)
int _priority; // hint for build-order speed
int _cum_prior; // Cumlative priority from here to root
// These next 5 fields need to be atomically updated.
// They are updated and read concurrently by many threads.
// The _srcs array is updated by 'extra_check' for ".o" files - we read
// the matching ".P" file for a list of dependent ".hpp" files. It never
// otherwise changes. No other thread should be reading it until the
// sync'd extra_check returns - and then it should bounce over to the main
// thread for a re-check of dependencies.
Q[] _srcs; // Array of dependent files; not final because HPP dependencies get auto-added later
// Cleared by _extra_check so that main knows to re-inspect hpp lists.
File _dst; // Actual OS file; set once during find_deps, cleared by extra_check
// Count of _ready_children. This field changes when
// (1) the _srcs change, hence changing the number of children
// (2) any child changes state
int _ready_children; // Count of ready children
// Valid states are-
// - null - never inspected
// - "done" - all children are "done" and this build-step fired if needed
// - "extra_check" - extra deps added; do not attempt to add again
// - "failed"
String _state;
// Parent dependences of this dep. Changed by a child extra_step.
final Vector<Q> _parents = new Vector<Q>();
// --- Constructor for a list of source dependencies
Q( String target, char src_sep, Q[] srcs ) {
_target = target;
_src_sep = src_sep;
_srcs = srcs;
// Basic sanity checking
if( target.indexOf('%') != -1 )
throw new IllegalArgumentException("dependency target has a '%': "+target);
// Install the target/dependency mapping in a global flat table
Q old = FILES.put(_target,this);
if( old != null )
throw new IllegalArgumentException("More than one dependency for target "+
target+((_srcs.length > 0) ? (" with source "+_srcs[0]._target):""));
// Set any childs' parent-pointers to me
for( Q src : _srcs ) {
synchronized(src) {
src._parents.add(this);
}
}
}
// --- Constructor for a root file; no dependencies
static final private Q[] NONE = new Q[0];
Q( String target ) {
this(target,' ',NONE);
}
// --- Factory for a single dependency
static Q Q1( String target, Q src ) {
Q qs[] = new Q[1];
qs[0] = src;
return new Q(target,' ',qs);
}
// Special version for dynamically added targets with no deps (ala system
// include files): does a putIfAbsent into FILES.
private Q( String target, boolean f ) { _target = target; _src_sep = ' '; _srcs = NONE; }
static Q new_dynamic( String target ) {
Q q = FILES.get(target);
if( q != null ) return q; // Quick cutout
q = new Q(target,false);
FILES.putIfAbsent(target,q); // returns OLD value in table
return FILES.get(target); // Return current table contents
}
// --- addDep
// A handful of files need some #include deps "hand added" instead of using
// the auto-discovery mechanism.
synchronized Q addDep( Q ... deps ) {
// Rather clunky dup-dependency-removal, to help with debugging
int found = 0;
for( Q x : deps ) {
for( Q y : _srcs ) {
if( x==y ) { found++; break; }
}
}
if( found == deps.length ) return this;
Q[] srcs = new Q[_srcs.length+deps.length];
System.arraycopy(_srcs,0,srcs,0,_srcs.length);
System.arraycopy( deps,0,srcs,_srcs.length,deps.length);
_srcs = srcs;
for( Q dep : deps )
synchronized(dep) { dep._parents.add(this); }
return this;
}
// --- find_deps
// One-shot per Q, make sure each _src has _dst File.
// Sync'd to cover setting _dst & reading _ready_children count
synchronized void find_deps() throws InterruptedException {
if( _dst == null ) { // First time thru only
if( this instanceof QLinkerOption ) {
_dst = new File(TOP,"");
_modtime = 1;
} else {
_dst = _target.charAt(0)=='/' // Absolute path?
? new File(_target) // Then use it absolutely
: new File(TOP,_target); // Else assume TOP relative
_modtime = _dst.lastModified(); // Cache OS time
// Zero-length files are almost always errors sometimes caused by
// hitting ^C at a bad moment. Just assume they need to be built.
if( _dst.length() == 0 ) _modtime = 0; // Pretend zero-length files don't exist
}
_priority = 0;
if( _modtime==0 ) // if file does not exist
_priority += 99999999; // do it first
if( _target.endsWith("P") ) // If file creates more work
_priority += 59999999; // do it 2nd
_priority += _dst.length(); // Otherwise do slower (bigger) files before faster files
_cum_prior = _priority; // Add in your parent's priority also
for( Q p : _parents ) // Also include all parents' priorities
_cum_prior += p._cum_prior;
if( _modtime == 0 && _srcs.length == 0 )
throw new BuildError("Source file "+_target+" is missing, used by at least "+_parents.get(0)._target);
} else if( _state != "extra_check" ) { // Tossed onto finddeps extra times?
// _dst already set, so already ran finddeps
return; // Nothing to do here
}
// Put children on as well
for( Q src : _srcs ) {
synchronized(src) {
if( src._dst == null || src._state == "extra_check" )
_FindDeps.put(src);
else
src._cum_prior += _cum_prior;
}
}
// Put trivially ready things on the WorkQueue
if( _state == null && _ready_children == _srcs.length )
TPE.execute(this);
}
// Make a single String with all sources, pre-pended with the top-level
// path and seperated by the 'sep' char.
String flat_src( char sep ) {
String s = "";
if( _srcs.length==0 ) return s;
for( int i=0; i<_srcs.length-1; i++ ) {
if( _srcs[i]._target.charAt(0)!='/' &&
!(_srcs[i] instanceof QLinkerOption) )
s += TOP_PATH_SLASH+"/";
s += _srcs[i]._target+sep;
}
if(( _srcs[_srcs.length-1]._target.charAt(0)!='/' ) &&
!(_srcs[_srcs.length-1] instanceof QLinkerOption) ) {
s += TOP_PATH_SLASH+"/";
}
s += _srcs[_srcs.length-1]._target;
return s;
}
// The void 'do_it' function, with no output. Override this to do
// a real build-step. Also print a 1-liner on what the step is
// doing, WITH printing a newline in a single output write.
protected ByteArrayOutputStream do_it( ) {
return null;
}
// Override if your build-step adds any dependencies
// Return 1 - added child deps that need to be checked
// Return 2 - force build step to happen
protected int extra_check() {
return 0;
}
// Building priorities encoded here
// 1- missing files (probably a failed prior build-step with syntax errors
// 2- jobs making more work (.P files, ADLC, or JVMTI XML)
// 3- big jobs
// Lower priorities are pulled from the work queue first
public int compareTo(Object o) {
return ((Q)o)._cum_prior - _cum_prior;
}
public void findDeps_queue() {
try {
_FindDeps.put(this); // Find'em all...
} catch( InterruptedException e ) {
throw new Error(e); // Rethrow as an unchecked exception - we're dead
}
}
// --- Do the build-step, as needed
public String build_step( final int xc ) {
// Cleaning? Nuke target and return
if( _clean ) {
if( _srcs.length == 0 ) return "done"; // Do not remove source files
if( !_dst.exists() ) return "done"; // Already removed
if( this == _build_c ) return "done"; // Highly annoying to delete own class file
System.out.println("rm "+_target);
if( !_justprint ) _dst.delete();
return "done";
}
// See if all is up-to-date. Collect out-of-date filenames. Collect
// youngest source file (output file produced by this build step should
// end up newer than the youngest source file).
long last_src = 0;
String newer = null;
for( Q src : _srcs ) {
if( last_src < src._modtime )
last_src = src._modtime; // Latest source time
if( _modtime < src._modtime ) { // Out of date?
if( newer == null ) { // No filenames yet?
newer = src._target; // Collect 1st filename
} else { // 2nd or later filename
newer += " "+src._target; // Collect filenames
}
}
}
if( xc <= 1 && newer == null ) { // Found no out-of-date source files?
if( _verbose > 1 ) {
if( _srcs.length != 0 ) {
System.out.println("-- " + _target + " > { "+flat_src(' ')+" } : already up to date");
} else {
System.out.println("-- " + _target + " is a source file : already up to date");
}
}
return "done";
}
// Else out-of-date and must build
// ---
// Files out of date; must do this build step
if( _verbose > 0 ) {
if( _modtime == 0 ) System.out.println("-- " + _target+ " is missing");
else System.out.println("-- " + _target+ " <= { "+newer+" }"+
(newer==null?", forced build step because of new dependencies":""));
}
// About to attempt to make the file; force any needed directories
File target_file = new File(_target);
File parent_dir = target_file.getParentFile();
if (parent_dir != null) parent_dir.mkdirs();
try {
// Do the build-step, capturing stdout and stderr. If (_warn), then
// dump build-step's stdout+stderr. Failed build-steps always dump
// their stdout+stderr.
ByteArrayOutputStream buf = do_it();
if( ( _warn ) && ( buf != null) ){
try {
buf.writeTo(System.out);
System.out.println();
} catch( IOException e) {}
}
} catch( BuildError be ) { // Catch obvious build failures
// Failed; make sure target is deleted (except for build.class)
if( this != _build_c ) // Highly annoying to delete own class file
_dst.delete();
if( !_keepontrucking ) { // single error is fatal
try { Thread.sleep(1000); } catch( InterruptedException e ) { }
TPE.shutdown();
System.out.flush();
System.err.flush();
System.exit(-1);
}
return "failed";
}
if( _justprint ) { // No expectation of any change
_modtime = last_src+1; // Force modtime update
return "done";
}
// Double-check that the source files were not modified by the
// build-step. It's a fairly common error if file-names get swapped,
// etc. This exception is uncaught, so it aborts everything. It
// basically indicate a broken build file - the build-step is changing
// the wrong file.
for( Q src : _srcs )
if( !(src instanceof QLinkerOption) &&
src._modtime != src._dst.lastModified() )
throw new IllegalArgumentException("Timestamp for source file "+src._target+
" apparently changed by building "+_target+
" last recorded time="+src._modtime+
" and now the filesystem reports="+src._dst.lastModified());
// Double-check that this step made progress. Again, failure here is
// likely a build-step failure to modify the correct file.
long x = _dst.lastModified();
int sleep=100;
while( _modtime == x && sleep >0 ) {
System.out.println("Timestamp for "+_target+" not changed by building; time="+x);
try { Thread.sleep(1); } catch( InterruptedException e ) { };
sleep--;
}
_modtime = x;
long now = System.currentTimeMillis();
//
// We'd like to verify that the modtime on a file is 'reasonable'. But when building
// on an nfs mounted filer, the time stamps can be off by a couple of seconds.
// So don't complain about differnces less than 3 seconds.
//
// NOTE: This just a workaround while we come up with a better way to handle
// modification times.
//
while( (now+3000) < _modtime ) {
System.out.println("Timestamp for "+_target+" moved "+(_modtime-now)+"ms into the future by building; sleeping until the Future is Now");
try { Thread.sleep(_modtime-now); } catch( InterruptedException e ) { };
now = System.currentTimeMillis();
}
if( _modtime < last_src )
throw new IllegalArgumentException("Timestamp for "+_target+" not changed by building "+_target);
// Invariant: last_src <= _modtime <= now
// For very fast build-steps, the target may be updated to a time equal
// to the input file times after rounding to the file-system's time
// precision - which might be as bad as 1 whole second. Assume the
// build step worked, but give the result an apparent time just past the
// src file times to make later steps more obvious.
if( !_allow_timestamp_ties ) {
while( x == last_src ) { // Aaahh, we have 'tied' in the timestamps!!!
// Sleep/spin until the OS's version of a rounded timestamp shows real progress
try { Thread.sleep(1); } catch( InterruptedException e ) { };
now = System.currentTimeMillis();
_dst.setLastModified(now); // Pretend file was made 'right NOW!'
x = _dst.lastModified(); // Reload, after OS rounding
}
if( _modtime == last_src )
System.out.println("Yawners... had to sleep "+(System.currentTimeMillis()-_modtime)+" msec to get timestamp to advance");
}
_modtime = x; // Record apparent mod-time
return "done";
}
// --- What happens 'FutureTask.get' is called on a Q?
public void run() {
if( _parents.size() == 0 ) { // Ready to build the top-level fake target?
_state = "done";
ALL_DONE_SENTINEL.findDeps_queue();
return;
}
// Assert we never been run before, or only run thru 'extra_check'
String st;
synchronized(this) { st = _state; }
assert st == "extra_check" || st == null : "1Running "+_target+" with st="+st+" and rdy="+_ready_children+":"+_srcs.length;
assert _ready_children == _srcs.length : "2Running "+_target+" with st="+st+" and rdy="+_ready_children+":"+_srcs.length;
int xc = 0; // Is build-step forced? (generally by a missing file?)
if( st == null ) { // Not ready extra-step
try {
xc = extra_check(); // Producing extra dependencies?
} catch( Exception e ) {
System.err.println(e.getMessage());
TPE.shutdown();
System.out.flush();
System.err.flush();
System.exit(-1);
}
if( xc == 1 ) return; // No more work here, until deps are all found & built
}
// See if any child failed
String state = null;
for( Q src : _srcs ) { // Assert all children already done
String cstate;
synchronized(src) { cstate= src._state;}
assert cstate == "done" || cstate == "failed" : "Running "+_target+" but child "+src._target+" has state="+cstate;
if( cstate == "failed" )
state = "failed";
}
// Do build step (if we aint dead yet)
if( state == null ) // No failed children?
state = build_step(xc); // Get new state from build_step
// Change state under lock, but also clone parent list. When the lock
// releases, other parents may be added and they need to handle the
// exposed _state (i.e., they just added a 'done' child so they better
// update their ready_children count.
Vector<Q> pclone;
synchronized(this) {
_state = state;
pclone = new Vector<Q>(_parents);
}
// Inform all parents that this child is ready
for( Q p : pclone )
p.child_is_ready(this);
}
// --- child_is_ready
// Some child completed successfully.
// Check _dst under lock;
synchronized void child_is_ready(Q c) {
assert _ready_children < _srcs.length : " "+_target+" "+_ready_children+"<"+_srcs.length+ " child="+c._target;
_ready_children++;
// Happens on parents (with ready children) not involved in any
// top-level build target - they become ready to build, but no target
// needs them.
if( _dst == null ) return;
if( _ready_children == _srcs.length ) {
try {
TPE.execute(this);
} catch( RejectedExecutionException ree ) {
// ignore if shutting down
}
}
}
// Insert a brief pause on the file systems' behalf - but only for specific
// large-file-count build steps.
void brief_pause() {
}
};
// --- A dependency with an exec string ------------------------------------
// Mostly just a normal dependency; it "execs" a String to do the build-step.
static private class QS extends Q {
final String _exec;
String _parsed_exec;
// --- Constructor for a list of source dependencies
QS( String target, String exec, char src_sep, Q ... srcs ) {
super(target, src_sep,srcs);
_exec = exec;
for( int i=_exec.indexOf('%'); i!= -1; i = _exec.indexOf('%',i+1) ) {
if( false ) {
} else if( _exec.startsWith("dst",i+1) ) {
} else if( _exec.startsWith("src",i+1) ) {
} else if( _exec.startsWith("top",i+1) ) {
} else
throw new IllegalArgumentException("dependency exec has unknown pattern: "+_exec.substring(i));
}
}
QS( String target, String exec, Q src ) {
this(target,exec,' ',src);
}
// --- parse_exec
// The _exec String contains normal text, plus '%src' and '%dst' strings.
String parse_exec() {
if( _parsed_exec == null ) {
if( _srcs.length > 0 ) _parsed_exec = _exec.replaceAll("%src0",_srcs[0]._target);
if( _srcs.length > 1 ) _parsed_exec = _parsed_exec.replaceAll("%src1",_srcs[1]._target);
if( _srcs.length > 2 ) _parsed_exec = _parsed_exec.replaceAll("%src2",_srcs[2]._target);
_parsed_exec = _parsed_exec
.replaceAll("%dst",_target)
.replaceAll("%src",flat_src(_src_sep))
.replaceAll("%top",TOP_PATH_SLASH);
}
return _parsed_exec;
}
protected ByteArrayOutputStream do_it( ) {
final String exec = parse_exec();
System.out.println(exec); // Print 1-liner on what the step is doing
brief_pause(); // let input files settle out
return _justprint ? null : sys_exec(exec, null, false);
}
}
// --- A dependency for a C++ compile --------------------------------------
// The source is a foo.P file; read it for more dependencies.
// Add the dependencies in 'extra_check'.
// The 'doit' step just changes the default printout from QS - otherwise
// it just does a normal string exec.
static private class QC extends QS {
// Given a path to a C++ file (and a compile string), build a foo.o
// dependency to build from a foo.P file.
static QC gen( String tpath, String flavor, String exec, String basename, String ext, Q ... extras ) {
final String target = tpath+flavor+basename+".o";
final String Pname = tpath+"incls/"+basename+ext;
final Q src = FILES.get(Pname);
if( src == null ) throw new IllegalArgumentException("Missing dep for "+Pname+"\n");
if( extras!=null && extras.length>0 )
src.addDep(extras);
return new QC(target,exec,src);
}
private QC( String target, String exec, Q src ) { super(target,exec,src ); }
// Given a list of C++ files (and a compile string), build an array of foo.o
// dependencies to build, from the list of C++ files.
static Q[] gen_all( Q[] cs, String tpath, String flavor, String exec, Q ... extras ) {
final Q os[] = new Q[cs.length];
for( int i=0; i<cs.length; i++ )
os[i] = gen( tpath, flavor, exec+" "+cs [i]._target, basename(cs [i]._target), ".PP", extras );
return os;
}
// Override the default non-verbose printout.
protected ByteArrayOutputStream do_it( ) {
final String exec = parse_exec();
if( _verbose > 0 ) System.out.println(exec); // Print 1-liner on what the step is doing
else System.out.println("Compiling "+_target);
return _justprint ? null : sys_exec(exec, null, false);
}
// Read the .P file for extra dependencies
protected int extra_check() {
Q pfile=null;
for( Q x : _srcs ) {
if( x._target.endsWith("P") ) {
pfile=x;
break;
}
}
if( pfile==null ) throw new BuildError("Missing P file dep for "+_target);
try {
// Read & parse the deps file
final File deps = new File(pfile._target);
final int len = (int)deps.length();
final char[] cbuf = new char[len];
if( len != new FileReader(deps).read(cbuf,0,len) )
throw new IOException("Unexpected short read");
// Split the string based on:
// ' ' - blank
// '\' - Backslash. Must be encoded as 4 backslashes in the split string
// '\n' - newline.
final String[] ss = new String(cbuf).split("[ \\\\\n:]+");
// The first String in ss should be of the form "foo.o".
if( ss.length < 1 || !_target.endsWith(ss[0]) )
throw new IllegalArgumentException("Expected first dep of "+pfile._target+" to refer to "+_target+"; badly formed .PP file; please delete it");
// The 2nd String should be of the form TOP+".../foo.cpp"
String srcname="";
if( ss.length < 2 || !(srcname=(TOP_PATH_SLASH+"/"+pfile._srcs[0]._target)).endsWith(ss[1]) )
throw new IllegalArgumentException("Expected second dep to refer to "+srcname+" but found "+ss[1]+"; badly formed .PP file; please delete "+pfile._target);
// Copy the initial _srcs into a HashMap, to remove dup strings from
// the dependency file
final HashMap<String,Q> srcs = new HashMap<String,Q>();
for( Q s : _srcs )
srcs.put(s._target,s);
// The remaining Strings will be proper dependencies. They either:
// - start with 'src' and are a relative name and must be in the global FILES list, or
// - start with TOP_PATH_SLASH, then 'src' and are treated as above, or
// - they start with '/' and refer to a system include file, or
// - start with 'sandbox' and refer to an OS include file,
for( int i=2; i<ss.length; i++ ) {
String s = ss[i];
if( s.startsWith("/") || s.startsWith("../") ) {
srcs.put(s,Q.new_dynamic(s)); // sandbox or system .h files are just assumed valid
} else if( s.startsWith("src/") ) { // these should exist in build.java, for some kind of safety
Q dep = Q.FILES.get(s);
String fname = TOP_PATH_SLASH+"/"+s;
boolean file_found = new File(fname).canRead();
if( dep == null ) { // Source file not mentioned in build.java
if( !file_found ) { // File not found?
if( _verbose > 0 )
System.out.println("--- File "+fname+" not found, forcing rebuild");
// File not found, and not in build.java - so dep file is
// wrong; force a recompile of the C++ program. It should
// fail (after all an include file is missing). If the C++
// file is edited to remove the missing include file, that
// should trigger a rebuild of the dep file - which will no
// long mention the missing include file.
return 2; // force build step
}
// Dep file mentions a name that is not in build.java, but the
// file still exists - assume it is a missing dependence in the
// build file.
throw new IllegalArgumentException("build.java does not have a dependence for file "+s);
} else if( !file_found ) {
// Dep file and build.java both mention a file that does not exist.
// Probably the file was removed and build.java should be cleaned up.
throw new IllegalArgumentException("build.java has a dependence for missing file "+fname);
}
srcs.put(s,dep);
} else {
throw new IllegalArgumentException("Dependency filename does not start with '/' or 'sandbox' or 'src' "+s);
}
}
// Anything change?
if( srcs.size() == _srcs.length ) return 0;
final Q qsrcs[] = srcs.values().toArray(_srcs); // Update _srcs list; more deps found so it grew
// Source list changed; update it, and the parent/child relations and counts
// 'this' is locked
synchronized(this) { // Lock self; no updating _ready_children
_state = "extra_check"; // Change state: we'll need an extra go'round in find_deps
_srcs = qsrcs; // Change list of children
_ready_children = 0; // Recompute readiness; some children are ready and some are not
for( Q src : qsrcs ) {
synchronized(src) {
src._parents.add(this);
if( src._state == "done" || src._state == "failed" )
_ready_children++;
}
}
if( _ready_children == qsrcs.length )
return 0; // All new children all ready to go!
findDeps_queue(); // Else must FindDep'em all...
return 1; // Added new deps!!!
}
} catch( FileNotFoundException e ) {
if( _justprint || _clean ) return 0; // Just printing - so no new deps discovered
throw new IllegalArgumentException("make is busted: did not spot missing file: "+e);
} catch( IOException e ) { // Some I/O issue?
throw new BuildError(e.toString()); // Rethrow as a BuildError
}
} // extra_check
}
// --- A dependency for an archive -----------------------------------------
static private class QA extends QS {
QA( String target, String exec, char src_sep, Q ... srcs ) { super(target,exec,src_sep,srcs); }
// Override the default non-verbose printout.
protected ByteArrayOutputStream do_it( ) {
final String exec = parse_exec();
if( _verbose > 0 ) System.out.println(exec); // Print 1-liner on what the step is doing
else System.out.println("Archiving "+_target);
return _justprint ? null : sys_exec(exec, null, false);
}
// To help avoid NFS wackiness, where the clocks are slightly askew I insert
// a tiny delay before the archiving step. This lets the filer system have
// a change to swallow all files being archived and get it's file timestamps
// settled out before the archiving promptly asks for them all.
void brief_pause() {
try { Thread.sleep(2); } catch( InterruptedException e ) { };
}
}
static Q[] flatten_to_Q( Object ... srcs ) {
int sz=0;
for( Object o : srcs )
sz += (o instanceof Q[]) ? ((Q[])o).length : 1;
Q qs[] = new Q[sz];
int i=0;
for( Object o : srcs )
if( o instanceof Q[] ) {
Q[] sqs = (Q[])o;
System.arraycopy(sqs,0,qs,i,sqs.length);
i += sqs.length;
} else {
qs[i++] = (Q)o;
}
return qs;
}
// --- A dependency for a link ---------------------------------------------
static private class QL extends QS {
QL( String target, String exec, char src_sep, Object ... srcs ) {
super(target,exec,src_sep,flatten_to_Q(srcs));
}
QL( String target, String exec, Q[] srcs ) {
super(target,exec,' ',srcs);
}
// Override the default non-verbose printout.
protected ByteArrayOutputStream do_it( ) {
final String exec = parse_exec();
if( _verbose > 0 ) System.out.println(exec); // Print 1-liner on what the step is doing
else System.out.println("Linking "+_target);
return _justprint ? null : sys_exec(exec, null, false);
}
}
// --- A bogus dependency for adding a linker option in the middle ---------
static private class QLinkerOption extends Q {
QLinkerOption( String opt ) { super(opt); }
public String build_step( final int xc ) { return "done"; }
}
// --- Strip and Sign a Binary, in 1 step ---------
static private class QStripSign extends Q {
private QStripSign( String dst, Q[] srcs ) { super(dst,' ',srcs); }
public static QStripSign make( String dst, Q src ) { Q[] qs = {src}; return new QStripSign(dst,qs); }
protected ByteArrayOutputStream do_it( ) {
final String exec0 = STRIP_X86+" -d -o "+_target+" "+_srcs[0]._target;
if( _verbose > 0 ) System.out.println(exec0); // Print 1-liner on what the step is doing
else System.out.println("Stripping "+_target);
ByteArrayOutputStream bas0 = _justprint ? null : sys_exec(exec0, null, false);
final String exec1 = ELFSIGN+" "+_target;
if( _verbose > 0 ) System.out.println(exec1); // Print 1-liner on what the step is doing
else System.out.println("Signing "+_target);
ByteArrayOutputStream bas1 = _justprint ? null : sys_exec(exec1, null, false);
return bas1;
}
}
// --- Construct foo.P dependencies from all foo.cpp files -----------------
// Find all 'cpp' files in the FILES list. For each src/.../foo.cpp, create
// a 'path/incls/foo.P' dependency. The dependency will cause the foo.P
// file to be made from the 'bld' string if the foo.cpp file changes. A
// foo.P file lists all the other '#include' files used by foo.cpp.
static private class QP extends QS {
private QP( final String target, final String bld, char src_sep, final Q ... srcs ) { super(target,bld,src_sep,srcs); }
private QP( final String target, final String bld, final Q src ) { super(target,bld,src); }
static void build_P_deps( String path, String bld ) {
for( String key : Q.FILES.keySet() ) {
if( key.endsWith("cpp") ) {
final String basename = basename(key);
final String Pname = basename+".PP";
Q pp = new QP(path + "incls/"+Pname,bld,' ',FILES.get(key));
}
}
}
// Override the default non-verbose printout.
protected ByteArrayOutputStream do_it( ) {
final String exec = parse_exec();
if( _verbose > 1 ) System.out.println(exec); // Print 1-liner on what the step is doing
else System.out.println("Depending "+_target);
return _justprint ? null : sys_exec(exec, null, false);
}
}
// --- A dependency, just 'touch'ing the target ----------------------------
// Mostly just a normal dependency
static private class Q_touch extends Q {
Q_touch( final String target, final Q ... srcs ) { super(target,' ',srcs); }
protected ByteArrayOutputStream do_it( ) {
System.out.println("touch "+_target); // 1-liner of build-step
if( _justprint ) return null;
File f = new File(TOP_PATH_SLASH+"/"+_target);
try {
f.delete();
f.createNewFile();
// You would think that to delete & create the file would update the
// lastMod time accurately, but on linux at least it appears it can be
// created at least 1 msec in the past.
long t = System.currentTimeMillis();
f.setLastModified(t);
} catch( IOException e ) {
throw new BuildError("Unable to make file "+_target+": "+e.toString());
}
return null; // No output from a 'touch'
}
}
// --- cat_files -----------------------------------------------------------
static void cat_files( final Q dst, final Q[] srcs ) {
FileChannel targ = null;
FileChannel srcx = null;
try {
try {
File f = new File(dst._target);
f.createNewFile();
targ = new FileOutputStream(f).getChannel();
int offset = 0;
for( Q src : srcs ) {
if( srcx != null ) srcx.close();
File f0 = new File(src._target);
srcx = new FileInputStream(f0).getChannel();
long crunk = targ.transferFrom(srcx, offset, srcx.size());
offset += srcx.size();
}
} finally {
if( targ != null ) targ.close();
if( srcx != null ) srcx.close();
}
} catch( IOException e ) {
throw new BuildError("Unable to cat into file "+dst._target+": "+e.toString());
}
}
// --- copy/concat files ---------------------------------------------------
// Copy/concat files
static private class Qcat extends Q {
Qcat( final String target, final Q ... srcs ) { super(target,' ',srcs); }
protected ByteArrayOutputStream do_it( ) {
if( _verbose > 1 ) System.out.println("cat "+_srcs+" > "+_target);
else System.out.println("Concating "+_target);
if( _justprint ) return null;
cat_files( this, _srcs );
return null; // No output from a 'concat'
}
}
// --- ADLC ----------------------------------------------------------------
// Run the ADLC
static private class Qadlc extends QS {
final String _adlc_dir;
boolean _ran_adlc = false;
Qadlc( final String adlc_dir, final String target, final String exec, final Q ... srcs ) {
super(adlc_dir+target,exec,' ',srcs);
_adlc_dir = adlc_dir;
}
protected ByteArrayOutputStream do_it( ) {
final String exec = parse_exec();
if( _verbose > 1 ) System.out.println(exec); // Print 1-liner on what the step is doing
else System.out.println("ADLCing "+_target);
_ran_adlc = true;
return _justprint ? null : sys_exec(exec, new File(_adlc_dir).getAbsoluteFile(), false);
}
}
// --- Compare/copy files --------------------------------------------------
// Compare/copy files. If the file "XXXX.?pp" differs from "XXXX_tmp.?pp"
// then force a build-step. The forced step is a copy from "XXXX_tmp.?pp"
// over onto "XXXX.?pp". Used by the ADLC to notice when files changed
// content and not just date after running the ADLC.
static private class Qcmp_cp extends Q {
final Q _tmp;
private Qcmp_cp( final String target, final Q tmp, final Q src ) {
super(target,' ',new Q[] {src});
_tmp = tmp;
}
protected ByteArrayOutputStream do_it( ) {
if( _verbose > 1 ) System.out.println("cat "+_tmp._target+" > "+_target);
else System.out.println("Copying "+_target);
if( _justprint ) return null;
cat_files( this, new Q[] {_tmp} );
return null; // No output from a 'concat'
}
protected int extra_check() {
// See if the tmp file has been recently built. If so we need to also
// do a file-contents compare. If not... then there's no reason to
// update the target file.
if( _srcs[0]._modtime < _modtime ) return 0;
if( _modtime==0 ) return 0; // our file does not exist, Do The Normal Thing
// The parent is a ADLC-produced tmp file. If we did not need to
// run the ADLC, then the tmp cannot have changed.
if( ((Qadlc)_srcs[0])._ran_adlc ) {
// Ok, the ADLC ran producing a possibly-new tmp file. See if these 2
// files differ. If not, then the existing file can keep it's current
// timestamp.
FileInputStream fsdst = null;
FileInputStream fssrc = null;
try {
try {
final int len = (int)_dst.length();
File tmpdst = new File(TOP,_tmp._target); // Assume TOP relative
if( len != (int)tmpdst.length() ) return 2; // files differ: force "build" step
fsdst = new FileInputStream(_dst);
fssrc = new FileInputStream(tmpdst);
final byte[] dbuf = new byte[len];
for( int rd = 0; rd < len; rd += fsdst.read(dbuf,rd,len-rd) ) ;
final byte[] sbuf = new byte[len];
for( int rs = 0; rs < len; rs += fssrc.read(sbuf,rs,len-rs) ) ;
for( int i=0; i<dbuf.length; i++ )
if( dbuf[i] != sbuf[i] )
return 2; // files differ: force "build" step
// Files are equal, no copy!
} finally {
if( fsdst != null ) fsdst.close();
if( fssrc != null ) fssrc.close();
}
} catch( IOException e ) {
throw new BuildError("Unable to cmp into file "+_target+": "+e.toString());
}
}
// Files did not change, so remove the dependency of "ad_x86.hpp" from
// "ad_x86_tmp.hpp" because "ad_x86.hpp" is not changing. Note that the
// temp file ad_x86_tmp.hpp can have a later timestamp than ad_x86.hpp
// but since the tmp file is the same as the normal file, we do not need
// to do anything to ad_x86.hpp to make it "up to date".
synchronized(this) { _srcs = new Q[0]; }
return 0;
}
}
// =========================================================================
// --- The Dependencies ----------------------------------------------------
// =========================================================================
// The build-self dependency every project needs
static final Q _build_j = new Q("build/build.java");
static final Q _build_c = new QS(BUILD_DIR+"/build.class", JAVAC + " -cp " + BUILD_DIR+" -d "+BUILD_DIR+" %src",_build_j);
// --- Some tools
static final String AZ_SWTOOLS_GCC_X86_DIR = _gcc_dir;
static final String AZ_SWTOOLS_X86_DIR = _binutils_dir;
// ----------------------------------------------------------------------------
// Compiler Warnings
// ----------------------------------------------------------------------------
// The -w flag controls whether or not we generate and report warnings.
// After we've cleaned up the warnings, we'll make all warnings into errors.
// ----------------------------------------------------------------------------
static String gcc_warn() {
String result;
String warns=" -fdiagnostics-show-option "; // show options to control warnings
String errors;
if( _warn ) { warns = warns + " -Wall "; }
// These are warnings we don't care about and will allow
warns = warns
+ " -Wno-endif-labels " // don't warn if there is text after a #endif or #else
+ " -Wno-reorder " // variables are initialized out of order
+ " -Wno-switch " // A switch statement on an enum where not all values
// are in a case statment and there is no default clause.
// I think this should be an error, but the hotspot code
// is too full of this stuff. so we'll ignore it.
+ " -Wno-unused-function " // defined and not referenced funciton
+ " -Wno-unused-value " // found a null statement, for example (0);
+ " -Wno-unused-variable" // don't warn about declared and unused variables
+ " -Wno-write-strings " // assigning string to char*. not a problem
;
// Always make these warnings into errors.
errors = " "
+ " -Waddress " // suspicious use of address
+ " -Werror=char-subscripts " // don't use char as an array index
+ " -Werror=comment " // no nested comments
+ " -Wformat -Werror=format " // ensure var args of printf (and others) match
+ " -Werror=format-extra-args " // no extra args at end of printf()
+ " -Werror=format-zero-length " // can't have a zero-length format statement
+ " -Werror=missing-braces " // proper initialization format for arrays of structs
+ " -Werror=overflow " // catch assigning 64-bit to 32-bit values
+ " -Werror=parentheses " // no confusing expressions
+ " -Werror=pointer-arith " // don't use NULL in integer comparisons
+ " -Werror=return-type " // make sure every function returns a value.
+ " -Werror=sign-compare " // don't compare signed and unsigned quatities
+ " -Werror=sequence-point " // unsafe/unpredictiable expression because of
// sequence point violation(s)
+ " -Werror=strict-aliasing " // code breaks strict aliasing rules
+ " -Werror=strict-overflow " // detect optimizations that fail on overflow
// see inline.hpp for explanation.
+ " -Werror=unused-label " // label declared and not used
+ " -Werror=volatile-register-var " // don't mark register variables as volatile
;
// -Werror=array-bounds
// Still a bug in gc code when compiled -O3 -DASSERT. Compile with -w option to see it.
// When that is fixed, then we can add this to the list of warnings that should be errors.
// -Werror=uninitialized
// This can be used only when optimizing.
// It is put in the string GCC_WARN_OPTIMIZED. (see below)
// return gcc warning string
result = warns + errors;
return result;
}
static String gcc_warn_optimized() {
String errors="";
if ( TARGET_ISA.equals("x86_64") ) {
//errors=" -Werror=uninitialized";
}
return errors;
}
static final String GCC_WARN = gcc_warn();
static final String GCC_WARN_OPTIMIZED = gcc_warn_optimized();
// ----------------------------------------------------------------------------
// THESE ARE COMPILER WARNINGS THAT SHOULD BE FIXED, as opposed to ignoring them
//
// I'll leave the comments here as documentation of the issues. See the errors=...
// list, above, to tell which have been dealt with.
// ----------------------------------------------------------------------------
// -Wparentheses Missing parentheses in expressions that might be wrong
// and certainly cause confusion.
// [9/11/09 fixed. bean]
// inline_function_used_but_never_defined
// This warning is a side effect of using the *.inline.hpp files.
// Some code includes the *.hpp file but not the *.inline.hpp file.
// In this case, it has a declaration of a method in the class that
// is not ever defined.
// NOTE: I have little hope of ever being able to fix this.
// -Wunitialized uninitialized variables. We're starting off with about 600 cases.
// [9/9/09 fixed all but one case in gpgc_marks.hpp:236]
// -Wmissing-braces Warn if an aggregate or union initialized is not fully bracketed.
// currently, found only in src/os/linux/vm/jvm_linux.cpp
// [9/8/09 fixed. bean]
// -Wpointer-arith Complains when NULL is used in an expression with an integer.
// [fixed 9/10/09 bean]
// -Woverflow I've seen two different problems that are likely errors.
// (1) in arguments.cpp there is an integer overflow in compile time
// computations. (2) in two other files, a 64bit signed integer is
// truncated to a 32bit unsigned int in the middle of a computation.
// Both of these are probably errors.
// Example 1: Copy::file_to_word(void*,size_t,int) is called from a couple
// of places passing in (::badHeapWordVal), which is a 64 bit constant
// 0xBAADBABEBAADBABE. But because of this error, memory is filled with
// 0xFFFFFFFFBAADBABE. Later, when we check for badHeapWordVal, we
// wont find it. called from space.cpp and psPromotionLAB.cpp.
// This seems to clearly be an error.
// Example 2: C1CompileThreshold=(1<<31)-1 in arguments.cpp.
// C1CompileThreshold is 64bits and this expression is maxint32 = 0x7fffffff.
// Is this what was intended? error?
// Example 3: (related issue). LIR_Assembler::profile_entry()
// does cmp4i against C1CompileThreshold. is this an error?
// [9/1?/09: fixed]
// overriding <method_name>
// deprecated covariant return type <method_name>
// In a few places, a virtual method returning a pointer is initialized
// to 0. And then an implementation of the method in a subclass produces
// this pair of warnings. (I'm having a brain fart and don't understand
// the problem) This occurs in a few places and should just be fixed.
// [fixed 9/10/09 bean]
// left shift count >= width of type
// This occurs only in src/src/vm/ci/ciInstanceKlass.cpp. This *IS*
// an error. Currently, we build a mask incorrectly in this file.
// [fixed 9/10/09 bean]
// taking address of temporary
// src/share/vm/prims/jvmtiExport.cpp:402
// src/share/vm/classfile/vmSymbols.cpp:144,268
// There isn't a way to turn off these warnings, so they need to be fixed.
// I may be reading the code wrong, but it looks like the code takes an
// address of a reference, which is probably not what was intended.
// -fcheck-new is in effect
// The actual message is 'operator new' must not return NULL unless it
// is declare ' throw() ' (or -fcheck-new is in effect)
// src/share/vm/oops/klass.cpp:242
// src/share/vm/memory/allocation.cpp:25,28
// These allocators should throw an exception when they fail instead of
// silently return NULL. That is the C++ standard requirement for an
// allocator. (Using the -fcheck-new flag, the compiler will always
// do a NULL check anyway, by the way.)
// operation on <var> may be undefined
// src/share/vm/c1/c1_InstructionPrinter.cpp:233
// This should be fixed. It is clearly a typo.
// src/share/vm/c1/c1_LIRGenerator.cpp:1716
// This should be fixed. It is clearly a typo.
// -Wformat-extra-args
// occurs in one place: src/hare/vm/runtime/compilationPolicy.cpp:364
// and is clearly a bug. It looks like the first argument 'caller_cnt'
// should not be there.
// the use of 'tempnam' is dangerous, better use 'mkstemp'
// This is in j2se6 code. And while this is not a bug, I don't see any
// way to turn off this warning, so we may have to fix it. Damn.
// src/share/native/com/sun/java/util/jar/pack/unpack.cpp:4647.
// [9/10/09 "fixed". This is not a compiler warning, but
// rather a linker warning that we can ignore.]
// 'noreturn ' function does return
// function declared 'noreturn' has a 'return ' statement
// occurs in src/share/vm/utilities/debug.cpp:217
// report_fatal() is marked as _NORETURN_ in the headerfile but the
// actual implementation does return. This can screw up the optimizer.
// The right way to fix this is to create _report_fatal() _NORETURN_
// and change report_fatal() to do the debugging check and call _report_fatal()
// if it really wants to report and die.
// -Wsign-compare 158 places in the code where we compare signed and unsigned values. The
// first few I looked at were ok, but they can sometimes be real errors.
// The most common case was that we'd declare a buflen to be an int and then
// compare it with a size_t (which is unsigned long). I'd like to fix this,
// but if we can't, it would be acceptable to turn off this warning.
// [9/10/09 fixed all but one case in gpgc_relocation.cpp:89,90,115,116]
// compare between one spot compares values from two different enumerated types. This
// should be fixed. compare 'enum FRegister' and 'enum Register'
// src/cpu/x86/vm/interpreterRT_x86.cpp:429
// The defininitions are in src/cpu/x86/vm/register_pd.hpp, by the way.
// [fixed 9/11/09 bean]
// address of local variable returned
// These look like real errors, but it's a little hard to tell. They need
// to be fixed.
// * src/share/vm/prims/jvmtiExport.cpp:402
// * src/share/vm/classfile/vmSymbols.cpp:144,268
// And this one is just plain hokey. It attemps to guess at the current
// stack pointer by taking the address of a local variable. In stead it
// should use an asm instruction.
// * src/os/linux/vm/os_linux.cpp:476
// -Wstrict-overflow This warns that the compiler is assuming an integer expression does not
// overflow and, therefore, the compiler can optimize the expression.
// For example, the optimizer will assume (x<x+1) will always be true
// because it is equivalent to (0<1).
// Example in our code: has_hole_between() in c1_LinearScan.cpp has a
// line assert(hole_from<hole_to) that gets optimized away when compiled
// -O3 because after inlining, it becomes assert(op_id, op_id+2). There
// are several places where this occurs.
// Example in our code: patch_branches_impl() in assembler_x86.cpp calls
// at(i) in several places. The implementation of at(i) has an assert()
// that is optimized away, similar to the above example.
// Note: there is an option, -fwrapv, that tells the compiler that
// integer overflow wraps. Using this option, the compiler will
// optimize correctly, *but* you may pay a big performance penalty
// for using -fwrapv.
// Note: I don't know how to fix this.
// [9/10/09 fixed]
// -Warray-bounds The compiler complains because it knows that an array bound is
// out of range.
// Example in our code: update_and_deadwood_in_dense_prefix() gets
// invoked with space_id being out of range. I can't figure out how
// this happens. I hope someone can figure this out and fix it.
//
// ----------------------------------------------------------------------------
static final String GCC_FLAGS = "-fpic -fno-rtti -fno-exceptions -fpermissive -pipe -fmessage-length=0 " + GCC_WARN;
static final String GCC_X86 = AZ_SWTOOLS_GCC_X86_DIR + "/g++ -fno-strict-aliasing -Di86pc -DAZPROF_NO_EVENTS " + GCC_FLAGS;
static final String STRIP_X86 = AZ_SWTOOLS_X86_DIR + "/strip";
static final String AR_X86 = AZ_SWTOOLS_X86_DIR + "/ar";
static final String ELFSIGN = SANDBOX+"/linux/bin/i686/elfsign -k "+SANDBOX+"/linux/keys.private/binpriXX.pem ";
// --- Some HotSpot CPU-specific source files
static final String CPU_X86 = "src/cpu/x86/vm/";
static final Q _assembler_x86_cpp = new Q(CPU_X86+"assembler_x86.cpp");
static final Q _assembler_pd_hpp = new Q(CPU_X86+"assembler_pd.hpp");
static final Q _assembler_x86_hpp = new Q(CPU_X86+"assembler_x86.hpp");
static final Q _bytecodes_x86_cpp = new Q(CPU_X86+"bytecodes_x86.cpp");
static final Q _bytecodes_x86_hpp = new Q(CPU_X86+"bytecodes_pd.hpp");
static final Q _bytes_pd_hpp = new Q(CPU_X86+"bytes_pd.hpp");
static final Q _bytes_x86_hpp = new Q(CPU_X86+"bytes_x86.hpp");
static final Q _c1_CodeStubs_x86_cpp = new Q(CPU_X86+"c1_CodeStubs_x86.cpp");
static final Q _c1_Defs_pd_hpp = new Q(CPU_X86+"c1_Defs_pd.hpp");
static final Q _c1_Defs_x86_hpp = new Q(CPU_X86+"c1_Defs_x86.hpp");
static final Q _c1_FrameMap_x86_cpp = new Q(CPU_X86+"c1_FrameMap_x86.cpp");
static final Q _c1_FrameMap_pd_hpp = new Q(CPU_X86+"c1_FrameMap_pd.hpp");
static final Q _c1_FrameMap_x86_hpp = new Q(CPU_X86+"c1_FrameMap_x86.hpp");
static final Q _c1_LIRAssembler_x86_cpp = new Q(CPU_X86+"c1_LIRAssembler_x86.cpp");
static final Q _c1_LIRAssembler_x86_hpp = new Q(CPU_X86+"c1_LIRAssembler_pd.hpp");
static final Q _c1_LIRGenerator_x86_cpp = new Q(CPU_X86+"c1_LIRGenerator_x86.cpp");
static final Q _c1_LinearScan_x86_cpp = new Q(CPU_X86+"c1_LinearScan_x86.cpp");
static final Q _c1_LinearScan_pd_hpp = new Q(CPU_X86+"c1_LinearScan_pd.hpp");
static final Q _c1_LinearScan_x86_hpp = new Q(CPU_X86+"c1_LinearScan_x86.hpp");
static final Q _c1_MacroAssembler_x86_cpp = new Q(CPU_X86+"c1_MacroAssembler_x86.cpp");
static final Q _c1_MacroAssembler_pd_hpp = new Q(CPU_X86+"c1_MacroAssembler_pd.hpp");
static final Q _c1_MacroAssembler_x86_hpp = new Q(CPU_X86+"c1_MacroAssembler_x86.hpp");
static final Q _c1_Runtime1_x86_cpp = new Q(CPU_X86+"c1_Runtime1_x86.cpp");
static final Q _c1_globals_pd_hpp = new Q(CPU_X86+"c1_globals_pd.hpp");
static final Q _c1_globals_x86_hpp = new Q(CPU_X86+"c1_globals_x86.hpp");
static final Q _c2_globals_pd_hpp = new Q(CPU_X86+"c2_globals_pd.hpp");
static final Q _c2_globals_x86_hpp = new Q(CPU_X86+"c2_globals_x86.hpp");
static final Q _constants_x86_hpp = new Q(CPU_X86+"constants_pd.hpp");
static final Q _copy_pd_hpp = new Q(CPU_X86+"copy_pd.hpp");
static final Q _copy_x86_hpp = new Q(CPU_X86+"copy_x86.hpp");
static final Q _debug_x86_cpp = new Q(CPU_X86+"debug_x86.cpp");
static final Q _disassembler_x86_cpp = new Q(CPU_X86+"disassembler_x86.cpp");
static final Q _disassembler_x86_hpp = new Q(CPU_X86+"disassembler_pd.hpp");
static final Q _frame_x86_cpp = new Q(CPU_X86+"frame_x86.cpp");
static final Q _frame_x86_hpp = new Q(CPU_X86+"frame_pd.hpp");
static final Q _frame_x86_inline_hpp = new Q(CPU_X86+"frame_pd.inline.hpp");
static final Q _global_defs_x86_hpp = new Q(CPU_X86+"globalDefinitions_pd.hpp");
static final Q _globals_pd_hpp = new Q(CPU_X86+"globals_pd.hpp");
static final Q _globals_x86_hpp = new Q(CPU_X86+"globals_x86.hpp");
static final Q _gpgc_traps_x86_hpp = new Q(CPU_X86+"gpgc_traps_pd.hpp");
static final Q _heapRef_x86_hpp = new Q(CPU_X86+"heapRef_pd.hpp");
static final Q _heapRef_x86_inline_hpp = new Q(CPU_X86+"heapRef_pd.inline.hpp");
static final Q _icache_x86_cpp = new Q(CPU_X86+"icache_x86.cpp");
static final Q _icache_pd_hpp = new Q(CPU_X86+"icache_pd.hpp");
static final Q _icache_x86_hpp = new Q(CPU_X86+"icache_x86.hpp");
static final Q _interp_masm_x86_cpp = new Q(CPU_X86+"interp_masm_x86_64.cpp");
static final Q _interp_masm_pd_hpp = new Q(CPU_X86+"interp_masm_pd.hpp");
static final Q _interp_masm_x86_hpp = new Q(CPU_X86+"interp_masm_x86_64.hpp");
static final Q _interpreterRT_x86_cpp = new Q(CPU_X86+"interpreterRT_x86.cpp");
static final Q _interpreterRT_x86_hpp = new Q(CPU_X86+"interpreterRT_pd.hpp");
static final Q _interpreter_x86_cpp = new Q(CPU_X86+"interpreter_x86.cpp");
static final Q _interpreter_x86_hpp = new Q(CPU_X86+"interpreter_pd.hpp");
static final Q _javaFrameAnchor_x86_hpp = new Q(CPU_X86+"javaFrameAnchor_pd.hpp");
static final Q _jniTypes_pd_hpp = new Q(CPU_X86+"jniTypes_pd.hpp");
static final Q _jniTypes_x86_hpp = new Q(CPU_X86+"jniTypes_x86.hpp");
static final Q _jni_md_pd_hpp = new Q(CPU_X86+"jni_md_pd.h");
static final Q _jni_x86_hpp = new Q(CPU_X86+"jni_x86.h");
static final Q _lvb_x86_hpp = new Q(CPU_X86+"lvb_pd.hpp");
static final Q _lvb_pd_inline_hpp = new Q(CPU_X86+"lvb_pd.inline.hpp");
static final Q _nativeInst_pd_hpp = new Q(CPU_X86+"nativeInst_pd.hpp");
static final Q _nativeInst_x86_hpp = new Q(CPU_X86+"nativeInst_x86.hpp");
static final Q _nativeInst_x86_cpp = new Q(CPU_X86+"nativeInst_x86.cpp");
static final Q _objectRef_x86_cpp = new Q(CPU_X86+"objectRef_x86.cpp");
static final Q _objectRef_x86_hpp = new Q(CPU_X86+"objectRef_pd.hpp");
static final Q _objectRef_x86_inline_hpp = new Q(CPU_X86+"objectRef_pd.inline.hpp");
static final Q _pauselessTraps_x86_hpp = new Q(CPU_X86+"pauselessTraps_pd.hpp");
static final Q _refsHierarchy_x86_hpp = new Q(CPU_X86+"refsHierarchy_pd.hpp");
static final Q _register_x86_cpp = new Q(CPU_X86+"register_x86.cpp");
static final Q _register_x86_hpp = new Q(CPU_X86+"register_pd.hpp");
static final Q _register_x86_inline_hpp = new Q(CPU_X86+"register_pd.inline.hpp");
static final Q _sharedRuntime_x86_cpp = new Q(CPU_X86+"sharedRuntime_x86_64.cpp");
static final Q _stackRef_x86_cpp = new Q(CPU_X86+"stackRef_x86.cpp");
static final Q _stackRef_x86_hpp = new Q(CPU_X86+"stackRef_pd.hpp");
static final Q _stackRef_x86_inline_hpp = new Q(CPU_X86+"stackRef_pd.inline.hpp");
static final Q _stubGenerator_x86_cpp = new Q(CPU_X86+"stubGenerator_x86_64.cpp");
static final Q _stubRoutines_x86_cpp = new Q(CPU_X86+"stubRoutines_x86_64.cpp");
static final Q _stubRoutines_pd_hpp = new Q(CPU_X86+"stubRoutines_pd.hpp");
static final Q _stubRoutines_x86_hpp = new Q(CPU_X86+"stubRoutines_x86_64.hpp");
static final Q _templateTable_x86_cpp = new Q(CPU_X86+"templateTable_x86_64.cpp");
static final Q _templateTable_pd_hpp = new Q(CPU_X86+"templateTable_pd.hpp");
static final Q _templateTable_x86_hpp = new Q(CPU_X86+"templateTable_x86_64.hpp");
static final Q _tickProfiler_x86_cpp = new Q(CPU_X86+"tickProfiler_x86.cpp");
static final Q _thread_x86_hpp = new Q(CPU_X86+"thread_pd.hpp");
static final Q _vm_version_x86_cpp = new Q(CPU_X86+"vm_version_x86_64.cpp");
static final Q _vm_version_pd_hpp = new Q(CPU_X86+"vm_version_pd.hpp");
static final Q _vm_version_x86_hpp = new Q(CPU_X86+"vm_version_x86_64.hpp");
static final Q _vtableStubs_x86_cpp = new Q(CPU_X86+"vtableStubs_x86_64.cpp");
static final Q _x86_ad = new Q(CPU_X86+"x86_64.ad");
// --- Some HotSpot OS-specific source files
static final String INCLUDES_AVX = " -I "+_avx_includes;
static final String INCLUDES_AZLINUX = INCLUDES_AVX + " -I "+SANDBOX+"/azlinux/include/";
static final String INCLUDES_AZPROXIED = INCLUDES_AVX + " -I "+SANDBOX+"/azproxied/include/";
static final String OS_LINUX = "src/os/linux/vm/";
static final Q _attachListener_linux_cpp = new Q(OS_LINUX+"attachListener_linux.cpp");
static final Q _c1_globals_os_hpp = new Q(OS_LINUX+"c1_globals_os.hpp");
static final Q _c1_globals_linux_hpp = new Q(OS_LINUX+"c1_globals_linux.hpp");
static final Q _c2_globals_os_hpp = new Q(OS_LINUX+"c2_globals_os.hpp");
static final Q _c2_globals_linux_hpp = new Q(OS_LINUX+"c2_globals_linux.hpp");
static final Q _chaitin_linux_cpp = new Q(OS_LINUX+"chaitin_linux.cpp");
static final Q _global_defs_linux_hpp = new Q(OS_LINUX+"globalDefinitions_os.hpp");
static final Q _globals_os_hpp = new Q(OS_LINUX+"globals_os.hpp");
static final Q _globals_linux_hpp = new Q(OS_LINUX+"globals_linux.hpp");
static final Q _gpgc_linux_cpp = new Q(OS_LINUX+"gpgc_linux.cpp");
static final Q _hpi_linux_cpp = new Q(OS_LINUX+"hpi_linux.cpp");
static final Q _hpi_os_hpp = new Q(OS_LINUX+"hpi_os.hpp");
static final Q _hpi_linux_hpp = new Q(OS_LINUX+"hpi_linux.hpp");
static final Q _jvm_linux_cpp = new Q(OS_LINUX+"jvm_linux.cpp");
static final Q _jvm_os_h = new Q(OS_LINUX+"jvm_os.h");
static final Q _jvm_linux_h = new Q(OS_LINUX+"jvm_linux.h");
static final Q _mutex_linux_cpp = new Q(OS_LINUX+"mutex_linux.cpp");
static final Q _osThread_linux_cpp = new Q(OS_LINUX+"osThread_linux.cpp");
static final Q _osThread_os_hpp = new Q(OS_LINUX+"osThread_os.hpp");
static final Q _osThread_linux_hpp = new Q(OS_LINUX+"osThread_linux.hpp");
static final Q _os_linux_cpp = new Q(OS_LINUX+"os_linux.cpp");
static final Q _os_os_hpp = new Q(OS_LINUX+"os_os.hpp");
static final Q _os_linux_hpp = new Q(OS_LINUX+"os_linux.hpp");
static final Q _os_linux_os_hpp = new Q(OS_LINUX+"os_os.inline.hpp");
static final Q _os_linux_inline_hpp = new Q(OS_LINUX+"os_linux.inline.hpp");
static final Q _thread_linux_inline_hpp = new Q(OS_LINUX+"thread_os.inline.hpp");
static final Q _vmError_linux_cpp = new Q(OS_LINUX+"vmError_linux.cpp");
// --- Some HotSpot OS-CPU-specific source files
static final String OS_CPU_LINUX_X86 = "src/os_cpu/linux_x86/vm/";
static final Q _assembler_linux_x86_cpp = new Q(OS_CPU_LINUX_X86+"assembler_linux_x86_64.cpp");
static final Q _atomic_os_pd_inline_hpp = new Q(OS_CPU_LINUX_X86+"atomic_os_pd.inline.hpp");
static final Q _atomic_linux_x86_inline_hpp = new Q(OS_CPU_LINUX_X86+"atomic_linux_x86.inline.hpp");
static final Q _gctrap_linux_x86_cpp = new Q(OS_CPU_LINUX_X86+"gctrap_linux_x86.cpp");
static final Q _gctrap_linux_x86_inline_hpp = new Q(OS_CPU_LINUX_X86+"gctrap_os_pd.inline.hpp");
static final Q _globals_os_pd_hpp = new Q(OS_CPU_LINUX_X86+"globals_os_pd.hpp");
static final Q _globals_linux_x86_hpp = new Q(OS_CPU_LINUX_X86+"globals_linux_x86.hpp");
static final Q _orderAccess_os_pd_hpp = new Q(OS_CPU_LINUX_X86+"orderAccess_os_pd.inline.hpp");
static final Q _orderAccess_linux_x86_hpp = new Q(OS_CPU_LINUX_X86+"orderAccess_linux_x86.inline.hpp");
static final Q _os_linux_x86_cpp = new Q(OS_CPU_LINUX_X86+"os_linux_x86.cpp");
static final Q _os_linux_x86_hpp = new Q(OS_CPU_LINUX_X86+"os_os_pd.hpp");
static final Q _prefetch_os_pd_hpp = new Q(OS_CPU_LINUX_X86+"prefetch_os_pd.inline.hpp");
static final Q _prefetch_linux_x86_hpp = new Q(OS_CPU_LINUX_X86+"prefetch_linux_x86.inline.hpp");
static final Q _threadLS_linux_x86_hpp = new Q(OS_CPU_LINUX_X86+"threadLS_os_pd.hpp");
static final Q _thread_linux_x86_cpp = new Q(OS_CPU_LINUX_X86+"thread_linux_x86.cpp");
static final Q _thread_os_pd_hpp = new Q(OS_CPU_LINUX_X86+"thread_os_pd.hpp");
static final Q _thread_linux_x86_hpp = new Q(OS_CPU_LINUX_X86+"thread_linux_x86.hpp");
static final Q _linux_x86_64_ad = new Q(OS_CPU_LINUX_X86+"linux_x86_64.ad");
// --- Some HotSpot source files
static final String AZUL_CODE = "src/azshare/vm/code/";
static final Q _codeBlob_cpp = new Q(AZUL_CODE+"codeBlob.cpp");
static final Q _codeBlob_hpp = new Q(AZUL_CODE+"codeBlob.hpp");
static final Q _codeCache_cpp = new Q(AZUL_CODE+"codeCache.cpp");
static final Q _codeCache_hpp = new Q(AZUL_CODE+"codeCache.hpp");
static final Q _compiledIC_cpp = new Q(AZUL_CODE+"compiledIC.cpp");
static final Q _compiledIC_hpp = new Q(AZUL_CODE+"compiledIC.hpp");
static final Q _commonAsm_cpp = new Q(AZUL_CODE+"commonAsm.cpp");
static final Q _commonAsm_hpp = new Q(AZUL_CODE+"commonAsm.hpp");
static final Q _pcMap_cpp = new Q(AZUL_CODE+"pcMap.cpp");
static final Q _pcMap_hpp = new Q(AZUL_CODE+"pcMap.hpp");
static final Q _vreg_hpp = new Q(AZUL_CODE+"vreg.hpp");
static final String AZUL_GC_SHARED = "src/azshare/vm/gc_implementation/shared/";
static final Q _auditTrail_cpp = new Q(AZUL_GC_SHARED+"auditTrail.cpp");
static final Q _auditTrail_hpp = new Q(AZUL_GC_SHARED+"auditTrail.hpp");
static final Q _auditTrail_inline_hpp = new Q(AZUL_GC_SHARED+"auditTrail.inline.hpp");
static final Q _auditTrail_inline2_hpp = new Q(AZUL_GC_SHARED+"auditTrail.inline2.hpp");
static final Q _cycleCounts_cpp = new Q(AZUL_GC_SHARED+"cycleCounts.cpp");
static final Q _cycleCounts_hpp = new Q(AZUL_GC_SHARED+"cycleCounts.hpp");
static final Q _heapRefBuffer_cpp = new Q(AZUL_GC_SHARED+"heapRefBuffer.cpp");
static final Q _heapRefBuffer_hpp = new Q(AZUL_GC_SHARED+"heapRefBuffer.hpp");
static final Q _lvb_cpp = new Q(AZUL_GC_SHARED+"lvb.cpp");
static final Q _lvb_hpp = new Q(AZUL_GC_SHARED+"lvb.hpp");
static final Q _lvbClosures_hpp = new Q(AZUL_GC_SHARED+"lvbClosures.hpp");
static final Q _markWord_cpp = new Q(AZUL_GC_SHARED+"markWord.cpp");
static final Q _markWord_hpp = new Q(AZUL_GC_SHARED+"markWord.hpp");
static final Q _markWord_inline_hpp = new Q(AZUL_GC_SHARED+"markWord.inline.hpp");
static final Q _nmt_hpp = new Q(AZUL_GC_SHARED+"nmt.hpp");
static final Q _pauselessTraps_hpp = new Q(AZUL_GC_SHARED+"pauselessTraps.hpp");
static final Q _pgcTaskManager_cpp = new Q(AZUL_GC_SHARED+"pgcTaskManager.cpp");
static final Q _pgcTaskManager_hpp = new Q(AZUL_GC_SHARED+"pgcTaskManager.hpp");
static final Q _pgcTaskThread_cpp = new Q(AZUL_GC_SHARED+"pgcTaskThread.cpp");
static final Q _pgcTaskThread_hpp = new Q(AZUL_GC_SHARED+"pgcTaskThread.hpp");
static final String AZUL_GC_GPGC = "src/azshare/vm/gc_implementation/genPauseless/";
static final Q _gpgc_cardTable_cpp = new Q(AZUL_GC_GPGC+"gpgc_cardTable.cpp");
static final Q _gpgc_cardTable_hpp = new Q(AZUL_GC_GPGC+"gpgc_cardTable.hpp");
static final Q _gpgc_closures_cpp = new Q(AZUL_GC_GPGC+"gpgc_closures.cpp");
static final Q _gpgc_closures_hpp = new Q(AZUL_GC_GPGC+"gpgc_closures.hpp");
static final Q _gpgc_collector_cpp = new Q(AZUL_GC_GPGC+"gpgc_collector.cpp");
static final Q _gpgc_collector_hpp = new Q(AZUL_GC_GPGC+"gpgc_collector.hpp");
static final Q _gpgc_debug_cpp = new Q(AZUL_GC_GPGC+"gpgc_debug.cpp");
static final Q _gpgc_debug_hpp = new Q(AZUL_GC_GPGC+"gpgc_debug.hpp");
static final Q _gpgc_gcManagerMark_cpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerMark.cpp");
static final Q _gpgc_gcManagerMark_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerMark.hpp");
static final Q _gpgc_gcManagerNew_cpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerNew.cpp");
static final Q _gpgc_gcManagerNew_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerNew.hpp");
static final Q _gpgc_gcManagerNewFinal_cpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerNewFinal.cpp");
static final Q _gpgc_gcManagerNewFinal_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerNewFinal.hpp");
static final Q _gpgc_gcManagerNewFinal_i_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerNewFinal.inline.hpp");
static final Q _gpgc_gcManagerNewReloc_cpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerNewReloc.cpp");
static final Q _gpgc_gcManagerNewReloc_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerNewReloc.hpp");
static final Q _gpgc_gcManagerNewStrong_cpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerNewStrong.cpp");
static final Q _gpgc_gcManagerNewStrong_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerNewStrong.hpp");
static final Q _gpgc_gcManagerNewStrong_i_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerNewStrong.inline.hpp");
static final Q _gpgc_gcManagerNewStrong_i2_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerNewStrong.inline2.hpp");
static final Q _gpgc_gcManagerOld_cpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerOld.cpp");
static final Q _gpgc_gcManagerOld_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerOld.hpp");
static final Q _gpgc_gcManagerOldFinal_cpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerOldFinal.cpp");
static final Q _gpgc_gcManagerOldFinal_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerOldFinal.hpp");
static final Q _gpgc_gcManagerOldFinal_i_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerOldFinal.inline.hpp");
static final Q _gpgc_gcManagerOldReloc_cpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerOldReloc.cpp");
static final Q _gpgc_gcManagerOldReloc_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerOldReloc.hpp");
static final Q _gpgc_gcManagerOldStrong_cpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerOldStrong.cpp");
static final Q _gpgc_gcManagerOldStrong_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerOldStrong.hpp");
static final Q _gpgc_gcManagerOldStrong_i_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManagerOldStrong.inline.hpp");
static final Q _gpgc_gcManager_hpp = new Q(AZUL_GC_GPGC+"gpgc_gcManager.hpp");
static final Q _gpgc_generation_cpp = new Q(AZUL_GC_GPGC+"gpgc_generation.cpp");
static final Q _gpgc_generation_hpp = new Q(AZUL_GC_GPGC+"gpgc_generation.hpp");
static final Q _gpgc_heap_cpp = new Q(AZUL_GC_GPGC+"gpgc_heap.cpp");
static final Q _gpgc_heap_hpp = new Q(AZUL_GC_GPGC+"gpgc_heap.hpp");
static final Q _gpgc_heuristic_cpp = new Q(AZUL_GC_GPGC+"gpgc_heuristic.cpp");
static final Q _gpgc_heuristic_hpp = new Q(AZUL_GC_GPGC+"gpgc_heuristic.hpp");
static final Q _gpgc_interlock_cpp = new Q(AZUL_GC_GPGC+"gpgc_interlock.cpp");
static final Q _gpgc_interlock_hpp = new Q(AZUL_GC_GPGC+"gpgc_interlock.hpp");
static final Q _gpgc_layout_cpp = new Q(AZUL_GC_GPGC+"gpgc_layout.cpp");
static final Q _gpgc_layout_hpp = new Q(AZUL_GC_GPGC+"gpgc_layout.hpp");
static final Q _gpgc_layout_i_hpp = new Q(AZUL_GC_GPGC+"gpgc_layout.inline.hpp");
static final Q _gpgc_lvb_cpp = new Q(AZUL_GC_GPGC+"gpgc_lvb.cpp");
static final Q _gpgc_lvb_hpp = new Q(AZUL_GC_GPGC+"gpgc_lvb.hpp");
static final Q _gpgc_markAlgorithms_hpp = new Q(AZUL_GC_GPGC+"gpgc_markAlgorithms.hpp");
static final Q _gpgc_marker_cpp = new Q(AZUL_GC_GPGC+"gpgc_marker.cpp");
static final Q _gpgc_marker_hpp = new Q(AZUL_GC_GPGC+"gpgc_marker.hpp");
static final Q _gpgc_markingQueue_cpp = new Q(AZUL_GC_GPGC+"gpgc_markingQueue.cpp");
static final Q _gpgc_markingQueue_hpp = new Q(AZUL_GC_GPGC+"gpgc_markingQueue.hpp");
static final Q _gpgc_markIterator_cpp = new Q(AZUL_GC_GPGC+"gpgc_markIterator.cpp");
static final Q _gpgc_markIterator_hpp = new Q(AZUL_GC_GPGC+"gpgc_markIterator.hpp");
static final Q _gpgc_marks_cpp = new Q(AZUL_GC_GPGC+"gpgc_marks.cpp");
static final Q _gpgc_marks_hpp = new Q(AZUL_GC_GPGC+"gpgc_marks.hpp");
static final Q _gpgc_metadata_cpp = new Q(AZUL_GC_GPGC+"gpgc_metadata.cpp");
static final Q _gpgc_metadata_hpp = new Q(AZUL_GC_GPGC+"gpgc_metadata.hpp");
static final Q _gpgc_multiPageSpace_cpp = new Q(AZUL_GC_GPGC+"gpgc_multiPageSpace.cpp");
static final Q _gpgc_multiPageSpace_hpp = new Q(AZUL_GC_GPGC+"gpgc_multiPageSpace.hpp");
static final Q _gpgc_newCollector_hpp = new Q(AZUL_GC_GPGC+"gpgc_newCollector.hpp");
static final Q _gpgc_newCollector_inline_hpp = new Q(AZUL_GC_GPGC+"gpgc_newCollector.inline.hpp");
static final Q _gpgc_newCollector_main_cpp = new Q(AZUL_GC_GPGC+"gpgc_newCollector.main.cpp");
static final Q _gpgc_newCollector_mark_cpp = new Q(AZUL_GC_GPGC+"gpgc_newCollector.mark.cpp");
static final Q _gpgc_newCollector_misc_cpp = new Q(AZUL_GC_GPGC+"gpgc_newCollector.misc.cpp");
static final Q _gpgc_newCollector_reloc_cpp = new Q(AZUL_GC_GPGC+"gpgc_newCollector.reloc.cpp");
static final Q _gpgc_newCollector_traps_cpp = new Q(AZUL_GC_GPGC+"gpgc_newCollector.traps.cpp");
static final Q _gpgc_newCollector_verify_cpp = new Q(AZUL_GC_GPGC+"gpgc_newCollector.verify.cpp");
static final Q _gpgc_nmt_cpp = new Q(AZUL_GC_GPGC+"gpgc_nmt.cpp");
static final Q _gpgc_nmt_hpp = new Q(AZUL_GC_GPGC+"gpgc_nmt.hpp");
static final Q _gpgc_oldCollector_hpp = new Q(AZUL_GC_GPGC+"gpgc_oldCollector.hpp");
static final Q _gpgc_oldCollector_inline_hpp = new Q(AZUL_GC_GPGC+"gpgc_oldCollector.inline.hpp");
static final Q _gpgc_oldCollector_main_cpp = new Q(AZUL_GC_GPGC+"gpgc_oldCollector.main.cpp");
static final Q _gpgc_oldCollector_mark_cpp = new Q(AZUL_GC_GPGC+"gpgc_oldCollector.mark.cpp");
static final Q _gpgc_oldCollector_misc_cpp = new Q(AZUL_GC_GPGC+"gpgc_oldCollector.misc.cpp");
static final Q _gpgc_oldCollector_reloc_cpp = new Q(AZUL_GC_GPGC+"gpgc_oldCollector.reloc.cpp");
static final Q _gpgc_oldCollector_traps_cpp = new Q(AZUL_GC_GPGC+"gpgc_oldCollector.traps.cpp");
static final Q _gpgc_oldCollector_verify_cpp = new Q(AZUL_GC_GPGC+"gpgc_oldCollector.verify.cpp");
static final Q _gpgc_onePageSpace_cpp = new Q(AZUL_GC_GPGC+"gpgc_onePageSpace.cpp");
static final Q _gpgc_onePageSpace_hpp = new Q(AZUL_GC_GPGC+"gpgc_onePageSpace.hpp");
static final Q _gpgc_operation_cpp = new Q(AZUL_GC_GPGC+"gpgc_operation.cpp");
static final Q _gpgc_operation_hpp = new Q(AZUL_GC_GPGC+"gpgc_operation.hpp");
static final Q _gpgc_pageAudit_cpp = new Q(AZUL_GC_GPGC+"gpgc_pageAudit.cpp");
static final Q _gpgc_pageAudit_hpp = new Q(AZUL_GC_GPGC+"gpgc_pageAudit.hpp");
static final Q _gpgc_pageBudget_cpp = new Q(AZUL_GC_GPGC+"gpgc_pageBudget.cpp");
static final Q _gpgc_pageBudget_hpp = new Q(AZUL_GC_GPGC+"gpgc_pageBudget.hpp");
static final Q _gpgc_pageInfo_cpp = new Q(AZUL_GC_GPGC+"gpgc_pageInfo.cpp");
static final Q _gpgc_pageInfo_hpp = new Q(AZUL_GC_GPGC+"gpgc_pageInfo.hpp");
static final Q _gpgc_pageInfo_inline_hpp = new Q(AZUL_GC_GPGC+"gpgc_pageInfo.inline.hpp");
static final Q _gpgc_population_cpp = new Q(AZUL_GC_GPGC+"gpgc_population.cpp");
static final Q _gpgc_population_hpp = new Q(AZUL_GC_GPGC+"gpgc_population.hpp");
static final Q _gpgc_population_inline_hpp = new Q(AZUL_GC_GPGC+"gpgc_population.inline.hpp");
static final Q _gpgc_readTrapArray_cpp = new Q(AZUL_GC_GPGC+"gpgc_readTrapArray.cpp");
static final Q _gpgc_readTrapArray_hpp = new Q(AZUL_GC_GPGC+"gpgc_readTrapArray.hpp");
static final Q _gpgc_readTrapArray_inline_hpp = new Q(AZUL_GC_GPGC+"gpgc_readTrapArray.inline.hpp");
static final Q _gpgc_javaLangRefHandler_cpp = new Q(AZUL_GC_GPGC+"gpgc_javaLangRefHandler.cpp");
static final Q _gpgc_javaLangRefHandler_hpp = new Q(AZUL_GC_GPGC+"gpgc_javaLangRefHandler.hpp");
static final Q _gpgc_relocation_cpp = new Q(AZUL_GC_GPGC+"gpgc_relocation.cpp");
static final Q _gpgc_relocation_hpp = new Q(AZUL_GC_GPGC+"gpgc_relocation.hpp");
static final Q _gpgc_relocation_inline_hpp = new Q(AZUL_GC_GPGC+"gpgc_relocation.inline.hpp");
static final Q _gpgc_relocationSpike_hpp = new Q(AZUL_GC_GPGC+"gpgc_relocationSpike.hpp");
static final Q _gpgc_rendezvous_cpp = new Q(AZUL_GC_GPGC+"gpgc_rendezvous.cpp");
static final Q _gpgc_rendezvous_hpp = new Q(AZUL_GC_GPGC+"gpgc_rendezvous.hpp");
static final Q _gpgc_safepoint_cpp = new Q(AZUL_GC_GPGC+"gpgc_safepoint.cpp");
static final Q _gpgc_safepoint_hpp = new Q(AZUL_GC_GPGC+"gpgc_safepoint.hpp");
static final Q _gpgc_slt_cpp = new Q(AZUL_GC_GPGC+"gpgc_slt.cpp");
static final Q _gpgc_slt_hpp = new Q(AZUL_GC_GPGC+"gpgc_slt.hpp");
static final Q _gpgc_space_cpp = new Q(AZUL_GC_GPGC+"gpgc_space.cpp");
static final Q _gpgc_space_hpp = new Q(AZUL_GC_GPGC+"gpgc_space.hpp");
static final Q _gpgc_sparseMappedSpace_cpp = new Q(AZUL_GC_GPGC+"gpgc_sparseMappedSpace.cpp");
static final Q _gpgc_sparseMappedSpace_hpp = new Q(AZUL_GC_GPGC+"gpgc_sparseMappedSpace.hpp");
static final Q _gpgc_stats_cpp = new Q(AZUL_GC_GPGC+"gpgc_stats.cpp");
static final Q _gpgc_stats_hpp = new Q(AZUL_GC_GPGC+"gpgc_stats.hpp");
static final Q _gpgc_tasks_cpp = new Q(AZUL_GC_GPGC+"gpgc_tasks.cpp");
static final Q _gpgc_tasks_hpp = new Q(AZUL_GC_GPGC+"gpgc_tasks.hpp");
static final Q _gpgc_threadCleaner_cpp = new Q(AZUL_GC_GPGC+"gpgc_threadCleaner.cpp");
static final Q _gpgc_threadCleaner_hpp = new Q(AZUL_GC_GPGC+"gpgc_threadCleaner.hpp");
static final Q _gpgc_thread_cpp = new Q(AZUL_GC_GPGC+"gpgc_thread.cpp");
static final Q _gpgc_thread_hpp = new Q(AZUL_GC_GPGC+"gpgc_thread.hpp");
static final Q _gpgc_threadRefLists_cpp = new Q(AZUL_GC_GPGC+"gpgc_threadRefLists.cpp");
static final Q _gpgc_threadRefLists_hpp = new Q(AZUL_GC_GPGC+"gpgc_threadRefLists.hpp");
static final Q _gpgc_tlb_cpp = new Q(AZUL_GC_GPGC+"gpgc_tlb.cpp");
static final Q _gpgc_tlb_hpp = new Q(AZUL_GC_GPGC+"gpgc_tlb.hpp");
static final Q _gpgc_traps_hpp = new Q(AZUL_GC_GPGC+"gpgc_traps.hpp");
static final Q _gpgc_verifyClosure_cpp = new Q(AZUL_GC_GPGC+"gpgc_verifyClosure.cpp");
static final Q _gpgc_verifyClosure_hpp = new Q(AZUL_GC_GPGC+"gpgc_verifyClosure.hpp");
static final Q _gpgc_verify_tasks_cpp = new Q(AZUL_GC_GPGC+"gpgc_verify_tasks.cpp");
static final Q _gpgc_verify_tasks_hpp = new Q(AZUL_GC_GPGC+"gpgc_verify_tasks.hpp");
static final String AZUL_OOPS = "src/azshare/vm/oops/";
static final Q _methodCodeKlass_cpp = new Q(AZUL_OOPS+"methodCodeKlass.cpp");
static final Q _methodCodeKlass_hpp = new Q(AZUL_OOPS+"methodCodeKlass.hpp");
static final Q _methodCodeOop_cpp = new Q(AZUL_OOPS+"methodCodeOop.cpp");
static final Q _methodCodeOop_hpp = new Q(AZUL_OOPS+"methodCodeOop.hpp");
static final String AZUL_ARTA = "src/azshare/vm/arta/";
static final Q _allocatedObjects_cpp = new Q(AZUL_ARTA+"allocatedObjects.cpp");
static final Q _allocatedObjects_hpp = new Q(AZUL_ARTA+"allocatedObjects.hpp");
static final Q _liveObjects_cpp = new Q(AZUL_ARTA+"liveObjects.cpp");
static final Q _liveObjects_hpp = new Q(AZUL_ARTA+"liveObjects.hpp");
static final Q _responseStream_hpp = new Q(AZUL_ARTA+"responseStream.hpp");
static final Q _artaObjects_cpp = new Q(AZUL_ARTA+"artaObjects.cpp");
static final Q _artaObjects_hpp = new Q(AZUL_ARTA+"artaObjects.hpp");
static final Q _artaQuery_cpp = new Q(AZUL_ARTA+"artaQuery.cpp");
static final Q _artaQuery_hpp = new Q(AZUL_ARTA+"artaQuery.hpp");
static final Q _artaThreadState_cpp = new Q(AZUL_ARTA+"artaThreadState.cpp");
static final Q _artaThreadState_hpp = new Q(AZUL_ARTA+"artaThreadState.hpp");
static final String AZUL_COMPILER = "src/azshare/vm/compiler/";
static final Q _codeProfile_cpp = new Q(AZUL_COMPILER+"codeProfile.cpp");
static final Q _codeProfile_hpp = new Q(AZUL_COMPILER+"codeProfile.hpp");
static final Q _compileBroker_hpp = new Q(AZUL_COMPILER+"compileBroker.hpp");
static final Q _compileBroker_cpp = new Q(AZUL_COMPILER+"compileBroker.cpp");
static final Q _freezeAndMelt_cpp = new Q(AZUL_COMPILER+"freezeAndMelt.cpp");
static final Q _freezeAndMelt_hpp = new Q(AZUL_COMPILER+"freezeAndMelt.hpp");
static final String AZUL_RUNTIME = "src/azshare/vm/runtime/";
static final Q _codeCacheOopTable_cpp = new Q(AZUL_RUNTIME+"codeCacheOopTable.cpp");
static final Q _deoptimization_cpp = new Q(AZUL_RUNTIME+"deoptimization.cpp");
static final Q _deoptimization_hpp = new Q(AZUL_RUNTIME+"deoptimization.hpp");
static final Q _flatHashSet_hpp = new Q(AZUL_RUNTIME+"flatHashSet.hpp");
static final Q _heapIterator_cpp = new Q(AZUL_RUNTIME+"heapIterator.cpp");
static final Q _heapIterator_hpp = new Q(AZUL_RUNTIME+"heapIterator.hpp");
static final Q _instructionTraceRecording_hpp = new Q(AZUL_RUNTIME+"instructionTraceRecording.hpp");
static final Q _invertedVirtualspace_cpp = new Q(AZUL_RUNTIME+"invertedVirtualspace.cpp");
static final Q _invertedVirtualspace_hpp = new Q(AZUL_RUNTIME+"invertedVirtualspace.hpp");
static final Q _klassIds_cpp = new Q(AZUL_RUNTIME+"klassIds.cpp");
static final Q _klassIds_hpp = new Q(AZUL_RUNTIME+"klassIds.hpp");
static final Q _klassTable_cpp = new Q(AZUL_RUNTIME+"klassTable.cpp");
static final Q _log_cpp = new Q(AZUL_RUNTIME+"log.cpp");
static final Q _log_hpp = new Q(AZUL_RUNTIME+"log.hpp");
static final Q _modules_hpp = new Q(AZUL_RUNTIME+"modules.hpp");
static final Q _mutexLocker_cpp = new Q(AZUL_RUNTIME+"mutexLocker.cpp");
static final Q _mutexLocker_hpp = new Q(AZUL_RUNTIME+"mutexLocker.hpp");
static final Q _mutex_cpp = new Q(AZUL_RUNTIME+"mutex.cpp");
static final Q _mutex_hpp = new Q(AZUL_RUNTIME+"mutex.hpp");
static final Q _mutex_inline_hpp = new Q(AZUL_RUNTIME+"mutex.inline.hpp");
static final Q _noinline_cpp = new Q(AZUL_RUNTIME+"noinline.cpp");
static final Q _noinline_hpp = new Q(AZUL_RUNTIME+"noinline.hpp");
static final Q _objectMonitor_hpp = new Q(AZUL_RUNTIME+"objectMonitor.hpp");
static final Q _objectMonitor_cpp = new Q(AZUL_RUNTIME+"objectMonitor.cpp");
static final Q _oopTable_cpp = new Q(AZUL_RUNTIME+"oopTable.cpp");
static final Q _oopTable_hpp = new Q(AZUL_RUNTIME+"oopTable.hpp");
static final Q _remoteJNI_cpp = new Q(AZUL_RUNTIME+"remoteJNI.cpp");
static final Q _remoteJNI_hpp = new Q(AZUL_RUNTIME+"remoteJNI.hpp");
static final Q _rlimits_cpp = new Q(AZUL_RUNTIME+"rlimits.cpp");
static final Q _rlimits_hpp = new Q(AZUL_RUNTIME+"rlimits.hpp");
static final Q _safepointTimes_hpp = new Q(AZUL_RUNTIME+"safepointTimes.hpp");
static final Q _sbaThreadInfo_cpp = new Q(AZUL_RUNTIME+"sbaThreadInfo.cpp");
static final Q _sbaThreadInfo_hpp = new Q(AZUL_RUNTIME+"sbaThreadInfo.hpp");
static final Q _sharedUserData_cpp = new Q(AZUL_RUNTIME+"sharedUserData.cpp");
static final Q _sharedUserData_hpp = new Q(AZUL_RUNTIME+"sharedUserData.hpp");
static final Q _smaHeuristic_cpp = new Q(AZUL_RUNTIME+"smaHeuristic.cpp");
static final Q _smaHeuristic_hpp = new Q(AZUL_RUNTIME+"smaHeuristic.hpp");
static final Q _stackBasedAllocation_cpp = new Q(AZUL_RUNTIME+"stackBasedAllocation.cpp");
static final Q _stackBasedAllocation_hpp = new Q(AZUL_RUNTIME+"stackBasedAllocation.hpp");
static final Q _statistics_cpp = new Q(AZUL_RUNTIME+"statistics.cpp");
static final Q _statistics_hpp = new Q(AZUL_RUNTIME+"statistics.hpp");
static final Q _synchronizer_cpp = new Q(AZUL_RUNTIME+"synchronizer.cpp");
static final Q _synchronizer_hpp = new Q(AZUL_RUNTIME+"synchronizer.hpp");
static final Q _threadCounters_hpp = new Q(AZUL_RUNTIME+"threadCounters.hpp");
static final Q _tickProfiler_cpp = new Q(AZUL_RUNTIME+"tickProfiler.cpp");
static final Q _tickProfiler_hpp = new Q(AZUL_RUNTIME+"tickProfiler.hpp");
static final Q _vframe_cpp = new Q(AZUL_RUNTIME+"vframe.cpp");
static final Q _vframe_hpp = new Q(AZUL_RUNTIME+"vframe.hpp");
static final Q _vmTags_cpp = new Q(AZUL_RUNTIME+"vmTags.cpp");
static final Q _vmTags_hpp = new Q(AZUL_RUNTIME+"vmTags.hpp");
static final Q _wlmuxer_hpp = new Q(AZUL_RUNTIME+"wlmuxer.hpp");
static final Q _xmlBuffer_cpp = new Q(AZUL_RUNTIME+"xmlBuffer.cpp");
static final Q _xmlBuffer_hpp = new Q(AZUL_RUNTIME+"xmlBuffer.hpp");
static final String C1 = "src/share/vm/c1/";
static final Q _c1_CFGPrinter_cpp = new Q(C1+"c1_CFGPrinter.cpp");
static final Q _c1_CFGPrinter_hpp = new Q(C1+"c1_CFGPrinter.hpp");
static final Q _c1_CodeStubs_hpp = new Q(C1+"c1_CodeStubs.hpp");
static final Q _c1_Compilation_cpp = new Q(C1+"c1_Compilation.cpp");
static final Q _c1_Compilation_hpp = new Q(C1+"c1_Compilation.hpp");
static final Q _c1_Compiler_cpp = new Q(C1+"c1_Compiler.cpp");
static final Q _c1_Compiler_hpp = new Q(C1+"c1_Compiler.hpp");
static final Q _c1_Canonicalizer_cpp = new Q(C1+"c1_Canonicalizer.cpp");
static final Q _c1_Canonicalizer_hpp = new Q(C1+"c1_Canonicalizer.hpp");
static final Q _c1_Defs_cpp = new Q(C1+"c1_Defs.cpp");
static final Q _c1_Defs_hpp = new Q(C1+"c1_Defs.hpp");
static final Q _c1_FrameMap_cpp = new Q(C1+"c1_FrameMap.cpp");
static final Q _c1_FrameMap_hpp = new Q(C1+"c1_FrameMap.hpp");
static final Q _c1_globals_cpp = new Q(C1+"c1_globals.cpp");
static final Q _c1_globals_hpp = new Q(C1+"c1_globals.hpp");
static final Q _c1_GraphBuilder_cpp = new Q(C1+"c1_GraphBuilder.cpp");
static final Q _c1_GraphBuilder_hpp = new Q(C1+"c1_GraphBuilder.hpp");
static final Q _c1_LinearScan_cpp = new Q(C1+"c1_LinearScan.cpp");
static final Q _c1_LinearScan_hpp = new Q(C1+"c1_LinearScan.hpp");
static final Q _c1_LIR_cpp = new Q(C1+"c1_LIR.cpp");
static final Q _c1_LIR_hpp = new Q(C1+"c1_LIR.hpp");
static final Q _c1_LIRAssembler_cpp = new Q(C1+"c1_LIRAssembler.cpp");
static final Q _c1_LIRAssembler_hpp = new Q(C1+"c1_LIRAssembler.hpp");
static final Q _c1_LIRGenerator_cpp = new Q(C1+"c1_LIRGenerator.cpp");
static final Q _c1_LIRGenerator_hpp = new Q(C1+"c1_LIRGenerator.hpp");
static final Q _c1_Optimizer_cpp = new Q(C1+"c1_Optimizer.cpp");
static final Q _c1_Optimizer_hpp = new Q(C1+"c1_Optimizer.hpp");
static final Q _c1_Runtime1_cpp = new Q(C1+"c1_Runtime1.cpp");
static final Q _c1_Runtime1_hpp = new Q(C1+"c1_Runtime1.hpp");
static final Q _c1_Instruction_cpp = new Q(C1+"c1_Instruction.cpp");
static final Q _c1_Instruction_hpp = new Q(C1+"c1_Instruction.hpp");
static final Q _c1_InstructionPrinter_cpp = new Q(C1+"c1_InstructionPrinter.cpp");
static final Q _c1_InstructionPrinter_hpp = new Q(C1+"c1_InstructionPrinter.hpp");
static final Q _c1_IR_cpp = new Q(C1+"c1_IR.cpp");
static final Q _c1_IR_hpp = new Q(C1+"c1_IR.hpp");
static final Q _c1_MacroAssembler_hpp = new Q(C1+"c1_MacroAssembler.hpp");
static final Q _c1_ThreadLocals_cpp = new Q(C1+"c1_ThreadLocals.cpp");
static final Q _c1_ThreadLocals_hpp = new Q(C1+"c1_ThreadLocals.hpp");
static final Q _c1_ValueMap_cpp = new Q(C1+"c1_ValueMap.cpp");
static final Q _c1_ValueMap_hpp = new Q(C1+"c1_ValueMap.hpp");
static final Q _c1_ValueSet_cpp = new Q(C1+"c1_ValueSet.cpp");
static final Q _c1_ValueSet_hpp = new Q(C1+"c1_ValueSet.hpp");
static final Q _c1_ValueStack_cpp = new Q(C1+"c1_ValueStack.cpp");
static final Q _c1_ValueStack_hpp = new Q(C1+"c1_ValueStack.hpp");
static final Q _c1_ValueType_cpp = new Q(C1+"c1_ValueType.cpp");
static final Q _c1_ValueType_hpp = new Q(C1+"c1_ValueType.hpp");
static final String CI = "src/share/vm/ci/";
static final Q _bcEscapeAnalyzer_cpp = new Q(CI+"bcEscapeAnalyzer.cpp");
static final Q _bcEscapeAnalyzer_hpp = new Q(CI+"bcEscapeAnalyzer.hpp");
static final Q _ciArray_cpp = new Q(CI+"ciArray.cpp");
static final Q _ciArray_hpp = new Q(CI+"ciArray.hpp");
static final Q _ciArrayKlass_cpp = new Q(CI+"ciArrayKlass.cpp");
static final Q _ciArrayKlass_hpp = new Q(CI+"ciArrayKlass.hpp");
static final Q _ciArrayKlassKlass_hpp = new Q(CI+"ciArrayKlassKlass.hpp");
static final Q _ciCallProfile_hpp = new Q(CI+"ciCallProfile.hpp");
static final Q _ciClassList_hpp = new Q(CI+"ciClassList.hpp");
static final Q _ciConstant_cpp = new Q(CI+"ciConstant.cpp");
static final Q _ciConstant_hpp = new Q(CI+"ciConstant.hpp");
static final Q _ciConstantPoolCache_cpp = new Q(CI+"ciConstantPoolCache.cpp");
static final Q _ciConstantPoolCache_hpp = new Q(CI+"ciConstantPoolCache.hpp");
static final Q _ciEnv_cpp = new Q(CI+"ciEnv.cpp");
static final Q _ciEnv_hpp = new Q(CI+"ciEnv.hpp");
static final Q _ciExceptionHandler_cpp = new Q(CI+"ciExceptionHandler.cpp");
static final Q _ciExceptionHandler_hpp = new Q(CI+"ciExceptionHandler.hpp");
static final Q _ciField_cpp = new Q(CI+"ciField.cpp");
static final Q _ciField_hpp = new Q(CI+"ciField.hpp");
static final Q _ciFlags_cpp = new Q(CI+"ciFlags.cpp");
static final Q _ciFlags_hpp = new Q(CI+"ciFlags.hpp");
static final Q _ciInstance_cpp = new Q(CI+"ciInstance.cpp");
static final Q _ciInstance_hpp = new Q(CI+"ciInstance.hpp");
static final Q _ciInstanceKlass_cpp = new Q(CI+"ciInstanceKlass.cpp");
static final Q _ciInstanceKlass_hpp = new Q(CI+"ciInstanceKlass.hpp");
static final Q _ciInstanceKlassKlass_cpp = new Q(CI+"ciInstanceKlassKlass.cpp");
static final Q _ciInstanceKlassKlass_hpp = new Q(CI+"ciInstanceKlassKlass.hpp");
static final Q _ciKlass_cpp = new Q(CI+"ciKlass.cpp");
static final Q _ciKlass_hpp = new Q(CI+"ciKlass.hpp");
static final Q _ciKlassKlass_cpp = new Q(CI+"ciKlassKlass.cpp");
static final Q _ciKlassKlass_hpp = new Q(CI+"ciKlassKlass.hpp");
static final Q _ciMethod_cpp = new Q(CI+"ciMethod.cpp");
static final Q _ciMethod_hpp = new Q(CI+"ciMethod.hpp");
static final Q _ciMethodBlocks_cpp = new Q(CI+"ciMethodBlocks.cpp");
static final Q _ciMethodBlocks_hpp = new Q(CI+"ciMethodBlocks.hpp");
static final Q _ciMethodKlass_cpp = new Q(CI+"ciMethodKlass.cpp");
static final Q _ciMethodKlass_hpp = new Q(CI+"ciMethodKlass.hpp");
static final Q _ciNullObject_cpp = new Q(CI+"ciNullObject.cpp");
static final Q _ciNullObject_hpp = new Q(CI+"ciNullObject.hpp");
static final Q _ciObjArray_cpp = new Q(CI+"ciObjArray.cpp");
static final Q _ciObjArray_hpp = new Q(CI+"ciObjArray.hpp");
static final Q _ciObjArrayKlass_cpp = new Q(CI+"ciObjArrayKlass.cpp");
static final Q _ciObjArrayKlass_hpp = new Q(CI+"ciObjArrayKlass.hpp");
static final Q _ciObjArrayKlassKlass_cpp = new Q(CI+"ciObjArrayKlassKlass.cpp");
static final Q _ciObjArrayKlassKlass_hpp = new Q(CI+"ciObjArrayKlassKlass.hpp");
static final Q _ciObject_cpp = new Q(CI+"ciObject.cpp");
static final Q _ciObject_hpp = new Q(CI+"ciObject.hpp");
static final Q _ciObjectFactory_cpp = new Q(CI+"ciObjectFactory.cpp");
static final Q _ciObjectFactory_hpp = new Q(CI+"ciObjectFactory.hpp");
static final Q _ciSignature_cpp = new Q(CI+"ciSignature.cpp");
static final Q _ciSignature_hpp = new Q(CI+"ciSignature.hpp");
static final Q _ciStreams_cpp = new Q(CI+"ciStreams.cpp");
static final Q _ciStreams_hpp = new Q(CI+"ciStreams.hpp");
static final Q _ciSymbol_cpp = new Q(CI+"ciSymbol.cpp");
static final Q _ciSymbol_hpp = new Q(CI+"ciSymbol.hpp");
static final Q _ciSymbolKlass_cpp = new Q(CI+"ciSymbolKlass.cpp");
static final Q _ciSymbolKlass_hpp = new Q(CI+"ciSymbolKlass.hpp");
static final Q _ciType_cpp = new Q(CI+"ciType.cpp");
static final Q _ciType_hpp = new Q(CI+"ciType.hpp");
static final Q _ciTypeArrayKlass_cpp = new Q(CI+"ciTypeArrayKlass.cpp");
static final Q _ciTypeArrayKlass_hpp = new Q(CI+"ciTypeArrayKlass.hpp");
static final Q _ciTypeArrayKlassKlass_cpp = new Q(CI+"ciTypeArrayKlassKlass.cpp");
static final Q _ciTypeArrayKlassKlass_hpp = new Q(CI+"ciTypeArrayKlassKlass.hpp");
static final Q _ciTypeArray_cpp = new Q(CI+"ciTypeArray.cpp");
static final Q _ciTypeArray_hpp = new Q(CI+"ciTypeArray.hpp");
static final Q _ciTypeFlow_cpp = new Q(CI+"ciTypeFlow.cpp");
static final Q _ciTypeFlow_hpp = new Q(CI+"ciTypeFlow.hpp");
static final Q _ciUtilities_cpp = new Q(CI+"ciUtilities.cpp");
static final Q _ciUtilities_hpp = new Q(CI+"ciUtilities.hpp");
static final String CLASSFILE = "src/share/vm/classfile/";
static final Q _classFileError_cpp = new Q(CLASSFILE+"classFileError.cpp");
static final Q _classFileParser_cpp = new Q(CLASSFILE+"classFileParser.cpp");
static final Q _classFileParser_hpp = new Q(CLASSFILE+"classFileParser.hpp");
static final Q _classFileStream_cpp = new Q(CLASSFILE+"classFileStream.cpp");
static final Q _classFileStream_hpp = new Q(CLASSFILE+"classFileStream.hpp");
static final Q _classLoader_cpp = new Q(CLASSFILE+"classLoader.cpp");
static final Q _classLoader_hpp = new Q(CLASSFILE+"classLoader.hpp");
static final Q _dictionary_cpp = new Q(CLASSFILE+"dictionary.cpp");
static final Q _dictionary_hpp = new Q(CLASSFILE+"dictionary.hpp");
static final Q _javaAssertions_cpp = new Q(CLASSFILE+"javaAssertions.cpp");
static final Q _javaAssertions_hpp = new Q(CLASSFILE+"javaAssertions.hpp");
static final Q _javaClasses_cpp = new Q(CLASSFILE+"javaClasses.cpp");
static final Q _javaClasses_hpp = new Q(CLASSFILE+"javaClasses.hpp");
static final Q _loaderConstraints_cpp = new Q(CLASSFILE+"loaderConstraints.cpp");
static final Q _loaderConstraints_hpp = new Q(CLASSFILE+"loaderConstraints.hpp");
static final Q _placeholders_cpp = new Q(CLASSFILE+"placeholders.cpp");
static final Q _placeholders_hpp = new Q(CLASSFILE+"placeholders.hpp");
static final Q _resolutionErrors_cpp = new Q(CLASSFILE+"resolutionErrors.cpp");
static final Q _resolutionErrors_hpp = new Q(CLASSFILE+"resolutionErrors.hpp");
static final Q _symbolTable_cpp = new Q(CLASSFILE+"symbolTable.cpp");
static final Q _symbolTable_hpp = new Q(CLASSFILE+"symbolTable.hpp");
static final Q _stackMapFrame_cpp = new Q(CLASSFILE+"stackMapFrame.cpp");
static final Q _stackMapFrame_hpp = new Q(CLASSFILE+"stackMapFrame.hpp");
static final Q _stackMapTable_cpp = new Q(CLASSFILE+"stackMapTable.cpp");
static final Q _stackMapTable_hpp = new Q(CLASSFILE+"stackMapTable.hpp");
static final Q _systemDictionary_cpp = new Q(CLASSFILE+"systemDictionary.cpp");
static final Q _systemDictionary_hpp = new Q(CLASSFILE+"systemDictionary.hpp");
static final Q _verificationType_cpp = new Q(CLASSFILE+"verificationType.cpp");
static final Q _verificationType_hpp = new Q(CLASSFILE+"verificationType.hpp");
static final Q _verifier_cpp = new Q(CLASSFILE+"verifier.cpp");
static final Q _verifier_hpp = new Q(CLASSFILE+"verifier.hpp");
static final Q _vmSymbols_cpp = new Q(CLASSFILE+"vmSymbols.cpp");
static final Q _vmSymbols_hpp = new Q(CLASSFILE+"vmSymbols.hpp");
static final String CODE = "src/share/vm/code/";
static final Q _compressedStream_cpp = new Q(CODE+"compressedStream.cpp");
static final Q _compressedStream_hpp = new Q(CODE+"compressedStream.hpp");
static final Q _dependencies_cpp = new Q(CODE+"dependencies.cpp");
static final Q _dependencies_hpp = new Q(CODE+"dependencies.hpp");
static final String COMPILER = "src/share/vm/compiler/";
static final Q _abstractCompiler_hpp = new Q(COMPILER+"abstractCompiler.hpp");
static final Q _abstractCompiler_cpp = new Q(COMPILER+"abstractCompiler.cpp");
static final Q _compilerOracle_cpp = new Q(COMPILER+"compilerOracle.cpp");
static final Q _compilerOracle_hpp = new Q(COMPILER+"compilerOracle.hpp");
static final Q _methodLiveness_hpp = new Q(COMPILER+"methodLiveness.hpp");
static final Q _methodLiveness_cpp = new Q(COMPILER+"methodLiveness.cpp");
static final String GC_INTERFACE = "src/share/vm/gc_interface/";
static final Q _collectedHeap_cpp = new Q(GC_INTERFACE+"collectedHeap.cpp");
static final Q _collectedHeap_hpp = new Q(GC_INTERFACE+"collectedHeap.hpp");
static final Q _collectedHeap_inline_hpp = new Q(GC_INTERFACE+"collectedHeap.inline.hpp");
static final Q _gcCause_hpp = new Q(GC_INTERFACE+"gcCause.hpp");
static final String GC_SHARED = "src/share/vm/gc_implementation/shared/";
static final Q _adaptiveSizePolicy_cpp = new Q(GC_SHARED+"adaptiveSizePolicy.cpp");
static final Q _adaptiveSizePolicy_hpp = new Q(GC_SHARED+"adaptiveSizePolicy.hpp");
static final Q _ageTable_hpp = new Q(GC_SHARED+"ageTable.hpp");
static final Q _cSpaceCounters_hpp = new Q(GC_SHARED+"cSpaceCounters.hpp");
static final Q _collectorCounters_cpp = new Q(GC_SHARED+"collectorCounters.cpp");
static final Q _collectorCounters_hpp = new Q(GC_SHARED+"collectorCounters.hpp");
static final Q _gcAdaptivePolicyCounters_cpp = new Q(GC_SHARED+"gcAdaptivePolicyCounters.cpp");
static final Q _gcAdaptivePolicyCounters_hpp = new Q(GC_SHARED+"gcAdaptivePolicyCounters.hpp");
static final Q _gcPolicyCounters_cpp = new Q(GC_SHARED+"gcPolicyCounters.cpp");
static final Q _gcPolicyCounters_hpp = new Q(GC_SHARED+"gcPolicyCounters.hpp");
static final Q _gcStats_cpp = new Q(GC_SHARED+"gcStats.cpp");
static final Q _gcStats_hpp = new Q(GC_SHARED+"gcStats.hpp");
static final Q _gcUtil_cpp = new Q(GC_SHARED+"gcUtil.cpp");
static final Q _gcUtil_hpp = new Q(GC_SHARED+"gcUtil.hpp");
static final Q _generationCounters_hpp = new Q(GC_SHARED+"generationCounters.hpp");
static final Q _immutableSpace_hpp = new Q(GC_SHARED+"immutableSpace.hpp");
static final Q _isGCActiveMark_hpp = new Q(GC_SHARED+"isGCActiveMark.hpp");
static final Q _markSweep_cpp = new Q(GC_SHARED+"markSweep.cpp");
static final Q _markSweep_hpp = new Q(GC_SHARED+"markSweep.hpp");
static final Q _markSweep_inline_hpp = new Q(GC_SHARED+"markSweep.inline.hpp");
static final Q _mutableSpace_cpp = new Q(GC_SHARED+"mutableSpace.cpp");
static final Q _mutableSpace_hpp = new Q(GC_SHARED+"mutableSpace.hpp");
static final Q _mutableNUMASpace_hpp = new Q(GC_SHARED+"mutableNUMASpace.hpp");
static final Q _spaceCounters_cpp = new Q(GC_SHARED+"spaceCounters.cpp");
static final Q _spaceCounters_hpp = new Q(GC_SHARED+"spaceCounters.hpp");
static final Q _surrogateLockerThread_cpp = new Q(GC_SHARED+"surrogateLockerThread.cpp");
static final Q _surrogateLockerThread_hpp = new Q(GC_SHARED+"surrogateLockerThread.hpp");
static final Q _vmGCOperations_cpp = new Q(GC_SHARED+"vmGCOperations.cpp");
static final Q _vmGCOperations_hpp = new Q(GC_SHARED+"vmGCOperations.hpp");
static final String GC_PARALLELSCAVENGE = "src/share/vm/gc_implementation/parallelScavenge/";
static final Q _adjoiningGenerations_cpp = new Q(GC_PARALLELSCAVENGE+"adjoiningGenerations.cpp");
static final Q _adjoiningGenerations_hpp = new Q(GC_PARALLELSCAVENGE+"adjoiningGenerations.hpp");
static final Q _adjoiningVirtualSpaces_cpp = new Q(GC_PARALLELSCAVENGE+"adjoiningVirtualSpaces.cpp");
static final Q _adjoiningVirtualSpaces_hpp = new Q(GC_PARALLELSCAVENGE+"adjoiningVirtualSpaces.hpp");
static final Q _asPSOldGen_hpp = new Q(GC_PARALLELSCAVENGE+"asPSOldGen.hpp");
static final Q _asPSYoungGen_hpp = new Q(GC_PARALLELSCAVENGE+"asPSYoungGen.hpp");
static final Q _cardTableExtension_cpp = new Q(GC_PARALLELSCAVENGE+"cardTableExtension.cpp");
static final Q _cardTableExtension_hpp = new Q(GC_PARALLELSCAVENGE+"cardTableExtension.hpp");
static final Q _gcTaskManager_cpp = new Q(GC_PARALLELSCAVENGE+"gcTaskManager.cpp");
static final Q _gcTaskManager_hpp = new Q(GC_PARALLELSCAVENGE+"gcTaskManager.hpp");
static final Q _gcTaskThread_cpp = new Q(GC_PARALLELSCAVENGE+"gcTaskThread.cpp");
static final Q _gcTaskThread_hpp = new Q(GC_PARALLELSCAVENGE+"gcTaskThread.hpp");
static final Q _generationSizer_hpp = new Q(GC_PARALLELSCAVENGE+"generationSizer.hpp");
static final Q _objectStartArray_cpp = new Q(GC_PARALLELSCAVENGE+"objectStartArray.cpp");
static final Q _objectStartArray_hpp = new Q(GC_PARALLELSCAVENGE+"objectStartArray.hpp");
static final Q _parMarkBitMap_hpp = new Q(GC_PARALLELSCAVENGE+"parMarkBitMap.hpp");
static final Q _parallelScavengeHeap_cpp = new Q(GC_PARALLELSCAVENGE+"parallelScavengeHeap.cpp");
static final Q _parallelScavengeHeap_hpp = new Q(GC_PARALLELSCAVENGE+"parallelScavengeHeap.hpp");
static final Q _parallelScavengeHeap_inline_hpp= new Q(GC_PARALLELSCAVENGE+"parallelScavengeHeap.inline.hpp");
static final Q _pcTasks_hpp = new Q(GC_PARALLELSCAVENGE+"pcTasks.hpp");
static final Q _prefetchQueue_hpp = new Q(GC_PARALLELSCAVENGE+"prefetchQueue.hpp");
static final Q _psAdaptiveSizePolicy_cpp = new Q(GC_PARALLELSCAVENGE+"psAdaptiveSizePolicy.cpp");
static final Q _psAdaptiveSizePolicy_hpp = new Q(GC_PARALLELSCAVENGE+"psAdaptiveSizePolicy.hpp");
static final Q _psCompactionManager_hpp = new Q(GC_PARALLELSCAVENGE+"psCompactionManager.hpp");
static final Q _psGCAdaptivePolicyCounters_cpp = new Q(GC_PARALLELSCAVENGE+"psGCAdaptivePolicyCounters.cpp");
static final Q _psGCAdaptivePolicyCounters_hpp = new Q(GC_PARALLELSCAVENGE+"psGCAdaptivePolicyCounters.hpp");
static final Q _psGenerationCounters_cpp = new Q(GC_PARALLELSCAVENGE+"psGenerationCounters.cpp");
static final Q _psGenerationCounters_hpp = new Q(GC_PARALLELSCAVENGE+"psGenerationCounters.hpp");
static final Q _psMarkSweepDecorator_cpp = new Q(GC_PARALLELSCAVENGE+"psMarkSweepDecorator.cpp");
static final Q _psMarkSweepDecorator_hpp = new Q(GC_PARALLELSCAVENGE+"psMarkSweepDecorator.hpp");
static final Q _psMarkSweep_cpp = new Q(GC_PARALLELSCAVENGE+"psMarkSweep.cpp");
static final Q _psMarkSweep_hpp = new Q(GC_PARALLELSCAVENGE+"psMarkSweep.hpp");
static final Q _psOldGen_cpp = new Q(GC_PARALLELSCAVENGE+"psOldGen.cpp");
static final Q _psOldGen_hpp = new Q(GC_PARALLELSCAVENGE+"psOldGen.hpp");
static final Q _psParallelCompact_cpp = new Q(GC_PARALLELSCAVENGE+"psParallelCompact.cpp");
static final Q _psParallelCompact_hpp = new Q(GC_PARALLELSCAVENGE+"psParallelCompact.hpp");
static final Q _psPermGen_cpp = new Q(GC_PARALLELSCAVENGE+"psPermGen.cpp");
static final Q _psPermGen_hpp = new Q(GC_PARALLELSCAVENGE+"psPermGen.hpp");
static final Q _psPromotionLAB_cpp = new Q(GC_PARALLELSCAVENGE+"psPromotionLAB.cpp");
static final Q _psPromotionLAB_hpp = new Q(GC_PARALLELSCAVENGE+"psPromotionLAB.hpp");
static final Q _psPromotionManager_cpp = new Q(GC_PARALLELSCAVENGE+"psPromotionManager.cpp");
static final Q _psPromotionManager_hpp = new Q(GC_PARALLELSCAVENGE+"psPromotionManager.hpp");
static final Q _psPromotionManager_inline_hpp = new Q(GC_PARALLELSCAVENGE+"psPromotionManager.inline.hpp");
static final Q _psScavenge_cpp = new Q(GC_PARALLELSCAVENGE+"psScavenge.cpp");
static final Q _psScavenge_hpp = new Q(GC_PARALLELSCAVENGE+"psScavenge.hpp");
static final Q _psScavenge_inline_hpp = new Q(GC_PARALLELSCAVENGE+"psScavenge.inline.hpp");
static final Q _psTasks_cpp = new Q(GC_PARALLELSCAVENGE+"psTasks.cpp");
static final Q _psTasks_hpp = new Q(GC_PARALLELSCAVENGE+"psTasks.hpp");
static final Q _psVirtualspace_cpp = new Q(GC_PARALLELSCAVENGE+"psVirtualspace.cpp");
static final Q _psVirtualspace_hpp = new Q(GC_PARALLELSCAVENGE+"psVirtualspace.hpp");
static final Q _psYoungGen_cpp = new Q(GC_PARALLELSCAVENGE+"psYoungGen.cpp");
static final Q _psYoungGen_hpp = new Q(GC_PARALLELSCAVENGE+"psYoungGen.hpp");
static final Q _vmPSOperations_cpp = new Q(GC_PARALLELSCAVENGE+"vmPSOperations.cpp");
static final Q _vmPSOperations_hpp = new Q(GC_PARALLELSCAVENGE+"vmPSOperations.hpp");
static final String INTERPRETER = "src/share/vm/interpreter/";
static final Q _bytecodeHistogram_cpp = new Q(INTERPRETER+"bytecodeHistogram.cpp");
static final Q _bytecodeHistogram_hpp = new Q(INTERPRETER+"bytecodeHistogram.hpp");
static final Q _bytecodeStream_cpp = new Q(INTERPRETER+"bytecodeStream.cpp");
static final Q _bytecodeStream_hpp = new Q(INTERPRETER+"bytecodeStream.hpp");
static final Q _bytecodeTracer_cpp = new Q(INTERPRETER+"bytecodeTracer.cpp");
static final Q _bytecodeTracer_hpp = new Q(INTERPRETER+"bytecodeTracer.hpp");
static final Q _bytecode_cpp = new Q(INTERPRETER+"bytecode.cpp");
static final Q _bytecode_hpp = new Q(INTERPRETER+"bytecode.hpp");
static final Q _bytecodes_cpp = new Q(INTERPRETER+"bytecodes.cpp");
static final Q _bytecodes_hpp = new Q(INTERPRETER+"bytecodes.hpp");
static final Q _interpreter_cpp = new Q(INTERPRETER+"interpreter.cpp");
static final Q _interpreter_hpp = new Q(INTERPRETER+"interpreter.hpp");
static final Q _interpreterRuntime_cpp = new Q(INTERPRETER+"interpreterRuntime.cpp");
static final Q _interpreterRuntime_hpp = new Q(INTERPRETER+"interpreterRuntime.hpp");
static final Q _invocationCounter_cpp = new Q(INTERPRETER+"invocationCounter.cpp");
static final Q _invocationCounter_hpp = new Q(INTERPRETER+"invocationCounter.hpp");
static final Q _linkResolver_cpp = new Q(INTERPRETER+"linkResolver.cpp");
static final Q _linkResolver_hpp = new Q(INTERPRETER+"linkResolver.hpp");
static final Q _rewriter_cpp = new Q(INTERPRETER+"rewriter.cpp");
static final Q _rewriter_hpp = new Q(INTERPRETER+"rewriter.hpp");
static final Q _templateTable_cpp = new Q(INTERPRETER+"templateTable.cpp");
static final Q _templateTable_hpp = new Q(INTERPRETER+"templateTable.hpp");
static final String LIBADT = "src/share/vm/libadt/";
static final Q _dict_cpp = new Q(LIBADT+"dict.cpp");
static final Q _dict_hpp = new Q(LIBADT+"dict.hpp");
static final Q _port_cpp = new Q(LIBADT+"port.cpp");
static final Q _port_hpp = new Q(LIBADT+"port.hpp");
static final Q _set_cpp = new Q(LIBADT+"set.cpp");
static final Q _set_hpp = new Q(LIBADT+"set.hpp");
static final Q _vectset_cpp = new Q(LIBADT+"vectset.cpp");
static final Q _vectset_hpp = new Q(LIBADT+"vectset.hpp");
static final String MEMORY = "src/share/vm/memory/";
static final Q _allocation_cpp = new Q(MEMORY+"allocation.cpp");
static final Q _allocation_hpp = new Q(MEMORY+"allocation.hpp");
static final Q _allocation_inline_hpp = new Q(MEMORY+"allocation.inline.hpp");
static final Q _barrierSet_hpp = new Q(MEMORY+"barrierSet.hpp");
static final Q _barrierSet_inline_hpp = new Q(MEMORY+"barrierSet.inline.hpp");
static final Q _blockOffsetTable_hpp = new Q(MEMORY+"blockOffsetTable.hpp");
static final Q _cardTableModRefBS_cpp = new Q(MEMORY+"cardTableModRefBS.cpp");
static final Q _cardTableModRefBS_hpp = new Q(MEMORY+"cardTableModRefBS.hpp");
static final Q _cardTableRS_hpp = new Q(MEMORY+"cardTableRS.hpp");
static final Q _collectorPolicy_cpp = new Q(MEMORY+"collectorPolicy.cpp");
static final Q _collectorPolicy_hpp = new Q(MEMORY+"collectorPolicy.hpp");
static final Q _compactingPermGenGen_cpp = new Q(MEMORY+"compactingPermGenGen.cpp");
static final Q _compactingPermGenGen_hpp = new Q(MEMORY+"compactingPermGenGen.hpp");
static final Q _defNewGeneration_hpp = new Q(MEMORY+"defNewGeneration.hpp");
static final Q _filemap_hpp = new Q(MEMORY+"filemap.hpp");
static final Q _gcLocker_cpp = new Q(MEMORY+"gcLocker.cpp");
static final Q _gcLocker_hpp = new Q(MEMORY+"gcLocker.hpp");
static final Q _gcLocker_inline_hpp = new Q(MEMORY+"gcLocker.inline.hpp");
static final Q _genCollectedHeap_hpp = new Q(MEMORY+"genCollectedHeap.hpp");
static final Q _genOopClosures_cpp = new Q(MEMORY+"genOopClosures.cpp");
static final Q _genOopClosures_hpp = new Q(MEMORY+"genOopClosures.hpp");
static final Q _genOopClosures_inline_hpp = new Q(MEMORY+"genOopClosures.inline.hpp");
static final Q _genRemSet_cpp = new Q(MEMORY+"genRemSet.cpp");
static final Q _genRemSet_hpp = new Q(MEMORY+"genRemSet.hpp");
static final Q _generationSpec_hpp = new Q(MEMORY+"generationSpec.hpp");
static final Q _generation_hpp = new Q(MEMORY+"generation.hpp");
static final Q _heapInspection_hpp = new Q(MEMORY+"heapInspection.hpp");
static final Q _iterator_hpp = new Q(MEMORY+"iterator.hpp");
static final Q _memRegion_cpp = new Q(MEMORY+"memRegion.cpp");
static final Q _memRegion_hpp = new Q(MEMORY+"memRegion.hpp");
static final Q _modRefBarrierSet_hpp = new Q(MEMORY+"modRefBarrierSet.hpp");
static final Q _oopFactory_cpp = new Q(MEMORY+"oopFactory.cpp");
static final Q _oopFactory_hpp = new Q(MEMORY+"oopFactory.hpp");
static final Q _permGen_hpp = new Q(MEMORY+"permGen.hpp");
static final Q _referencePolicy_cpp = new Q(MEMORY+"referencePolicy.cpp");
static final Q _referencePolicy_hpp = new Q(MEMORY+"referencePolicy.hpp");
static final Q _referenceProcessor_cpp = new Q(MEMORY+"referenceProcessor.cpp");
static final Q _referenceProcessor_hpp = new Q(MEMORY+"referenceProcessor.hpp");
static final Q _resourceArea_cpp = new Q(MEMORY+"resourceArea.cpp");
static final Q _resource_hpp = new Q(MEMORY+"resourceArea.hpp");
static final Q _sharedHeap_hpp = new Q(MEMORY+"sharedHeap.hpp");
static final Q _space_cpp = new Q(MEMORY+"space.cpp");
static final Q _space_hpp = new Q(MEMORY+"space.hpp");
static final Q _space_inline_hpp = new Q(MEMORY+"space.inline.hpp");
static final Q _spec_oop_clos_hpp = new Q(MEMORY+"specialized_oop_closures.hpp");
static final Q _threadLocalAlloc_cpp = new Q(MEMORY+"threadLocalAllocBuffer.cpp");
static final Q _threadLocalAlloc_hpp = new Q(MEMORY+"threadLocalAllocBuffer.hpp");
static final Q _threadLocalAlloc_inline_hpp = new Q(MEMORY+"threadLocalAllocBuffer.inline.hpp");
static final Q _universe_cpp = new Q(MEMORY+"universe.cpp");
static final Q _universe_hpp = new Q(MEMORY+"universe.hpp");
static final Q _universe_inline_hpp = new Q(MEMORY+"universe.inline.hpp");
static final Q _watermark_hpp = new Q(MEMORY+"watermark.hpp");
static final String OOPS = "src/share/vm/oops/";
static final Q _arrayKlassKlass_cpp = new Q(OOPS+"arrayKlassKlass.cpp");
static final Q _arrayKlassKlass_hpp = new Q(OOPS+"arrayKlassKlass.hpp");
static final Q _arrayKlass_cpp = new Q(OOPS+"arrayKlass.cpp");
static final Q _arrayKlass_hpp = new Q(OOPS+"arrayKlass.hpp");
static final Q _arrayOop_hpp = new Q(OOPS+"arrayOop.hpp");
static final Q _constMethodKlass_cpp = new Q(OOPS+"constMethodKlass.cpp");
static final Q _constMethodKlass_hpp = new Q(OOPS+"constMethodKlass.hpp");
static final Q _constMethodOop_cpp = new Q(OOPS+"constMethodOop.cpp");
static final Q _constMethodOop_hpp = new Q(OOPS+"constMethodOop.hpp");
static final Q _constantPoolKlass_cpp = new Q(OOPS+"constantPoolKlass.cpp");
static final Q _constantPoolKlass_hpp = new Q(OOPS+"constantPoolKlass.hpp");
static final Q _constantPoolOop_cpp = new Q(OOPS+"constantPoolOop.cpp");
static final Q _constantPoolOop_hpp = new Q(OOPS+"constantPoolOop.hpp");
static final Q _cpCacheKlass_cpp = new Q(OOPS+"cpCacheKlass.cpp");
static final Q _cpCacheKlass_hpp = new Q(OOPS+"cpCacheKlass.hpp");
static final Q _cpCacheOop_cpp = new Q(OOPS+"cpCacheOop.cpp");
static final Q _cpCacheOop_hpp = new Q(OOPS+"cpCacheOop.hpp");
static final Q _generateOopMap_cpp = new Q(OOPS+"generateOopMap.cpp");
static final Q _generateOopMap_hpp = new Q(OOPS+"generateOopMap.hpp");
static final Q _inst_klass_cpp = new Q(OOPS+"instanceKlass.cpp");
static final Q _inst_klass_hpp = new Q(OOPS+"instanceKlass.hpp");
static final Q _inst_oop_hpp = new Q(OOPS+"instanceOop.hpp");
static final Q _instanceKlassKlass_cpp = new Q(OOPS+"instanceKlassKlass.cpp");
static final Q _instanceKlassKlass_hpp = new Q(OOPS+"instanceKlassKlass.hpp");
static final Q _instanceRefKlass_cpp = new Q(OOPS+"instanceRefKlass.cpp");
static final Q _instanceRefKlass_hpp = new Q(OOPS+"instanceRefKlass.hpp");
static final Q _klassKlass_cpp = new Q(OOPS+"klassKlass.cpp");
static final Q _klassKlass_hpp = new Q(OOPS+"klassKlass.hpp");
static final Q _klassOop_hpp = new Q(OOPS+"klassOop.hpp");
static final Q _klassVtable_cpp = new Q(OOPS+"klassVtable.cpp");
static final Q _klassVtable_hpp = new Q(OOPS+"klassVtable.hpp");
static final Q _klass_cpp = new Q(OOPS+"klass.cpp");
static final Q _klass_hpp = new Q(OOPS+"klass.hpp");
static final Q _klassPS_hpp = new Q(OOPS+"klassPS.hpp");
static final Q _methodKlass_cpp = new Q(OOPS+"methodKlass.cpp");
static final Q _methodKlass_hpp = new Q(OOPS+"methodKlass.hpp");
static final Q _methodOop_cpp = new Q(OOPS+"methodOop.cpp");
static final Q _methodOop_hpp = new Q(OOPS+"methodOop.hpp");
static final Q _objArrayKlassKlass_cpp = new Q(OOPS+"objArrayKlassKlass.cpp");
static final Q _objArrayKlassKlass_hpp = new Q(OOPS+"objArrayKlassKlass.hpp");
static final Q _objArrayKlass_cpp = new Q(OOPS+"objArrayKlass.cpp");
static final Q _objArrayKlass_hpp = new Q(OOPS+"objArrayKlass.hpp");
static final Q _objArrayOop_hpp = new Q(OOPS+"objArrayOop.hpp");
static final Q _oopClosures_py = new Q(OOPS+"oopClosures.py");
static final Q _oop_cpp = new Q(OOPS+"oop.cpp");
static final Q _oop_hpp = new Q(OOPS+"oop.hpp");
static final Q _oop_inline2_hpp = new Q(OOPS+"oop.inline2.hpp");
static final Q _oop_inline_hpp = new Q(OOPS+"oop.inline.hpp");
static final Q _oop_gpgc_inline_hpp = new Q(OOPS+"oop.gpgc.inline.hpp");
static final Q _oop_psgc_inline_hpp = new Q(OOPS+"oop.psgc.inline.hpp");
static final Q _oopsHierarchy_cpp = new Q(OOPS+"oopsHierarchy.cpp");
static final Q _oopsHierarchy_hpp = new Q(OOPS+"oopsHierarchy.hpp");
static final Q _symbolKlass_cpp = new Q(OOPS+"symbolKlass.cpp");
static final Q _symbolKlass_hpp = new Q(OOPS+"symbolKlass.hpp");
static final Q _symbolOop_cpp = new Q(OOPS+"symbolOop.cpp");
static final Q _symbolOop_hpp = new Q(OOPS+"symbolOop.hpp");
static final Q _typeArrayKlassKlass_cpp = new Q(OOPS+"typeArrayKlassKlass.cpp");
static final Q _typeArrayKlassKlass_hpp = new Q(OOPS+"typeArrayKlassKlass.hpp");
static final Q _typeArrayKlass_cpp = new Q(OOPS+"typeArrayKlass.cpp");
static final Q _typeArrayKlass_hpp = new Q(OOPS+"typeArrayKlass.hpp");
static final Q _typeArrayOop_hpp = new Q(OOPS+"typeArrayOop.hpp");
static final String OPTO = "src/share/vm/opto/";
static final Q _addnode_cpp = new Q(OPTO+"addnode.cpp");
static final Q _addnode_hpp = new Q(OPTO+"addnode.hpp");
static final Q _block_cpp = new Q(OPTO+"block.cpp");
static final Q _block_hpp = new Q(OPTO+"block.hpp");
static final Q _buildOopMap_cpp = new Q(OPTO+"buildOopMap.cpp");
static final Q _bytecodeInfo_cpp = new Q(OPTO+"bytecodeInfo.cpp");
static final Q _c2_globals_cpp = new Q(OPTO+"c2_globals.cpp");
static final Q _c2_globals_hpp = new Q(OPTO+"c2_globals.hpp");
static final Q _c2compiler_cpp = new Q(OPTO+"c2compiler.cpp");
static final Q _c2compiler_hpp = new Q(OPTO+"c2compiler.hpp");
static final Q _callGenerator_cpp = new Q(OPTO+"callGenerator.cpp");
static final Q _callGenerator_hpp = new Q(OPTO+"callGenerator.hpp");
static final Q _callnode_cpp = new Q(OPTO+"callnode.cpp");
static final Q _callnode_hpp = new Q(OPTO+"callnode.hpp");
static final Q _cfgnode_cpp = new Q(OPTO+"cfgnode.cpp");
static final Q _cfgnode_hpp = new Q(OPTO+"cfgnode.hpp");
static final Q _chaitin_cpp = new Q(OPTO+"chaitin.cpp");
static final Q _chaitin_hpp = new Q(OPTO+"chaitin.hpp");
static final Q _classes_cpp = new Q(OPTO+"classes.cpp");
static final Q _classes_hpp = new Q(OPTO+"classes.hpp");
static final Q _coalesce_cpp = new Q(OPTO+"coalesce.cpp");
static final Q _coalesce_hpp = new Q(OPTO+"coalesce.hpp");
static final Q _compile_cpp = new Q(OPTO+"compile.cpp");
static final Q _compile_hpp = new Q(OPTO+"compile.hpp");
static final Q _connode_cpp = new Q(OPTO+"connode.cpp");
static final Q _connode_hpp = new Q(OPTO+"connode.hpp");
static final Q _divnode_cpp = new Q(OPTO+"divnode.cpp");
static final Q _divnode_hpp = new Q(OPTO+"divnode.hpp");
static final Q _doCall_cpp = new Q(OPTO+"doCall.cpp");
static final Q _domgraph_cpp = new Q(OPTO+"domgraph.cpp");
static final Q _escape_cpp = new Q(OPTO+"escape.cpp");
static final Q _escape_hpp = new Q(OPTO+"escape.hpp");
static final Q _gcm_cpp = new Q(OPTO+"gcm.cpp");
static final Q _graphKit_cpp = new Q(OPTO+"graphKit.cpp");
static final Q _graphKit_hpp = new Q(OPTO+"graphKit.hpp");
static final Q _idealKit_cpp = new Q(OPTO+"idealKit.cpp");
static final Q _idealKit_hpp = new Q(OPTO+"idealKit.hpp");
static final Q _ifg_cpp = new Q(OPTO+"ifg.cpp");
static final Q _ifnode_cpp = new Q(OPTO+"ifnode.cpp");
static final Q _indexSet_cpp = new Q(OPTO+"indexSet.cpp");
static final Q _indexSet_hpp = new Q(OPTO+"indexSet.hpp");
static final Q _lcm_cpp = new Q(OPTO+"lcm.cpp");
static final Q _library_call_cpp = new Q(OPTO+"library_call.cpp");
static final Q _live_cpp = new Q(OPTO+"live.cpp");
static final Q _live_hpp = new Q(OPTO+"live.hpp");
static final Q _locknode_cpp = new Q(OPTO+"locknode.cpp");
static final Q _locknode_hpp = new Q(OPTO+"locknode.hpp");
static final Q _loopLock_cpp = new Q(OPTO+"loopLock.cpp");
static final Q _loopTransform_cpp = new Q(OPTO+"loopTransform.cpp");
static final Q _loopUnswitch_cpp = new Q(OPTO+"loopUnswitch.cpp");
static final Q _loopnode_cpp = new Q(OPTO+"loopnode.cpp");
static final Q _loopnode_hpp = new Q(OPTO+"loopnode.hpp");
static final Q _loopopts_cpp = new Q(OPTO+"loopopts.cpp");
static final Q _machnode_cpp = new Q(OPTO+"machnode.cpp");
static final Q _machnode_hpp = new Q(OPTO+"machnode.hpp");
static final Q _macro_cpp = new Q(OPTO+"macro.cpp");
static final Q _macro_hpp = new Q(OPTO+"macro.hpp");
static final Q _matcher_cpp = new Q(OPTO+"matcher.cpp");
static final Q _matcher_hpp = new Q(OPTO+"matcher.hpp");
static final Q _memnode_cpp = new Q(OPTO+"memnode.cpp");
static final Q _memnode_hpp = new Q(OPTO+"memnode.hpp");
static final Q _mulnode_cpp = new Q(OPTO+"mulnode.cpp");
static final Q _mulnode_hpp = new Q(OPTO+"mulnode.hpp");
static final Q _multnode_cpp = new Q(OPTO+"multnode.cpp");
static final Q _multnode_hpp = new Q(OPTO+"multnode.hpp");
static final Q _node_cpp = new Q(OPTO+"node.cpp");
static final Q _node_hpp = new Q(OPTO+"node.hpp");
static final Q _opcodes_cpp = new Q(OPTO+"opcodes.cpp");
static final Q _opcodes_hpp = new Q(OPTO+"opcodes.hpp");
static final Q _output_cpp = new Q(OPTO+"output.cpp");
static final Q _output_hpp = new Q(OPTO+"output.hpp");
static final Q _parse1_cpp = new Q(OPTO+"parse1.cpp");
static final Q _parse2_cpp = new Q(OPTO+"parse2.cpp");
static final Q _parse3_cpp = new Q(OPTO+"parse3.cpp");
static final Q _parseHelper_cpp = new Q(OPTO+"parseHelper.cpp");
static final Q _parse_hpp = new Q(OPTO+"parse.hpp");
static final Q _phaseX_cpp = new Q(OPTO+"phaseX.cpp");
static final Q _phaseX_hpp = new Q(OPTO+"phaseX.hpp");
static final Q _phase_cpp = new Q(OPTO+"phase.cpp");
static final Q _phase_hpp = new Q(OPTO+"phase.hpp");
static final Q _postaloc_cpp = new Q(OPTO+"postaloc.cpp");
static final Q _reg_split_cpp = new Q(OPTO+"reg_split.cpp");
static final Q _regalloc_cpp = new Q(OPTO+"regalloc.cpp");
static final Q _regalloc_hpp = new Q(OPTO+"regalloc.hpp");
static final Q _regmask_cpp = new Q(OPTO+"regmask.cpp");
static final Q _regmask_hpp = new Q(OPTO+"regmask.hpp");
static final Q _rootnode_cpp = new Q(OPTO+"rootnode.cpp");
static final Q _rootnode_hpp = new Q(OPTO+"rootnode.hpp");
static final Q _runtime_cpp = new Q(OPTO+"runtime.cpp");
static final Q _runtime_hpp = new Q(OPTO+"runtime.hpp");
static final Q _split_if_cpp = new Q(OPTO+"split_if.cpp");
static final Q _subnode_cpp = new Q(OPTO+"subnode.cpp");
static final Q _subnode_hpp = new Q(OPTO+"subnode.hpp");
static final Q _superword_cpp = new Q(OPTO+"superword.cpp");
static final Q _superword_hpp = new Q(OPTO+"superword.hpp");
static final Q _type_cpp = new Q(OPTO+"type.cpp");
static final Q _type_hpp = new Q(OPTO+"type.hpp");
static final Q _vectornode_cpp = new Q(OPTO+"vectornode.cpp");
static final Q _vectornode_hpp = new Q(OPTO+"vectornode.hpp");
static final String PRIMS = "src/share/vm/prims/";
static final Q _jni_cpp = new Q(PRIMS+"jni.cpp");
static final Q _jniCheck_cpp = new Q(PRIMS+"jniCheck.cpp");
static final Q _jniCheck_hpp = new Q(PRIMS+"jniCheck.hpp");
static final Q _jniFastGetField_cpp = new Q(PRIMS+"jniFastGetField.cpp");
static final Q _jniFastGetField_hpp = new Q(PRIMS+"jniFastGetField.hpp");
static final Q _jni_h = new Q(PRIMS+"jni.h");
static final Q _jni_hpp = new Q(PRIMS+"jni.hpp");
static final Q _jni_md_h = new Q(PRIMS+"jni_md.h");
static final Q _jvm_cpp = new Q(PRIMS+"jvm.cpp");
static final Q _jvm_h = new Q(PRIMS+"jvm.h");
static final Q _jvm_misc_hpp = new Q(PRIMS+"jvm_misc.hpp");
static final Q _jvmtiAgentThread_hpp = new Q(PRIMS+"jvmtiAgentThread.hpp");
static final Q _jvmtiClassFileReconstituter_cpp = new Q(PRIMS+"jvmtiClassFileReconstituter.cpp");
static final Q _jvmtiClassFileReconstituter_hpp = new Q(PRIMS+"jvmtiClassFileReconstituter.hpp");
static final Q _jvmtiCodeBlobEvents_cpp = new Q(PRIMS+"jvmtiCodeBlobEvents.cpp");
static final Q _jvmtiCodeBlobEvents_hpp = new Q(PRIMS+"jvmtiCodeBlobEvents.hpp");
static final Q _jvmtiEnter_hpp = new Q(PRIMS+"jvmtiEnter.hpp");
static final Q _jvmtiEnvBase_cpp = new Q(PRIMS+"jvmtiEnvBase.cpp");
static final Q _jvmtiEnvBase_hpp = new Q(PRIMS+"jvmtiEnvBase.hpp");
static final Q _jvmtiEnv_cpp = new Q(PRIMS+"jvmtiEnv.cpp");
static final Q _jvmtiEnvThreadState_cpp = new Q(PRIMS+"jvmtiEnvThreadState.cpp");
static final Q _jvmtiEnvThreadState_hpp = new Q(PRIMS+"jvmtiEnvThreadState.hpp");
static final Q _jvmtiEnvThreadState_inline_hpp = new Q(PRIMS+"jvmtiEnvThreadState.inline.hpp");
static final Q _jvmtiEventController_cpp = new Q(PRIMS+"jvmtiEventController.cpp");
static final Q _jvmtiEventController_hpp = new Q(PRIMS+"jvmtiEventController.hpp");
static final Q _jvmtiEventController_inline_hpp= new Q(PRIMS+"jvmtiEventController.inline.hpp");
static final Q _jvmtiExport_cpp = new Q(PRIMS+"jvmtiExport.cpp");
static final Q _jvmtiExport_hpp = new Q(PRIMS+"jvmtiExport.hpp");
static final Q _jvmtiExtensions_cpp = new Q(PRIMS+"jvmtiExtensions.cpp");
static final Q _jvmtiExtensions_hpp = new Q(PRIMS+"jvmtiExtensions.hpp");
static final Q _jvmtiGetLoadedClasses_cpp = new Q(PRIMS+"jvmtiGetLoadedClasses.cpp");
static final Q _jvmtiGetLoadedClasses_hpp = new Q(PRIMS+"jvmtiGetLoadedClasses.hpp");
static final Q _jvmtiImpl_cpp = new Q(PRIMS+"jvmtiImpl.cpp");
static final Q _jvmtiImpl_hpp = new Q(PRIMS+"jvmtiImpl.hpp");
static final Q _jvmtiManageCapabilities_cpp = new Q(PRIMS+"jvmtiManageCapabilities.cpp");
static final Q _jvmtiManageCapabilities_hpp = new Q(PRIMS+"jvmtiManageCapabilities.hpp");
static final Q _jvmtiRedefineClasses_cpp = new Q(PRIMS+"jvmtiRedefineClasses.cpp");
static final Q _jvmtiRedefineClasses_hpp = new Q(PRIMS+"jvmtiRedefineClasses.hpp");
static final Q _jvmtiTagMap_cpp = new Q(PRIMS+"jvmtiTagMap.cpp");
static final Q _jvmtiTagMap_hpp = new Q(PRIMS+"jvmtiTagMap.hpp");
static final Q _jvmtiThreadState_cpp = new Q(PRIMS+"jvmtiThreadState.cpp");
static final Q _jvmtiThreadState_hpp = new Q(PRIMS+"jvmtiThreadState.hpp");
static final Q _jvmtiThreadState_inline_hpp = new Q(PRIMS+"jvmtiThreadState.inline.hpp");
static final Q _methodComparator_cpp = new Q(PRIMS+"methodComparator.cpp");
static final Q _methodComparator_hpp = new Q(PRIMS+"methodComparator.hpp");
static final Q _nativeLookup_cpp = new Q(PRIMS+"nativeLookup.cpp");
static final Q _nativeLookup_hpp = new Q(PRIMS+"nativeLookup.hpp");
static final Q _perf_cpp = new Q(PRIMS+"perf.cpp");
static final Q _privilegedStack_cpp = new Q(PRIMS+"privilegedStack.cpp");
static final Q _privilegedStack_hpp = new Q(PRIMS+"privilegedStack.hpp");
static final Q _unsafe_cpp = new Q(PRIMS+"unsafe.cpp");
static final Q _jvmtiEnter_xsl = new Q(PRIMS+"jvmtiEnter.xsl");
static final Q _jvmtiEnv_xsl = new Q(PRIMS+"jvmtiEnv.xsl");
static final Q _jvmtiH_xsl = new Q(PRIMS+"jvmtiH.xsl");
static final Q _jvmtiHpp_xsl = new Q(PRIMS+"jvmtiHpp.xsl");
static final Q _jvmtiLib_xsl = new Q(PRIMS+"jvmtiLib.xsl");
static final Q _jvmti_xml = new Q(PRIMS+"jvmti.xml");
static final String RUNTIME = "src/share/vm/runtime/";
static final Q _aprofiler_hpp = new Q(RUNTIME+"aprofiler.hpp");
static final Q _arguments_cpp = new Q(RUNTIME+"arguments.cpp");
static final Q _arguments_hpp = new Q(RUNTIME+"arguments.hpp");
static final Q _atomic_cpp = new Q(RUNTIME+"atomic.cpp");
static final Q _atomic_hpp = new Q(RUNTIME+"atomic.hpp");
static final Q _compilationPolicy_cpp = new Q(RUNTIME+"compilationPolicy.cpp");
static final Q _compilationPolicy_hpp = new Q(RUNTIME+"compilationPolicy.hpp");
static final Q _fieldDescriptor_cpp = new Q(RUNTIME+"fieldDescriptor.cpp");
static final Q _fieldDescriptor_hpp = new Q(RUNTIME+"fieldDescriptor.hpp");
static final Q _fieldType_cpp = new Q(RUNTIME+"fieldType.cpp");
static final Q _fieldType_hpp = new Q(RUNTIME+"fieldType.hpp");
static final Q _frame_cpp = new Q(RUNTIME+"frame.cpp");
static final Q _frame_hpp = new Q(RUNTIME+"frame.hpp");
static final Q _frame_inline_hpp = new Q(RUNTIME+"frame.inline.hpp");
static final Q _globals_cpp = new Q(RUNTIME+"globals.cpp");
static final Q _globals_extension_hpp = new Q(RUNTIME+"globals_extension.hpp");
static final Q _globals_hpp = new Q(RUNTIME+"globals.hpp");
static final Q _handles_cpp = new Q(RUNTIME+"handles.cpp");
static final Q _handles_hpp = new Q(RUNTIME+"handles.hpp");
static final Q _handles_inline_hpp = new Q(RUNTIME+"handles.inline.hpp");
static final Q _hpi_cpp = new Q(RUNTIME+"hpi.cpp");
static final Q _hpi_hpp = new Q(RUNTIME+"hpi.hpp");
static final Q _hpi_imported_h = new Q(RUNTIME+"hpi_imported.h");
static final Q _icache_hpp = new Q(RUNTIME+"icache.hpp");
static final Q _init_cpp = new Q(RUNTIME+"init.cpp");
static final Q _init_hpp = new Q(RUNTIME+"init.hpp");
static final Q _interfaceSupport_cpp = new Q(RUNTIME+"interfaceSupport.cpp");
static final Q _interfaceSupport_hpp = new Q(RUNTIME+"interfaceSupport.hpp");
static final Q _javaCalls_cpp = new Q(RUNTIME+"javaCalls.cpp");
static final Q _javaCalls_hpp = new Q(RUNTIME+"javaCalls.hpp");
static final Q _javaFrameAnchor_hpp = new Q(RUNTIME+"javaFrameAnchor.hpp");
static final Q _java_cpp = new Q(RUNTIME+"java.cpp");
static final Q _java_hpp = new Q(RUNTIME+"java.hpp");
static final Q _jfieldID_hpp = new Q(RUNTIME+"jfieldIDWorkaround.hpp");
static final Q _jniHandles_cpp = new Q(RUNTIME+"jniHandles.cpp");
static final Q _jniHandles_hpp = new Q(RUNTIME+"jniHandles.hpp");
static final Q _jniPeriodicChecker_hpp = new Q(RUNTIME+"jniPeriodicChecker.hpp");
static final Q _memprofiler_hpp = new Q(RUNTIME+"memprofiler.hpp");
static final Q _orderAccess_cpp = new Q(RUNTIME+"orderAccess.cpp");
static final Q _orderAccess_hpp = new Q(RUNTIME+"orderAccess.hpp");
static final Q _osThread_cpp = new Q(RUNTIME+"osThread.cpp");
static final Q _osThread_hpp = new Q(RUNTIME+"osThread.hpp");
static final Q _os_cpp = new Q(RUNTIME+"os.cpp");
static final Q _os_hpp = new Q(RUNTIME+"os.hpp");
static final Q _perfData_hpp = new Q(RUNTIME+"perfData.hpp");
static final Q _perfData_cpp = new Q(RUNTIME+"perfData.cpp");
static final Q _perfMemory_cpp = new Q(RUNTIME+"perfMemory.cpp");
static final Q _perfMemory_hpp = new Q(RUNTIME+"perfMemory.hpp");
static final Q _prefetch_hpp = new Q(RUNTIME+"prefetch.hpp");
static final Q _reflection_cpp = new Q(RUNTIME+"reflection.cpp");
static final Q _reflection_hpp = new Q(RUNTIME+"reflection.hpp");
static final Q _reflectionCompat_hpp = new Q(RUNTIME+"reflectionCompat.hpp");
static final Q _reflectionUtils_cpp = new Q(RUNTIME+"reflectionUtils.cpp");
static final Q _reflectionUtils_hpp = new Q(RUNTIME+"reflectionUtils.hpp");
static final Q _relocator_cpp = new Q(RUNTIME+"relocator.cpp");
static final Q _relocator_hpp = new Q(RUNTIME+"relocator.hpp");
static final Q _rframe_cpp = new Q(RUNTIME+"rframe.cpp");
static final Q _rframe_hpp = new Q(RUNTIME+"rframe.hpp");
static final Q _safepoint_cpp = new Q(RUNTIME+"safepoint.cpp");
static final Q _safepoint_hpp = new Q(RUNTIME+"safepoint.hpp");
static final Q _sharedRuntime_cpp = new Q(RUNTIME+"sharedRuntime.cpp");
static final Q _sharedRuntime_hpp = new Q(RUNTIME+"sharedRuntime.hpp");
static final Q _sharedRuntimeTrig_cpp = new Q(RUNTIME+"sharedRuntimeTrig.cpp");
static final Q _sharedRuntimeTrans_cpp = new Q(RUNTIME+"sharedRuntimeTrans.cpp");
static final Q _signature_cpp = new Q(RUNTIME+"signature.cpp");
static final Q _signature_hpp = new Q(RUNTIME+"signature.hpp");
static final Q _statSampler_cpp = new Q(RUNTIME+"statSampler.cpp");
static final Q _statSampler_hpp = new Q(RUNTIME+"statSampler.hpp");
static final Q _stubCodeGenerator_cpp = new Q(RUNTIME+"stubCodeGenerator.cpp");
static final Q _stubCodeGenerator_hpp = new Q(RUNTIME+"stubCodeGenerator.hpp");
static final Q _stubRoutines_cpp = new Q(RUNTIME+"stubRoutines.cpp");
static final Q _stubRoutines_hpp = new Q(RUNTIME+"stubRoutines.hpp");
static final Q _task_cpp = new Q(RUNTIME+"task.cpp");
static final Q _task_hpp = new Q(RUNTIME+"task.hpp");
static final Q _thread_cpp = new Q(RUNTIME+"thread.cpp");
static final Q _thread_hpp = new Q(RUNTIME+"thread.hpp");
static final Q _timer_cpp = new Q(RUNTIME+"timer.cpp");
static final Q _timer_hpp = new Q(RUNTIME+"timer.hpp");
static final Q _virtualspace_cpp = new Q(RUNTIME+"virtualspace.cpp");
static final Q _virtualspace_hpp = new Q(RUNTIME+"virtualspace.hpp");
static final Q _vmThread_cpp = new Q(RUNTIME+"vmThread.cpp");
static final Q _vmThread_hpp = new Q(RUNTIME+"vmThread.hpp");
static final Q _vm_operations_cpp = new Q(RUNTIME+"vm_operations.cpp");
static final Q _vm_operations_hpp = new Q(RUNTIME+"vm_operations.hpp");
static final Q _vm_version_cpp = new Q(RUNTIME+"vm_version.cpp");
static final Q _vm_version_hpp = new Q(RUNTIME+"vm_version.hpp");
static final String SERVICES = "src/share/vm/services/";
static final Q _attachListener_cpp = new Q(SERVICES+"attachListener.cpp");
static final Q _attachListener_hpp = new Q(SERVICES+"attachListener.hpp");
static final Q _classLoadingService_cpp = new Q(SERVICES+"classLoadingService.cpp");
static final Q _classLoadingService_hpp = new Q(SERVICES+"classLoadingService.hpp");
static final Q _heapDumper_cpp = new Q(SERVICES+"heapDumper.cpp");
static final Q _heapDumper_hpp = new Q(SERVICES+"heapDumper.hpp");
static final Q _jmm_h = new Q(SERVICES+"jmm.h");
static final Q _lowMemoryDetector_cpp = new Q(SERVICES+"lowMemoryDetector.cpp");
static final Q _lowMemoryDetector_hpp = new Q(SERVICES+"lowMemoryDetector.hpp");
static final Q _management_cpp = new Q(SERVICES+"management.cpp");
static final Q _management_hpp = new Q(SERVICES+"management.hpp");
static final Q _memoryManager_cpp = new Q(SERVICES+"memoryManager.cpp");
static final Q _memoryManager_hpp = new Q(SERVICES+"memoryManager.hpp");
static final Q _memoryPool_cpp = new Q(SERVICES+"memoryPool.cpp");
static final Q _memoryPool_hpp = new Q(SERVICES+"memoryPool.hpp");
static final Q _memoryService_cpp = new Q(SERVICES+"memoryService.cpp");
static final Q _memoryService_hpp = new Q(SERVICES+"memoryService.hpp");
static final Q _memoryUsage_hpp = new Q(SERVICES+"memoryUsage.hpp");
static final Q _psMemoryPool_cpp = new Q(SERVICES+"psMemoryPool.cpp");
static final Q _psMemoryPool_hpp = new Q(SERVICES+"psMemoryPool.hpp");
static final Q _runtimeService_cpp = new Q(SERVICES+"runtimeService.cpp");
static final Q _runtimeService_hpp = new Q(SERVICES+"runtimeService.hpp");
static final Q _serviceUtil_hpp = new Q(SERVICES+"serviceUtil.hpp");
static final Q _threadService_cpp = new Q(SERVICES+"threadService.cpp");
static final Q _threadService_hpp = new Q(SERVICES+"threadService.hpp");
static final String UTILITIES = "src/share/vm/utilities/";
static final Q _accessFlags_cpp = new Q(UTILITIES+"accessFlags.cpp");
static final Q _accessFlags_hpp = new Q(UTILITIES+"accessFlags.hpp");
static final Q _array_cpp = new Q(UTILITIES+"array.cpp");
static final Q _array_hpp = new Q(UTILITIES+"array.hpp");
static final Q _bitMap_cpp = new Q(UTILITIES+"bitMap.cpp");
static final Q _bitMap_hpp = new Q(UTILITIES+"bitMap.hpp");
static final Q _bitOps_hpp = new Q(UTILITIES+"bitOps.hpp");
static final Q _bitMap_inline_hpp = new Q(UTILITIES+"bitMap.inline.hpp");
static final Q _constantTag_hpp = new Q(UTILITIES+"constantTag.hpp");
static final Q _constantTag_cpp = new Q(UTILITIES+"constantTag.cpp");
static final Q _copy_cpp = new Q(UTILITIES+"copy.cpp");
static final Q _copy_hpp = new Q(UTILITIES+"copy.hpp");
static final Q _copy_inline_hpp = new Q(UTILITIES+"copy.inline.hpp");
static final Q _debug_cpp = new Q(UTILITIES+"debug.cpp");
static final Q _debug_hpp = new Q(UTILITIES+"debug.hpp");
static final Q _defaultStream_hpp = new Q(UTILITIES+"defaultStream.hpp");
static final Q _exceptions_cpp = new Q(UTILITIES+"exceptions.cpp");
static final Q _exceptions_hpp = new Q(UTILITIES+"exceptions.hpp");
static final Q _global_defs_azgcc_hpp = new Q(UTILITIES+"globalDefinitions_azgcc.hpp");
static final Q _global_defs_cpp = new Q(UTILITIES+"globalDefinitions.cpp");
static final Q _global_defs_hpp = new Q(UTILITIES+"globalDefinitions.hpp");
static final Q _growableArray_cpp = new Q(UTILITIES+"growableArray.cpp");
static final Q _growableArray_hpp = new Q(UTILITIES+"growableArray.hpp");
static final Q _hashtable_cpp = new Q(UTILITIES+"hashtable.cpp");
static final Q _hashtable_hpp = new Q(UTILITIES+"hashtable.hpp");
static final Q _hashtable_inline_hpp = new Q(UTILITIES+"hashtable.inline.hpp");
static final Q _histogram_hpp = new Q(UTILITIES+"histogram.hpp");
static final Q _macros_hpp = new Q(UTILITIES+"macros.hpp");
static final Q _ostream_cpp = new Q(UTILITIES+"ostream.cpp");
static final Q _ostream_hpp = new Q(UTILITIES+"ostream.hpp");
static final Q _preserveEx_cpp = new Q(UTILITIES+"preserveException.cpp");
static final Q _preserveEx_hpp = new Q(UTILITIES+"preserveException.hpp");
static final Q _sizes_hpp = new Q(UTILITIES+"sizes.hpp");
static final Q _taskqueue_cpp = new Q(UTILITIES+"taskqueue.cpp");
static final Q _taskqueue_hpp = new Q(UTILITIES+"taskqueue.hpp");
static final Q _uft8_cpp = new Q(UTILITIES+"utf8.cpp");
static final Q _uft8_hpp = new Q(UTILITIES+"utf8.hpp");
static final Q _vmError_cpp = new Q(UTILITIES+"vmError.cpp");
static final Q _vmError_hpp = new Q(UTILITIES+"vmError.hpp");
static final Q _workgroup_hpp = new Q(UTILITIES+"workgroup.hpp");
static final Q _xmlstream_cpp = new Q(UTILITIES+"xmlstream.cpp");
static final Q _xmlstream_hpp = new Q(UTILITIES+"xmlstream.hpp");
// --- ADLC
static final String ADLC = "src/share/vm/adlc/";
static final Q _adlc_hpp = new Q(ADLC+"adlc.hpp");
static final Q _adlcVMDeps_hpp = new Q(ADLC+"adlcVMDeps.hpp");
static final Q _adlparse_cpp = new Q(ADLC+"adlparse.cpp");
static final Q _adlparse_hpp = new Q(ADLC+"adlparse.hpp");
static final Q _archDesc_cpp = new Q(ADLC+"archDesc.cpp");
static final Q _archDesc_hpp = new Q(ADLC+"archDesc.hpp");
static final Q _arena_cpp = new Q(ADLC+"arena.cpp");
static final Q _arena_hpp = new Q(ADLC+"arena.hpp");
static final Q _dfa_cpp = new Q(ADLC+"dfa.cpp");
static final Q _dict2_cpp = new Q(ADLC+"dict2.cpp");
static final Q _dict2_hpp = new Q(ADLC+"dict2.hpp");
static final Q _filebuff_cpp = new Q(ADLC+"filebuff.cpp");
static final Q _filebuff_hpp = new Q(ADLC+"filebuff.hpp");
static final Q _forms_cpp = new Q(ADLC+"forms.cpp");
static final Q _forms_hpp = new Q(ADLC+"forms.hpp");
static final Q _formsopt_cpp = new Q(ADLC+"formsopt.cpp");
static final Q _formsopt_hpp = new Q(ADLC+"formsopt.hpp");
static final Q _formssel_cpp = new Q(ADLC+"formssel.cpp");
static final Q _formssel_hpp = new Q(ADLC+"formssel.hpp");
static final Q _adlcmain_cpp = new Q(ADLC+"adlcmain.cpp");
static final Q _output_c_cpp = new Q(ADLC+"output_c.cpp");
static final Q _output_h_cpp = new Q(ADLC+"output_h.cpp");
static final Q ADLC_CPPS[] = {
_adlcmain_cpp,
_adlparse_cpp,
_archDesc_cpp,
_arena_cpp,
_dfa_cpp,
_dict2_cpp,
_filebuff_cpp,
_forms_cpp,
_formsopt_cpp,
_formssel_cpp,
_opcodes_cpp,
_output_c_cpp,
_output_h_cpp
};
// adlc objects and includes are generated here...
static final String OBJDIR_ADLC_JIT6_TARGET
= (TARGET_OSN.equals("azproxied")) ? OBJDIR_AZPROXIED_X86_JIT6
: OBJDIR_AZLINUX_X86_JIT6;
// --- JVMTI (blech!!!)
static final String JVMTI_DIR = PRIMS + "generated_jvmtifiles/" + TARGET_OSN + "/";
static final Q _jvmtiGen_j = new Q (PRIMS+"jvmtiGen.java");
static final Q _jvmtiGen_c = new QS(JVMTI_DIR+"jvmtiGen.class", JAVAC + " -d "+JVMTI_DIR+" %src",_jvmtiGen_j);
static final Q _jvmtiEnvFill_j = new Q (PRIMS+"jvmtiEnvFill.java");
static final Q _jvmtiEnvFill_c = new QS(JVMTI_DIR+"jvmtiEnvFill.class", JAVAC + " -d "+JVMTI_DIR+" %src",_jvmtiEnvFill_j);
static final Q _jvmti_h = new QS(JVMTI_DIR+"jvmti.h",
JAVA + " -cp " + JVMTI_DIR + " jvmtiGen -IN %src0 -XSL %src1 -OUT %dst",
' ',_jvmti_xml,_jvmtiH_xsl,_jvmtiLib_xsl,_jvmtiGen_c);
static final Q _jvmtiEnv_hpp=new QS(JVMTI_DIR+"jvmtiEnv.hpp",
JAVA + " -cp " + JVMTI_DIR + " jvmtiGen -IN %src0 -XSL %src1 -OUT %dst",
' ',_jvmti_xml,_jvmtiHpp_xsl,_jvmtiLib_xsl,_jvmtiGen_c);
static final Q _jvmtiEnterTrace_cpp=new QS(JVMTI_DIR+"jvmtiEnterTrace.cpp",
JAVA + " -cp " + JVMTI_DIR + " jvmtiGen -IN %src0 -XSL %src1 -OUT %dst -PARAM interface jvmti -PARAM trace Trace",
' ',_jvmti_xml,_jvmtiEnter_xsl,_jvmtiLib_xsl,_jvmtiGen_c);
static final Q _jvmtiEnter_cpp=new QS(JVMTI_DIR+"jvmtiEnter.cpp",
JAVA + " -cp " + JVMTI_DIR + " jvmtiGen -IN %src0 -XSL %src1 -OUT %dst -PARAM interface jvmti",
' ',_jvmti_xml,_jvmtiEnter_xsl,_jvmtiLib_xsl,_jvmtiGen_c);
// --- OopClosures
static final Q _oopClosures_cpp = new QS(OOPS+"oopClosures.cpp", _oopClosures_py._target+" %dst", _oopClosures_py);
// --- Includes
static final String INCLUDES =
" -I " + OBJDIR_ADLC_JIT6_TARGET +"adlc" +
" -I " + ADLC +
" -I " + AZUL_CODE +
" -I " + AZUL_COMPILER +
" -I " + AZUL_GC_GPGC +
" -I " + AZUL_GC_SHARED +
" -I " + AZUL_OOPS +
" -I " + AZUL_ARTA +
" -I " + AZUL_RUNTIME +
" -I " + C1 +
" -I " + CI +
" -I " + CLASSFILE +
" -I " + CODE +
" -I " + COMPILER +
" -I " + GC_INTERFACE +
" -I " + GC_SHARED +
" -I " + GC_PARALLELSCAVENGE +
" -I " + INTERPRETER +
" -I " + JVMTI_DIR +
" -I " + LIBADT +
" -I " + MEMORY +
" -I " + OOPS +
" -I " + OPTO +
" -I " + PRIMS +
" -I " + RUNTIME +
" -I " + SERVICES +
" -I " + UTILITIES;
// --- DEFINES for the different build flavors
static final String JDK_RELEASE_VERSION = _jdkversion;
// JDK_VERSION needs to be an integer.
static final String JDK_VERSION = JDK_RELEASE_VERSION.replaceAll("[._]", "");
static final String BUILD_NUMBER = _buildnumber;
static final String BUILD_VERSION = _releaseversion + "-b" + _buildnumber;
// by the user while building hotspot
static final String BUILD_USER = System.getProperty("user.name", "unknown");
static final String AVM_RELEASE_VERSION = JDK_RELEASE_VERSION + "-AVM_" + BUILD_VERSION;
static final String HOTSPOT_RELEASE_VERSION = JDK_RELEASE_VERSION + "-b" + BUILD_NUMBER;
static final String VERS_FLAGS = " -DHOTSPOT_BUILD_USER=" + BUILD_USER +
" -DJDK_VERSION=" + JDK_VERSION +
" -DAVM_RELEASE_VERSION=" + AVM_RELEASE_VERSION +
" -DHOTSPOT_RELEASE_VERSION=" + HOTSPOT_RELEASE_VERSION + " ";
static final String GLIBC_64_BIT_FLAGS = " -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE ";
static final String AZNIX_FLAGS = " -DAZNIX_API_VERSION="+_aznix_api_version+ " ";
static final String DEBUG_FLAGS = " -DDEBUG -DASSERT ";
static final String FASTDEBUG_FLAGS = " -DFASTDEBUG -DASSERT "+GCC_WARN_OPTIMIZED;
static final String OPTIMIZED_FLAGS = " -DOPTIMIZED"+GCC_WARN_OPTIMIZED;
static final String PRODUCT_FLAGS = " -DPRODUCT "+GCC_WARN_OPTIMIZED;
static final String AZPROXIED_X86_FLAGS_CORE = " -DAZ_PROFILER -DAZUL -DAZ_X86 -DAZ_PROXIED -DCORE -DX86_64 -DVM_LITTLE_ENDIAN "+VERS_FLAGS+GLIBC_64_BIT_FLAGS+AZNIX_FLAGS;
static final String AZLINUX_X86_FLAGS_CORE = " -DAZUL -DAZ_X86 -DCORE -DX86_64 -DVM_LITTLE_ENDIAN -DAZPROF_NO_OPENSSL "+VERS_FLAGS+GLIBC_64_BIT_FLAGS+AZNIX_FLAGS;
static final String AZPROXIED_X86_FLAGS_JIT = " -DAZ_PROFILER -DAZUL -DAZ_X86 -DAZ_PROXIED -DX86_64 -DVM_LITTLE_ENDIAN "+VERS_FLAGS+GLIBC_64_BIT_FLAGS+AZNIX_FLAGS;
static final String AZLINUX_X86_FLAGS_JIT = " -DAZUL -DAZ_X86 -DX86_64 -DVM_LITTLE_ENDIAN -DAZPROF_NO_OPENSSL "+VERS_FLAGS+GLIBC_64_BIT_FLAGS+AZNIX_FLAGS;
static final Q _proxy_jdk_version_c = new Q(SANDBOX+"/cross/src/proxy/proxy_jdk_version.c");
// A list of all HotSpot CPP files
static final Q HOTSPOT_CPPS[] =
{
_accessFlags_cpp,
_adaptiveSizePolicy_cpp,
_adjoiningGenerations_cpp,
_adjoiningVirtualSpaces_cpp,
_allocatedObjects_cpp,
_allocation_cpp,
_arguments_cpp,
_arrayKlassKlass_cpp,
_arrayKlass_cpp,
_array_cpp,
_atomic_cpp,
_attachListener_cpp,
_auditTrail_cpp,
_bitMap_cpp,
_bytecode_cpp,
_bytecodes_cpp,
_bytecodeStream_cpp,
_bytecodeHistogram_cpp,
_bytecodeTracer_cpp,
_c1_globals_cpp,
_c2_globals_cpp,
_cardTableExtension_cpp,
_cardTableModRefBS_cpp,
_classFileError_cpp,
_classFileParser_cpp,
_classFileStream_cpp,
_classLoader_cpp,
_classLoadingService_cpp,
_codeBlob_cpp,
_codeCacheOopTable_cpp,
_codeCache_cpp,
_collectedHeap_cpp,
_collectorCounters_cpp,
_collectorPolicy_cpp,
_commonAsm_cpp,
_compactingPermGenGen_cpp,
_compressedStream_cpp,
_constMethodKlass_cpp,
_constMethodOop_cpp,
_constantPoolKlass_cpp,
_constantPoolOop_cpp,
_constantTag_cpp,
_copy_cpp,
_cpCacheKlass_cpp,
_cpCacheOop_cpp,
_cycleCounts_cpp,
_debug_cpp,
_dependencies_cpp,
_dict_cpp,
_dictionary_cpp,
_exceptions_cpp,
_fieldDescriptor_cpp,
_fieldType_cpp,
_frame_cpp,
_freezeAndMelt_cpp,
_gcAdaptivePolicyCounters_cpp,
_gcLocker_cpp,
_gcPolicyCounters_cpp,
_gcStats_cpp,
_gcTaskManager_cpp,
_gcTaskThread_cpp,
_gcUtil_cpp,
_genOopClosures_cpp,
_genRemSet_cpp,
_generateOopMap_cpp,
_global_defs_cpp,
_globals_cpp,
_gpgc_cardTable_cpp,
_gpgc_closures_cpp,
_gpgc_collector_cpp,
_gpgc_debug_cpp,
_gpgc_gcManagerMark_cpp,
_gpgc_gcManagerNewFinal_cpp,
_gpgc_gcManagerNewReloc_cpp,
_gpgc_gcManagerNewStrong_cpp,
_gpgc_gcManagerNew_cpp,
_gpgc_gcManagerOldFinal_cpp,
_gpgc_gcManagerOldReloc_cpp,
_gpgc_gcManagerOldStrong_cpp,
_gpgc_gcManagerOld_cpp,
_gpgc_generation_cpp,
_gpgc_heap_cpp,
_gpgc_heuristic_cpp,
_gpgc_interlock_cpp,
_gpgc_layout_cpp,
_gpgc_lvb_cpp,
_gpgc_marker_cpp,
_gpgc_markingQueue_cpp,
_gpgc_markIterator_cpp,
_gpgc_marks_cpp,
_gpgc_metadata_cpp,
_gpgc_multiPageSpace_cpp,
_gpgc_newCollector_main_cpp,
_gpgc_newCollector_mark_cpp,
_gpgc_newCollector_misc_cpp,
_gpgc_newCollector_reloc_cpp,
_gpgc_newCollector_traps_cpp,
_gpgc_newCollector_verify_cpp,
_gpgc_nmt_cpp,
_gpgc_oldCollector_main_cpp,
_gpgc_oldCollector_mark_cpp,
_gpgc_oldCollector_misc_cpp,
_gpgc_oldCollector_reloc_cpp,
_gpgc_oldCollector_traps_cpp,
_gpgc_oldCollector_verify_cpp,
_gpgc_onePageSpace_cpp,
_gpgc_operation_cpp,
_gpgc_pageAudit_cpp,
_gpgc_pageBudget_cpp,
_gpgc_pageInfo_cpp,
_gpgc_population_cpp,
_gpgc_readTrapArray_cpp,
_gpgc_javaLangRefHandler_cpp,
_gpgc_relocation_cpp,
_gpgc_rendezvous_cpp,
_gpgc_safepoint_cpp,
_gpgc_slt_cpp,
_gpgc_space_cpp,
_gpgc_sparseMappedSpace_cpp,
_gpgc_stats_cpp,
_gpgc_tasks_cpp,
_gpgc_threadCleaner_cpp,
_gpgc_threadRefLists_cpp,
_gpgc_thread_cpp,
_gpgc_tlb_cpp,
_gpgc_verifyClosure_cpp,
_gpgc_verify_tasks_cpp,
_growableArray_cpp,
_handles_cpp,
_hashtable_cpp,
_heapDumper_cpp,
_heapIterator_cpp,
_heapRefBuffer_cpp,
_hpi_cpp,
_init_cpp,
_inst_klass_cpp,
_instanceKlassKlass_cpp,
_instanceRefKlass_cpp,
_interfaceSupport_cpp,
_interpreterRuntime_cpp,
_interpreter_cpp,
_invertedVirtualspace_cpp,
_invocationCounter_cpp,
_javaAssertions_cpp,
_javaCalls_cpp,
_javaClasses_cpp,
_java_cpp,
_jniCheck_cpp,
_jniHandles_cpp,
_jni_cpp,
_jniFastGetField_cpp,
_jvm_cpp,
_jvmtiClassFileReconstituter_cpp,
_jvmtiCodeBlobEvents_cpp,
_jvmtiEnterTrace_cpp, // machine generated file
_jvmtiEnter_cpp, // machine generated file
_jvmtiEnv_cpp,
_jvmtiEnvBase_cpp,
_jvmtiEnvThreadState_cpp,
_jvmtiEventController_cpp,
_jvmtiExport_cpp,
_jvmtiExtensions_cpp,
_jvmtiGetLoadedClasses_cpp,
_jvmtiImpl_cpp,
_jvmtiManageCapabilities_cpp,
_jvmtiRedefineClasses_cpp,
_jvmtiTagMap_cpp,
_jvmtiThreadState_cpp,
_klassIds_cpp,
_klassKlass_cpp,
_klassTable_cpp,
_klassVtable_cpp,
_klass_cpp,
_linkResolver_cpp,
_liveObjects_cpp,
_loaderConstraints_cpp,
_log_cpp,
_lowMemoryDetector_cpp,
_lvb_cpp,
_management_cpp,
_markSweep_cpp,
_markWord_cpp,
_memRegion_cpp,
_memoryManager_cpp,
_memoryPool_cpp,
_memoryService_cpp,
_methodCodeKlass_cpp,
_methodCodeOop_cpp,
_methodComparator_cpp,
_methodKlass_cpp,
_methodOop_cpp,
_mutableSpace_cpp,
_mutexLocker_cpp,
_mutex_cpp,
_nativeLookup_cpp,
_noinline_cpp,
_objArrayKlassKlass_cpp,
_objArrayKlass_cpp,
_objectMonitor_cpp,
_objectStartArray_cpp,
_oopClosures_cpp,
_oopFactory_cpp,
_oopTable_cpp,
_oop_cpp,
_oopsHierarchy_cpp,
_orderAccess_cpp,
_osThread_cpp,
_os_cpp,
_ostream_cpp,
_parallelScavengeHeap_cpp,
_pcMap_cpp,
_perf_cpp,
_perfData_cpp,
_perfMemory_cpp,
_pgcTaskManager_cpp,
_pgcTaskThread_cpp,
_placeholders_cpp,
_preserveEx_cpp,
_privilegedStack_cpp,
_psAdaptiveSizePolicy_cpp,
_psGCAdaptivePolicyCounters_cpp,
_psGenerationCounters_cpp,
_psMarkSweepDecorator_cpp,
_psMarkSweep_cpp,
_psMemoryPool_cpp,
_psOldGen_cpp,
_psParallelCompact_cpp,
_psPermGen_cpp,
_psPromotionLAB_cpp,
_psPromotionManager_cpp,
_psScavenge_cpp,
_psTasks_cpp,
_psVirtualspace_cpp,
_psYoungGen_cpp,
_relocator_cpp,
_referencePolicy_cpp,
_referenceProcessor_cpp,
_reflectionUtils_cpp,
_reflection_cpp,
_remoteJNI_cpp,
_resolutionErrors_cpp,
_resourceArea_cpp,
_rewriter_cpp,
_rlimits_cpp,
_artaObjects_cpp,
_artaQuery_cpp,
_artaThreadState_cpp,
_runtimeService_cpp,
_safepoint_cpp,
_sbaThreadInfo_cpp,
_sharedRuntimeTrans_cpp,
_sharedRuntimeTrig_cpp,
_sharedRuntime_cpp,
_sharedUserData_cpp,
_signature_cpp,
_smaHeuristic_cpp,
_spaceCounters_cpp,
_space_cpp,
_stackBasedAllocation_cpp,
_stackMapFrame_cpp,
_stackMapTable_cpp,
_statSampler_cpp,
_statistics_cpp,
_stubCodeGenerator_cpp,
_stubRoutines_cpp,
_surrogateLockerThread_cpp,
_symbolKlass_cpp,
_symbolOop_cpp,
_symbolTable_cpp,
_synchronizer_cpp,
_systemDictionary_cpp,
_task_cpp,
_taskqueue_cpp,
_templateTable_cpp,
_threadLocalAlloc_cpp,
_threadService_cpp,
_thread_cpp,
_tickProfiler_cpp,
_timer_cpp,
_typeArrayKlassKlass_cpp,
_typeArrayKlass_cpp,
_uft8_cpp,
_universe_cpp,
_unsafe_cpp,
_verificationType_cpp,
_verifier_cpp,
_vframe_cpp,
_virtualspace_cpp,
_vmError_cpp,
_vmGCOperations_cpp,
_vmPSOperations_cpp,
_vmSymbols_cpp,
_vmTags_cpp,
_vmThread_cpp,
_vm_operations_cpp,
_vm_version_cpp,
_xmlBuffer_cpp,
_xmlstream_cpp
};
static final Q HOTSPOT_JIT_CPPS[] = {
_abstractCompiler_cpp,
_addnode_cpp,
_bcEscapeAnalyzer_cpp,
_block_cpp,
_buildOopMap_cpp,
_bytecodeInfo_cpp,
_c1_CFGPrinter_cpp,
_c1_Canonicalizer_cpp,
_c1_Compilation_cpp,
_c1_Compiler_cpp,
_c1_Defs_cpp,
_c1_FrameMap_cpp,
_c1_GraphBuilder_cpp,
_c1_IR_cpp,
_c1_InstructionPrinter_cpp,
_c1_Instruction_cpp,
_c1_LIRAssembler_cpp,
_c1_LIRGenerator_cpp,
_c1_LIR_cpp,
_c1_LinearScan_cpp,
_c1_Optimizer_cpp,
_c1_Runtime1_cpp,
_c1_ThreadLocals_cpp,
_c1_ValueMap_cpp,
_c1_ValueSet_cpp,
_c1_ValueStack_cpp,
_c1_ValueType_cpp,
_c2compiler_cpp,
_callGenerator_cpp,
_callnode_cpp,
_cfgnode_cpp,
_chaitin_cpp,
_chaitin_linux_cpp,
_ciArrayKlass_cpp,
_ciArray_cpp,
_ciConstantPoolCache_cpp,
_ciConstant_cpp,
_ciEnv_cpp,
_ciExceptionHandler_cpp,
_ciField_cpp,
_ciFlags_cpp,
_ciInstanceKlassKlass_cpp,
_ciInstanceKlass_cpp,
_ciInstance_cpp,
_ciKlassKlass_cpp,
_ciKlass_cpp,
_ciMethod_cpp,
_ciMethodBlocks_cpp,
_ciMethodKlass_cpp,
_ciNullObject_cpp,
_ciObjArray_cpp,
_ciObjArrayKlassKlass_cpp,
_ciObjArrayKlass_cpp,
_ciObjectFactory_cpp,
_ciObject_cpp,
_ciSignature_cpp,
_ciStreams_cpp,
_ciSymbolKlass_cpp,
_ciSymbol_cpp,
_ciTypeArrayKlassKlass_cpp,
_ciTypeArrayKlass_cpp,
_ciTypeArray_cpp,
_ciTypeFlow_cpp,
_ciType_cpp,
_ciUtilities_cpp,
_classes_cpp,
_coalesce_cpp,
_codeProfile_cpp,
_compilationPolicy_cpp,
_compileBroker_cpp,
_compile_cpp,
_compiledIC_cpp,
_compilerOracle_cpp,
_connode_cpp,
_deoptimization_cpp,
_divnode_cpp,
_doCall_cpp,
_domgraph_cpp,
_escape_cpp,
_gcm_cpp,
_graphKit_cpp,
_idealKit_cpp,
_ifg_cpp,
_ifnode_cpp,
_indexSet_cpp,
_lcm_cpp,
_library_call_cpp,
_live_cpp,
_locknode_cpp,
_loopLock_cpp,
_loopTransform_cpp,
_loopUnswitch_cpp,
_loopnode_cpp,
_loopopts_cpp,
_machnode_cpp,
_macro_cpp,
_matcher_cpp,
_memnode_cpp,
_methodLiveness_cpp,
_mulnode_cpp,
_multnode_cpp,
_node_cpp,
_output_cpp,
_parse1_cpp,
_parse2_cpp,
_parse3_cpp,
_parseHelper_cpp,
_phaseX_cpp,
_phase_cpp,
_port_cpp,
_postaloc_cpp,
_reg_split_cpp,
_regalloc_cpp,
_regmask_cpp,
_rframe_cpp,
_rootnode_cpp,
_runtime_cpp,
_set_cpp,
_split_if_cpp,
_subnode_cpp,
_superword_cpp,
_type_cpp,
_vectornode_cpp,
_vectset_cpp
};
static final Q HOTSPOT_X86_CPPS[] = {
_assembler_x86_cpp,
_bytecodes_x86_cpp,
_debug_x86_cpp,
_disassembler_x86_cpp,
_frame_x86_cpp,
_icache_x86_cpp,
_interpreter_x86_cpp,
_interpreterRT_x86_cpp,
_interp_masm_x86_cpp,
_nativeInst_x86_cpp,
_objectRef_x86_cpp,
_register_x86_cpp,
_sharedRuntime_x86_cpp,
_stackRef_x86_cpp,
_stubGenerator_x86_cpp,
_stubRoutines_x86_cpp,
_templateTable_x86_cpp,
_tickProfiler_x86_cpp,
_vm_version_x86_cpp,
_vtableStubs_x86_cpp
};
static final Q HOTSPOT_LINUX_CPPS[] = {
_attachListener_linux_cpp,
_assembler_linux_x86_cpp,
_gpgc_linux_cpp,
_hpi_linux_cpp,
_jvm_linux_cpp,
_mutex_linux_cpp,
_os_linux_cpp,
_osThread_linux_cpp,
_vmError_linux_cpp,
_gctrap_linux_x86_cpp,
_os_linux_x86_cpp,
_thread_linux_x86_cpp
};
static final Q HOTSPOT_AZLINUX_CPPS[] = {
};
static final Q HOTSPOT_AZPROXIED_CPPS[] = {
};
// --- Build all the P's from all the CPP's, per build directory
static final String INCLUDES_AZLINUX_X86_CORE = INCLUDES +
" -I " + CPU_X86 + " -I " + OS_LINUX + INCLUDES_AZLINUX + " -I " + OS_CPU_LINUX_X86;
static { QP.build_P_deps(OBJDIR_AZLINUX_X86_CORE6,GCC_X86+" -M -o %dst %src0 "+INCLUDES_AZLINUX_X86_CORE+AZLINUX_X86_FLAGS_CORE+DEBUG_FLAGS); }
static final String INCLUDES_AZPROXIED_X86_CORE = INCLUDES +
" -I " + CPU_X86 + " -I " + OS_LINUX + INCLUDES_AZPROXIED + " -I " + OS_CPU_LINUX_X86;
static { QP.build_P_deps(OBJDIR_AZPROXIED_X86_CORE6,GCC_X86+" -M -o %dst %src0 "+INCLUDES_AZPROXIED_X86_CORE+AZPROXIED_X86_FLAGS_CORE+DEBUG_FLAGS); }
static final String INCLUDES_AZLINUX_X86_JIT = INCLUDES +
" -I " + CPU_X86 + " -I " + OS_LINUX + INCLUDES_AZLINUX + " -I " + OS_CPU_LINUX_X86;
static { QP.build_P_deps(OBJDIR_AZLINUX_X86_JIT6,GCC_X86+" -M -o %dst %src0 "+INCLUDES_AZLINUX_X86_JIT+AZLINUX_X86_FLAGS_JIT+DEBUG_FLAGS); }
static final String INCLUDES_AZPROXIED_X86_JIT = INCLUDES +
" -I " + CPU_X86 + " -I " + OS_LINUX + INCLUDES_AZPROXIED + " -I " + OS_CPU_LINUX_X86;
static { QP.build_P_deps(OBJDIR_AZPROXIED_X86_JIT6,GCC_X86+" -M -o %dst %src0 "+INCLUDES_AZPROXIED_X86_JIT+AZPROXIED_X86_FLAGS_JIT+DEBUG_FLAGS); }
// Compile & Link the ADLC
static final Q ADLC_DBG_OBJS [] = QC.gen_all(ADLC_CPPS, OBJDIR_ADLC_JIT6_TARGET,"adlc_g/",GCC_X86+" -c -g -o %dst -I "+ADLC+" -I "+OPTO+ AZLINUX_X86_FLAGS_JIT+ DEBUG_FLAGS);
static final Q ADLC_PRD_OBJS [] = QC.gen_all(ADLC_CPPS, OBJDIR_ADLC_JIT6_TARGET,"adlc/" ,GCC_X86+" -c -O2 -o %dst -I "+ADLC+" -I "+OPTO+ AZLINUX_X86_FLAGS_JIT+PRODUCT_FLAGS);
static final Q _opcodes_o = Q.FILES.get(OBJDIR_ADLC_JIT6_TARGET+"adlc/opcodes.o");
static final Q ADLC_DBG = new QL( OBJDIR_ADLC_JIT6_TARGET+"adlc_g/adlc_g",GCC_X86+" -g -o %dst %src",ADLC_DBG_OBJS );
static final Q ADLC_PRD = new QL( OBJDIR_ADLC_JIT6_TARGET+"adlc/adlc" ,GCC_X86+" -g -o %dst %src",ADLC_PRD_OBJS );
static final Q X86_AD = new Qcat( OBJDIR_ADLC_JIT6_TARGET+"adlc/linux_x86.ad", _x86_ad,_linux_x86_64_ad);
// Some sample file produced by the ADLC. Running the ADLC produces a slew
// of files, and we need to run it if any input changes. But most of the
// outputs will NOT change, so we'll do a further "did this file change"
// step. But we need some single produced file as the target of the ADLC
// (out of the 10 it makes) so we pick "$cpu.hpp". We need to run the ADLC
// if either the input AD files changed OR the ADLC itself changed.
static final Q ADLC_GX = new Qadlc(OBJDIR_ADLC_JIT6_TARGET+"adlc","/adGlobals_linux_x86.hpp", "./adlc linux_x86.ad -cad_x86_tmp.cpp -had_x86_tmp.hpp -aad_dfa_tmp.cpp", ADLC_PRD, X86_AD);
static final String ADF = OBJDIR_ADLC_JIT6_TARGET+"adlc/ad_x86";
static final Q X86_TMP_HPP = new Q(ADF+"_tmp.hpp");
static final Q X86_TMP_CPP = new Q(ADF+"_tmp.cpp" );
static final Q X86_TMP_CLONE_CPP = new Q(ADF+"_tmp_clone.cpp" );
static final Q X86_TMP_DFA_CPP = new Q(OBJDIR_ADLC_JIT6_TARGET+"adlc/ad_dfa_tmp.cpp");
static final Q X86_TMP_EXPAND_CPP = new Q(ADF+"_tmp_expand.cpp" );
static final Q X86_TMP_FORMAT_CPP = new Q(ADF+"_tmp_format.cpp" );
static final Q X86_TMP_GEN_CPP = new Q(ADF+"_tmp_gen.cpp" );
static final Q X86_TMP_MISC_CPP = new Q(ADF+"_tmp_misc.cpp" );
static final Q X86_TMP_PEEPHOLE_CPP= new Q(ADF+"_tmp_peephole.cpp");
static final Q X86_TMP_PIPELINE_CPP= new Q(ADF+"_tmp_pipeline.cpp");
// Now optionally copy each of the ADLC produced tmp files into a happy
// final file... if it changed. The goal is to update the time-stamps on
// the gen'd files ONLY if things changed. Typically, many files will not
// change for e.g. small encoding changes in the AD file. So if x86_tmp.cpp
// is the same as x86.cpp, then leave x86.cpp alone else copy x86_tmp.cpp
// into x86.cpp bumping the time stamp at the same time.
static final Q X86_HPP = new Qcmp_cp(OBJDIR_ADLC_JIT6_TARGET+"adlc/ad_pd.hpp",X86_TMP_HPP,ADLC_GX);
static final Q X86_CPP = new Qcmp_cp(ADF+".cpp" , X86_TMP_CPP ,ADLC_GX);
static final Q X86_CLONE_CPP = new Qcmp_cp(ADF+"_clone.cpp" , X86_TMP_CLONE_CPP ,ADLC_GX);
static final Q X86_DFA_CPP = new Qcmp_cp(ADF+"_dfa.cpp" , X86_TMP_DFA_CPP ,ADLC_GX);
static final Q X86_EXPAND_CPP = new Qcmp_cp(ADF+"_expand.cpp" , X86_TMP_EXPAND_CPP ,ADLC_GX);
static final Q X86_FORMAT_CPP = new Qcmp_cp(ADF+"_format.cpp" , X86_TMP_FORMAT_CPP ,ADLC_GX);
static final Q X86_GEN_CPP = new Qcmp_cp(ADF+"_gen.cpp" , X86_TMP_GEN_CPP ,ADLC_GX);
static final Q X86_MISC_CPP = new Qcmp_cp(ADF+"_misc.cpp" , X86_TMP_MISC_CPP ,ADLC_GX);
static final Q X86_PEEPHOLE_CPP= new Qcmp_cp(ADF+"_peephole.cpp", X86_TMP_PEEPHOLE_CPP,ADLC_GX);
static final Q X86_PIPELINE_CPP= new Qcmp_cp(ADF+"_pipeline.cpp", X86_TMP_PIPELINE_CPP,ADLC_GX);
static final Q X86_GLOBALS_HPP = new Qcmp_cp(OBJDIR_ADLC_JIT6_TARGET+"adlc/adGlobals_os_pd.hpp",ADLC_GX,ADLC_GX);
static void make_ad_deps(String adPP, Q adcpp ) {
Q AZLINUX = new QP( OBJDIR_AZLINUX_X86_JIT6+"incls/"+adPP+".PP",GCC_X86+" -M -o %dst %src0 "+ INCLUDES_AZLINUX_X86_JIT+ AZLINUX_X86_FLAGS_JIT+DEBUG_FLAGS,' ',adcpp);
Q AZPROXIED = new QP(OBJDIR_AZPROXIED_X86_JIT6+"incls/"+adPP+".PP",GCC_X86+" -M -o %dst %src0 "+INCLUDES_AZPROXIED_X86_JIT+AZPROXIED_X86_FLAGS_JIT+DEBUG_FLAGS,' ',adcpp);
}
static {
make_ad_deps("ad_x86" ,X86_CPP );
make_ad_deps("ad_x86_clone" ,X86_CLONE_CPP );
make_ad_deps("ad_x86_dfa" ,X86_DFA_CPP );
make_ad_deps("ad_x86_expand" ,X86_EXPAND_CPP );
make_ad_deps("ad_x86_format" ,X86_FORMAT_CPP );
make_ad_deps("ad_x86_gen" ,X86_GEN_CPP );
make_ad_deps("ad_x86_misc" ,X86_MISC_CPP );
make_ad_deps("ad_x86_peephole",X86_PEEPHOLE_CPP);
make_ad_deps("ad_x86_pipeline",X86_PIPELINE_CPP);
}
static final Q HOTSPOT_X86_JIT_CPPS[] = {
X86_CPP,
X86_CLONE_CPP,
X86_DFA_CPP,
X86_EXPAND_CPP,
X86_FORMAT_CPP,
X86_GEN_CPP,
X86_MISC_CPP,
X86_PEEPHOLE_CPP,
X86_PIPELINE_CPP,
_c1_CodeStubs_x86_cpp,
_c1_FrameMap_x86_cpp,
_c1_LinearScan_x86_cpp,
_c1_LIRAssembler_x86_cpp,
_c1_LIRGenerator_x86_cpp,
_c1_MacroAssembler_x86_cpp,
_c1_Runtime1_x86_cpp,
};
static Q[] append( Q[] ary, Q ... more ) {
Q[] qs = Arrays.copyOf(ary, ary.length+more.length);
System.arraycopy(more,0,qs,ary.length,more.length);
return qs;
}
// ------------------
// --- Building the AVM from libjvm.a
static final Q XLinker_whole = new QLinkerOption("-Xlinker --whole-archive");
static final Q XLinker_no_whole = new QLinkerOption("-Xlinker --no-whole-archive");
static final Q _libawt_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libawt_g.a" );
static final Q _libawt_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libawt.a" );
static final Q _libcmm_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libcmm_g.a" );
static final Q _libcmm_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libcmm.a" );
static final Q _libdcpr_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libdcpr_g.a" );
static final Q _libdcpr_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libdcpr.a" );
static final Q _libdt_socket_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libdt_socket_g.a");
static final Q _libdt_socket_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libdt_socket.a");
static final Q _libfdlibm_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libfdlibm_g.a");
static final Q _libfdlibm_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libfdlibm.a");
static final Q _libfontmanager_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libfontmanager_g.a");
static final Q _libfontmanager_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libfontmanager.a");
static final Q _libhprof_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libhprof_g.a" );
static final Q _libhprof_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libhprof.a" );
static final Q _libinstrument_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libinstrument_g.a" );
static final Q _libinstrument_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libinstrument.a" );
static final Q _libioser12_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libioser12_g.a" );
static final Q _libioser12_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libioser12.a" );
static final Q _libjaas_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libjaas_" + ((TARGET_OSN.equals("azlinux")) ? "unix" : TARGET_OSN) + "_g.a" );
static final Q _libjaas_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libjaas_" + ((TARGET_OSN.equals("azlinux")) ? "unix" : TARGET_OSN) + ".a" );
static final Q _libjava_crw_demo_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libjava_crw_demo_g.a");
static final Q _libjava_crw_demo_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libjava_crw_demo.a");
static final Q _libjava_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libjava_g.a");
static final Q _libjava_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libjava.a");
static final Q _libjdwp_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libjdwp_g.a" );
static final Q _libjdwp_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libjdwp.a" );
static final Q _libjli_dbg = new Q(SANDBOX_J2SE_LIB_DIR + ((TARGET_OSN.equals("azlinux")) ? "jli/" : "") + "libjli_g.a" );
static final Q _libjli_opt = new Q(SANDBOX_J2SE_LIB_DIR + ((TARGET_OSN.equals("azlinux")) ? "jli/" : "") + "libjli.a" );
static final Q _libjpeg_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libjpeg_g.a" );
static final Q _libjpeg_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libjpeg.a" );
static final Q _libjsound_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libjsound_g.a");
static final Q _libjsound_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libjsound.a");
static final Q _libmanagement_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libmanagement_g.a" );
static final Q _libmanagement_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libmanagement.a" );
static final Q _libmlib_image_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libmlib_image_g.a" );
static final Q _libmlib_image_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libmlib_image.a" );
static final Q _libnet_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libnet_g.a" );
static final Q _libnet_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libnet.a" );
static final Q _libnio_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libnio_g.a" );
static final Q _libnio_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libnio.a" );
static final Q _libnpt_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libnpt_g.a" );
static final Q _libnpt_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libnpt.a" );
static final Q _librmi_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "librmi_g.a" );
static final Q _librmi_opt = new Q(SANDBOX_J2SE_LIB_DIR + "librmi.a" );
static final Q _libsecurity_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libsecurity_g.a");
static final Q _libsecurity_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libsecurity.a");
static final Q _libunpack_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libunpack_g.a" );
static final Q _libunpack_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libunpack.a" );
static final Q _libverify_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libverify_g.a");
static final Q _libverify_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libverify.a");
static final Q _libzip_dbg = new Q(SANDBOX_J2SE_LIB_DIR + "libzip_g.a" );
static final Q _libzip_opt = new Q(SANDBOX_J2SE_LIB_DIR + "libzip.a" );
static final Q _libmawt_dbg = new Q(SANDBOX_J2SE_LIB_DIR + ((TARGET_OSN.equals("azproxied")) ? "headless" : "motif21") + "/libmawt_g.a");
static final Q _libmawt_opt = new Q(SANDBOX_J2SE_LIB_DIR + ((TARGET_OSN.equals("azproxied")) ? "headless" : "motif21") + "/libmawt.a");
static final Q _libavm_dbg = new Q(SANDBOX_LIB_DIR + "1.6/libavm_g.a");
static final Q _libavm_opt = new Q(SANDBOX_LIB_DIR + "1.6/libavm.a");
static final Q _libazti_dbg = new Q(SANDBOX_LIB_DIR + "1.6/libazti_g.a" );
static final Q _libazti_opt = new Q(SANDBOX_LIB_DIR + "1.6/libazti.a" );
static final Q _libazpr_dbg = new Q(SANDBOX_LIB_DIR + "libazpr_g.a" );
static final Q _libazpr_opt = new Q(SANDBOX_LIB_DIR + "libazpr.a" );
static final Q _libazprof_dbg = new Q(SANDBOX_LIB_DIR + "libazprof_g.a");
static final Q _libazprof_opt = new Q(SANDBOX_LIB_DIR + "libazprof.a");
static final Q _libcrypto_dbg = new Q(SANDBOX_LIB_DIR + "libcrypto_g.a");
static final Q _libcrypto_opt = new Q(SANDBOX_LIB_DIR + "libcrypto.a");
static final Q _libproxy_dbg = new Q(SANDBOX_LIB_DIR + "libproxy_g.a" );
static final Q _libproxy_opt = new Q(SANDBOX_LIB_DIR + "libproxy.a" );
static final Q _libregex_dbg = new Q(SANDBOX_LIB_DIR + "libregex_g.a" );
static final Q _libregex_opt = new Q(SANDBOX_LIB_DIR + "libregex.a" );
static final Q _librpc_dbg = new Q(SANDBOX_LIB_DIR + "librpc_g.a" );
static final Q _librpc_opt = new Q(SANDBOX_LIB_DIR + "librpc.a" );
static final Q _libssl_dbg = new Q(SANDBOX_LIB_DIR + "libssl_g.a" );
static final Q _libssl_opt = new Q(SANDBOX_LIB_DIR + "libssl.a" );
static final Q _libtrace_dbg = new Q(SANDBOX_LIB_DIR + "libtrace_g.a" );
static final Q _libtrace_opt = new Q(SANDBOX_LIB_DIR + "libtrace.a" );
static final Q _libtransport_dbg = new Q(SANDBOX_LIB_DIR + "libtransport_g.a");
static final Q _libtransport_opt = new Q(SANDBOX_LIB_DIR + "libtransport.a");
static final Q _libXm = new Q(SANDBOX_X11_LIB_DIR + "libXm.a");
static final Q _libXt = new Q(SANDBOX_X11_LIB_DIR + "libXt.a");
static final Q _libXext = new Q(SANDBOX_X11_LIB_DIR + "libXext.a");
static final Q _libXtst = new Q(SANDBOX_X11_LIB_DIR + "libXtst.a");
static final Q _libXmu = new Q(SANDBOX_X11_LIB_DIR + "libXmu.a");
static final Q _libX11 = new Q(SANDBOX_X11_LIB_DIR + "libX11.a");
static final Q _libSM = new Q(SANDBOX_X11_LIB_DIR + "libSM.a");
static final Q _libICE = new Q(SANDBOX_X11_LIB_DIR + "libICE.a");
static final Q _libregex_2 = new Q(SANDBOX_X11_LIB_DIR + "libregex.a");
static final Q _libfontconfig = new Q(SANDBOX_X11_LIB_DIR + "libfontconfig.a");
static final Q _libexpat = new Q(SANDBOX_X11_LIB_DIR + "libexpat.a");
static final Q _libfreetype = new Q(SANDBOX_X11_LIB_DIR + "libfreetype.a");
static final Q _libfdc_dbg = new Q(SANDBOX_LIB_DIR + "libfdc_g.a");
static final Q _libfdc_opt = new Q(SANDBOX_LIB_DIR + "libfdc.a");
static final Q _libos_dbg = new Q(SANDBOX_LIB_DIR + "libos_g.a" );
static final Q _libos_opt = new Q(SANDBOX_LIB_DIR + "libos.a" );
static final Q _libc = new Q(SANDBOX_LIB_DIR + "libc.a" );
// ---------------------
// --- Linux X86
static final Q _stubs_linux_cpp = new Q("src/os/linux/launcher/stubilicious.cpp");
// AZLINUX
// All .o files from all .cpp files
static final Q HOTSPOT_DBG_AZLINUX_X86_CORE_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZLINUX_X86_CORE6, "debug/",GCC_X86+" -c -g -o %dst "+INCLUDES_AZLINUX_X86_CORE+AZLINUX_X86_FLAGS_CORE+DEBUG_FLAGS, _jvmti_h, _jvmtiEnv_hpp);
static final Q HOTSPOT_FDG_AZLINUX_X86_CORE_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZLINUX_X86_CORE6,"fastdebug/",GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZLINUX_X86_CORE+AZLINUX_X86_FLAGS_CORE+FASTDEBUG_FLAGS, _jvmti_h, _jvmtiEnv_hpp);
static final Q HOTSPOT_OPT_AZLINUX_X86_CORE_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZLINUX_X86_CORE6,"optimized/",GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZLINUX_X86_CORE+AZLINUX_X86_FLAGS_CORE+OPTIMIZED_FLAGS, _jvmti_h, _jvmtiEnv_hpp);
static final Q HOTSPOT_PRD_AZLINUX_X86_CORE_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZLINUX_X86_CORE6,"product/" ,GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZLINUX_X86_CORE+AZLINUX_X86_FLAGS_CORE+PRODUCT_FLAGS, _jvmti_h, _jvmtiEnv_hpp);
static final Q HOTSPOT_DBG_AZLINUX_X86_JIT_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_JIT_CPPS,HOTSPOT_X86_JIT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZLINUX_X86_JIT6,"debug/",GCC_X86+" -c -g -o %dst "+INCLUDES_AZLINUX_X86_JIT+AZLINUX_X86_FLAGS_JIT+DEBUG_FLAGS, _jvmti_h, _jvmtiEnv_hpp, X86_GLOBALS_HPP, X86_HPP);
static final Q HOTSPOT_FDG_AZLINUX_X86_JIT_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_JIT_CPPS,HOTSPOT_X86_JIT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZLINUX_X86_JIT6,"fastdebug/",GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZLINUX_X86_JIT+AZLINUX_X86_FLAGS_JIT+FASTDEBUG_FLAGS, _jvmti_h, _jvmtiEnv_hpp, X86_GLOBALS_HPP, X86_HPP);
static final Q HOTSPOT_OPT_AZLINUX_X86_JIT_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_JIT_CPPS,HOTSPOT_X86_JIT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZLINUX_X86_JIT6,"optimized/",GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZLINUX_X86_JIT+AZLINUX_X86_FLAGS_JIT+OPTIMIZED_FLAGS, _jvmti_h, _jvmtiEnv_hpp, X86_GLOBALS_HPP, X86_HPP);
static final Q HOTSPOT_PRD_AZLINUX_X86_JIT_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_JIT_CPPS,HOTSPOT_X86_JIT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZLINUX_X86_JIT6,"product/" ,GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZLINUX_X86_JIT+AZLINUX_X86_FLAGS_JIT+PRODUCT_FLAGS, _jvmti_h, _jvmtiEnv_hpp, X86_GLOBALS_HPP, X86_HPP);
static final Q _stubs_azlinux_x86_core_o = new QS(OBJDIR_AZLINUX_X86_CORE6+"debug/stubilicious.o",GCC_X86+" -c -g -o %dst "+_stubs_linux_cpp._target+" "+INCLUDES_AZLINUX_X86_CORE+AZLINUX_X86_FLAGS_CORE+DEBUG_FLAGS,_stubs_linux_cpp);
static final Q _stubs_azlinux_x86_jit_o = new QS(OBJDIR_AZLINUX_X86_JIT6+"debug/stubilicious.o",GCC_X86+" -c -g -o %dst "+_stubs_linux_cpp._target+" "+INCLUDES_AZLINUX_X86_JIT+AZLINUX_X86_FLAGS_JIT+DEBUG_FLAGS,_stubs_linux_cpp);
static final Q HOTSPOT_DBG_AZLINUX_X86_CORE_OBJS2[] = append(HOTSPOT_DBG_AZLINUX_X86_CORE_OBJS,_stubs_azlinux_x86_core_o);
static final Q HOTSPOT_FDG_AZLINUX_X86_CORE_OBJS2[] = append(HOTSPOT_FDG_AZLINUX_X86_CORE_OBJS,_stubs_azlinux_x86_core_o);
static final Q HOTSPOT_OPT_AZLINUX_X86_CORE_OBJS2[] = append(HOTSPOT_OPT_AZLINUX_X86_CORE_OBJS,_stubs_azlinux_x86_core_o);
static final Q HOTSPOT_PRD_AZLINUX_X86_CORE_OBJS2[] = append(HOTSPOT_PRD_AZLINUX_X86_CORE_OBJS,_stubs_azlinux_x86_core_o);
static final Q HOTSPOT_DBG_AZLINUX_X86_JIT_OBJS2[] = append(HOTSPOT_DBG_AZLINUX_X86_JIT_OBJS ,_stubs_azlinux_x86_jit_o, _opcodes_o);
static final Q HOTSPOT_FDG_AZLINUX_X86_JIT_OBJS2[] = append(HOTSPOT_FDG_AZLINUX_X86_JIT_OBJS ,_stubs_azlinux_x86_jit_o, _opcodes_o);
static final Q HOTSPOT_OPT_AZLINUX_X86_JIT_OBJS2[] = append(HOTSPOT_OPT_AZLINUX_X86_JIT_OBJS ,_stubs_azlinux_x86_jit_o, _opcodes_o );
static final Q HOTSPOT_PRD_AZLINUX_X86_JIT_OBJS2[] = append(HOTSPOT_PRD_AZLINUX_X86_JIT_OBJS ,_stubs_azlinux_x86_jit_o, _opcodes_o );
// Build libjvm_g.a from all .o files
static final Q _libjvm_dbg_azlinux_x86_core = new QA(OBJDIR_AZLINUX_X86_CORE6+ "debug/libjvm_g.a", AR_X86 + " -r %dst %src",' ', HOTSPOT_DBG_AZLINUX_X86_CORE_OBJS2);
static final Q _libjvm_fdg_azlinux_x86_core = new QA(OBJDIR_AZLINUX_X86_CORE6+"fastdebug/libjvm_g.a", AR_X86 + " -r %dst %src",' ', HOTSPOT_FDG_AZLINUX_X86_CORE_OBJS2);
static final Q _libjvm_opt_azlinux_x86_core = new QA(OBJDIR_AZLINUX_X86_CORE6+"optimized/libjvm.a", AR_X86 + " -r %dst %src",' ', HOTSPOT_OPT_AZLINUX_X86_CORE_OBJS2);
static final Q _libjvm_prd_azlinux_x86_core = new QA(OBJDIR_AZLINUX_X86_CORE6+ "product/libjvm.a", AR_X86 + " -r %dst %src",' ', HOTSPOT_PRD_AZLINUX_X86_CORE_OBJS2);
static final Q _libjvm_dbg_azlinux_x86_jit = new QA(OBJDIR_AZLINUX_X86_JIT6 + "debug/libjvm_g.a", AR_X86 + " -r %dst %src",' ', HOTSPOT_DBG_AZLINUX_X86_JIT_OBJS2);
static final Q _libjvm_fdg_azlinux_x86_jit = new QA(OBJDIR_AZLINUX_X86_JIT6 +"fastdebug/libjvm_g.a", AR_X86 + " -r %dst %src",' ', HOTSPOT_FDG_AZLINUX_X86_JIT_OBJS2);
static final Q _libjvm_opt_azlinux_x86_jit = new QA(OBJDIR_AZLINUX_X86_JIT6 +"optimized/libjvm.a", AR_X86 + " -r %dst %src",' ', HOTSPOT_OPT_AZLINUX_X86_JIT_OBJS2);
static final Q _libjvm_prd_azlinux_x86_jit = new QA(OBJDIR_AZLINUX_X86_JIT6 + "product/libjvm.a", AR_X86 + " -r %dst %src",' ', HOTSPOT_PRD_AZLINUX_X86_JIT_OBJS2);
// Linux port does not use mawt, all public symbols are in libawt.so
static String AVX_LIB_DIR = SANDBOX + "/fromavx/fc12/lib";
static String LIB_DIRS =
"-L " + SANDBOX_LIB_DIR +
" -L " + SANDBOX_LIB_DIR + "/1.6" +
" -L " + AVX_LIB_DIR;
// FIXME - Need to add libazti libazprof and libazpr
static String LDLIBS = " -lpthread -lrt -ldl " + LIB_DIRS + " -z origin -Wl,-rpath -Wl,$ORIGIN/. -lazsys -lsysmisc -laznix ";
static String LDLIBS_G = " -lpthread -lrt -ldl " + LIB_DIRS + " -z origin -Wl,-rpath -Wl,$ORIGIN/. -lazsys_g -lsysmisc -laznix ";
// --- Building the AVM from libjvm.a
static final String PRE_LINK_CMD = GCC_X86+" -shared -rdynamic " + " -Wl,--verbose | sed -e '/^======/,/^======/!d' -e '/^======/d;s/0\\( + SIZEOF_HEADERS\\)/0x38400000\\1/' > %dst.lds ; ";
static final String LINK_CMD = "sh -c \" " + PRE_LINK_CMD + GCC_X86 + " -o %dst %src -shared -rdynamic " + LDLIBS + " -Wl,-T,%dst.lds ; \"";
static final String LINK_CMD_G = "sh -c \" " + PRE_LINK_CMD + GCC_X86 + " -o %dst %src -shared -rdynamic " + LDLIBS_G + " -Wl,-T,%dst.lds ; \"";
static final Q _avm_dbg_sym_azlinux_x86_core =
new QL(OBJDIR_AZLINUX_X86_CORE6+"debug/libjvm_g.so",
LINK_CMD_G,
' ',
XLinker_whole,
_libjvm_dbg_azlinux_x86_core, // 1st in the whole-archive section
XLinker_no_whole
);
static final Q _avm_dbg_azlinux_x86_core = QStripSign.make(OBJDIR_AZLINUX_X86_CORE6+"debug/libjvm_g.so.stripped",_avm_dbg_sym_azlinux_x86_core);
static final Q _avm_fdg_sym_azlinux_x86_core =
new QL(OBJDIR_AZLINUX_X86_CORE6+"fastdebug/libjvm_g.so",
LINK_CMD_G,
' ',
XLinker_whole,
_libjvm_fdg_azlinux_x86_core, // 1st in the whole-archive section
XLinker_no_whole
);
static final Q _avm_fdg_azlinux_x86_core = QStripSign.make(OBJDIR_AZLINUX_X86_CORE6+"fastdebug/libjvm_g.so.stripped",_avm_fdg_sym_azlinux_x86_core);
static final Q _avm_opt_sym_azlinux_x86_core =
new QL(OBJDIR_AZLINUX_X86_CORE6+"optimized/libjvm.so",
LINK_CMD,
' ',
XLinker_whole,
_libjvm_opt_azlinux_x86_core, // 1st in the whole-archive section
XLinker_no_whole
);
static final Q _avm_opt_azlinux_x86_core = QStripSign.make(OBJDIR_AZLINUX_X86_CORE6+"optimized/libjvm.so.stripped",_avm_opt_sym_azlinux_x86_core);
static final Q _avm_prd_sym_azlinux_x86_core =
new QL(OBJDIR_AZLINUX_X86_CORE6+"product/libjvm.so",
LINK_CMD,
' ',
XLinker_whole,
_libjvm_prd_azlinux_x86_core, // 1st in the whole-archive section
XLinker_no_whole
);
static final Q _avm_prd_azlinux_x86_core = QStripSign.make(OBJDIR_AZLINUX_X86_CORE6+"product/libjvm.so.stripped",_avm_prd_sym_azlinux_x86_core);
static final Q _avm_dbg_sym_azlinux_x86_jit =
new QL(OBJDIR_AZLINUX_X86_JIT6+"debug/libjvm_g.so",
LINK_CMD_G,
' ',
XLinker_whole,
_libjvm_dbg_azlinux_x86_jit, // 1st in the whole-archive section
XLinker_no_whole
);
static final Q _avm_dbg_azlinux_x86_jit = QStripSign.make(OBJDIR_AZLINUX_X86_JIT6+"debug/libjvm_g.so.stripped",_avm_dbg_sym_azlinux_x86_jit);
static final Q _avm_fdg_sym_azlinux_x86_jit =
new QL(OBJDIR_AZLINUX_X86_JIT6+"fastdebug/libjvm_g.so",
LINK_CMD_G,
' ',
XLinker_whole,
_libjvm_fdg_azlinux_x86_jit, // 1st in the whole-archive section
XLinker_no_whole
);
static final Q _avm_fdg_azlinux_x86_jit = QStripSign.make(OBJDIR_AZLINUX_X86_JIT6+"fastdebug/libjvm_g.so.stripped",_avm_fdg_sym_azlinux_x86_jit);
static final Q _avm_opt_sym_azlinux_x86_jit =
new QL(OBJDIR_AZLINUX_X86_JIT6+"optimized/libjvm.so",
LINK_CMD,
' ',
XLinker_whole,
_libjvm_opt_azlinux_x86_jit, // 1st in the whole-archive section
XLinker_no_whole
);
static final Q _avm_opt_azlinux_x86_jit = QStripSign.make(OBJDIR_AZLINUX_X86_JIT6+"optimized/libjvm.so.stripped",_avm_opt_sym_azlinux_x86_jit);
static final Q _avm_prd_sym_azlinux_x86_jit =
new QL(OBJDIR_AZLINUX_X86_JIT6+"product/libjvm.so",
LINK_CMD,
' ',
XLinker_whole,
_libjvm_prd_azlinux_x86_jit, // 1st in the whole-archive section
XLinker_no_whole
);
static final Q _avm_prd_azlinux_x86_jit = QStripSign.make(OBJDIR_AZLINUX_X86_JIT6+"product/libjvm.so.stripped",_avm_prd_sym_azlinux_x86_jit);
// AZPROXIED
// All .o files from all .cpp files
static final Q HOTSPOT_DBG_AZPROXIED_X86_CORE_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZPROXIED_X86_CORE6, "debug/",GCC_X86+" -c -g -o %dst "+INCLUDES_AZPROXIED_X86_CORE+AZPROXIED_X86_FLAGS_CORE+DEBUG_FLAGS, _jvmti_h, _jvmtiEnv_hpp);
static final Q HOTSPOT_FDG_AZPROXIED_X86_CORE_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZPROXIED_X86_CORE6,"fastdebug/",GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZPROXIED_X86_CORE+AZPROXIED_X86_FLAGS_CORE+FASTDEBUG_FLAGS, _jvmti_h, _jvmtiEnv_hpp);
static final Q HOTSPOT_OPT_AZPROXIED_X86_CORE_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZPROXIED_X86_CORE6,"optimized/",GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZPROXIED_X86_CORE+AZPROXIED_X86_FLAGS_CORE+OPTIMIZED_FLAGS, _jvmti_h, _jvmtiEnv_hpp);
static final Q HOTSPOT_PRD_AZPROXIED_X86_CORE_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZPROXIED_X86_CORE6,"product/" ,GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZPROXIED_X86_CORE+AZPROXIED_X86_FLAGS_CORE+PRODUCT_FLAGS, _jvmti_h, _jvmtiEnv_hpp);
static final Q HOTSPOT_DBG_AZPROXIED_X86_JIT_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_JIT_CPPS,HOTSPOT_X86_JIT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZPROXIED_X86_JIT6,"debug/",GCC_X86+" -c -g -o %dst "+INCLUDES_AZPROXIED_X86_JIT+AZPROXIED_X86_FLAGS_JIT+DEBUG_FLAGS, _jvmti_h, _jvmtiEnv_hpp, X86_GLOBALS_HPP, X86_HPP);
static final Q HOTSPOT_FDG_AZPROXIED_X86_JIT_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_JIT_CPPS,HOTSPOT_X86_JIT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZPROXIED_X86_JIT6,"fastdebug/",GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZPROXIED_X86_JIT+AZPROXIED_X86_FLAGS_JIT+FASTDEBUG_FLAGS, _jvmti_h, _jvmtiEnv_hpp, X86_GLOBALS_HPP, X86_HPP);
static final Q HOTSPOT_OPT_AZPROXIED_X86_JIT_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_JIT_CPPS,HOTSPOT_X86_JIT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZPROXIED_X86_JIT6,"optimized/",GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZPROXIED_X86_JIT+AZPROXIED_X86_FLAGS_JIT+OPTIMIZED_FLAGS, _jvmti_h, _jvmtiEnv_hpp, X86_GLOBALS_HPP, X86_HPP);
static final Q HOTSPOT_PRD_AZPROXIED_X86_JIT_OBJS[] = QC.gen_all(flatten_to_Q(HOTSPOT_CPPS,HOTSPOT_JIT_CPPS,HOTSPOT_X86_JIT_CPPS,HOTSPOT_X86_CPPS,HOTSPOT_LINUX_CPPS),OBJDIR_AZPROXIED_X86_JIT6,"product/" ,GCC_X86+" -c -g -O3 -fno-omit-frame-pointer -o %dst "+INCLUDES_AZPROXIED_X86_JIT+AZPROXIED_X86_FLAGS_JIT+PRODUCT_FLAGS, _jvmti_h, _jvmtiEnv_hpp, X86_GLOBALS_HPP, X86_HPP);
// --- Horrible porting layer
static final Q _stubs_azproxied_x86_core_o = new QS(OBJDIR_AZPROXIED_X86_CORE6+"debug/stubilicious.o",GCC_X86+" -c -g -o %dst "+_stubs_linux_cpp._target+" "+INCLUDES_AZPROXIED_X86_CORE+AZPROXIED_X86_FLAGS_CORE+DEBUG_FLAGS,_stubs_linux_cpp);
static final Q _stubs_azproxied_x86_jit_o = new QS(OBJDIR_AZPROXIED_X86_JIT6+"debug/stubilicious.o",GCC_X86+" -c -g -o %dst "+_stubs_linux_cpp._target+" "+INCLUDES_AZPROXIED_X86_JIT+AZPROXIED_X86_FLAGS_JIT+DEBUG_FLAGS,_stubs_linux_cpp);
static final Q HOTSPOT_DBG_AZPROXIED_X86_CORE_OBJS2[] = append(HOTSPOT_DBG_AZPROXIED_X86_CORE_OBJS,_stubs_azproxied_x86_core_o);
static final Q HOTSPOT_FDG_AZPROXIED_X86_CORE_OBJS2[] = append(HOTSPOT_FDG_AZPROXIED_X86_CORE_OBJS,_stubs_azproxied_x86_core_o);
static final Q HOTSPOT_OPT_AZPROXIED_X86_CORE_OBJS2[] = append(HOTSPOT_OPT_AZPROXIED_X86_CORE_OBJS,_stubs_azproxied_x86_core_o);
static final Q HOTSPOT_PRD_AZPROXIED_X86_CORE_OBJS2[] = append(HOTSPOT_PRD_AZPROXIED_X86_CORE_OBJS,_stubs_azproxied_x86_core_o);
static final Q HOTSPOT_DBG_AZPROXIED_X86_JIT_OBJS2 [] = append(HOTSPOT_DBG_AZPROXIED_X86_JIT_OBJS ,_stubs_azproxied_x86_jit_o , _opcodes_o);
static final Q HOTSPOT_FDG_AZPROXIED_X86_JIT_OBJS2 [] = append(HOTSPOT_FDG_AZPROXIED_X86_JIT_OBJS ,_stubs_azproxied_x86_jit_o , _opcodes_o);
static final Q HOTSPOT_OPT_AZPROXIED_X86_JIT_OBJS2 [] = append(HOTSPOT_OPT_AZPROXIED_X86_JIT_OBJS ,_stubs_azproxied_x86_jit_o , _opcodes_o);
static final Q HOTSPOT_PRD_AZPROXIED_X86_JIT_OBJS2 [] = append(HOTSPOT_PRD_AZPROXIED_X86_JIT_OBJS ,_stubs_azproxied_x86_jit_o , _opcodes_o);
// Build libjvm_g.a from all .o files
static final Q _libjvm_dbg_azproxied_x86_core = new QA(OBJDIR_AZPROXIED_X86_CORE6+ "debug/libjvm_g.a", AR_X86 + " -scrf %dst %src",' ', HOTSPOT_DBG_AZPROXIED_X86_CORE_OBJS2);
static final Q _libjvm_fdg_azproxied_x86_core = new QA(OBJDIR_AZPROXIED_X86_CORE6+"fastdebug/libjvm_g.a", AR_X86 + " -scrf %dst %src",' ', HOTSPOT_FDG_AZPROXIED_X86_CORE_OBJS2);
static final Q _libjvm_opt_azproxied_x86_core = new QA(OBJDIR_AZPROXIED_X86_CORE6+"optimized/libjvm.a", AR_X86 + " -scrf %dst %src",' ', HOTSPOT_OPT_AZPROXIED_X86_CORE_OBJS2);
static final Q _libjvm_prd_azproxied_x86_core = new QA(OBJDIR_AZPROXIED_X86_CORE6+"product/libjvm.a", AR_X86 + " -scrf %dst %src",' ', HOTSPOT_PRD_AZPROXIED_X86_CORE_OBJS2);
static final Q _libjvm_dbg_azproxied_x86_jit = new QA(OBJDIR_AZPROXIED_X86_JIT6 + "debug/libjvm_g.a", AR_X86 + " -scrf %dst %src",' ', HOTSPOT_DBG_AZPROXIED_X86_JIT_OBJS2);
static final Q _libjvm_fdg_azproxied_x86_jit = new QA(OBJDIR_AZPROXIED_X86_JIT6+"fastdebug/libjvm_g.a", AR_X86 + " -scrf %dst %src",' ', HOTSPOT_FDG_AZPROXIED_X86_JIT_OBJS2);
static final Q _libjvm_opt_azproxied_x86_jit = new QA(OBJDIR_AZPROXIED_X86_JIT6+"optimized/libjvm.a", AR_X86 + " -scrf %dst %src",' ', HOTSPOT_OPT_AZPROXIED_X86_JIT_OBJS2);
static final Q _libjvm_prd_azproxied_x86_jit = new QA(OBJDIR_AZPROXIED_X86_JIT6+"product/libjvm.a", AR_X86 + " -scrf %dst %src",' ', HOTSPOT_PRD_AZPROXIED_X86_JIT_OBJS2);
// Some things not in the libjvm.a
static final Q _main_azproxied_cpp = new Q("avm/src/main.cpp");
static final Q _main_azproxied_core_P = new QP(OBJDIR_AZPROXIED_X86_CORE6+"incls/main.PP",GCC_X86+" -M -o %dst %src0 "+INCLUDES_AZPROXIED_X86_CORE+AZPROXIED_X86_FLAGS_CORE+DEBUG_FLAGS,' ',_main_azproxied_cpp,_jvmti_h);
static final Q _main_azproxied_jit_P = new QP(OBJDIR_AZPROXIED_X86_JIT6+"incls/main.PP",GCC_X86+" -M -o %dst %src0 "+INCLUDES_AZPROXIED_X86_JIT+AZPROXIED_X86_FLAGS_JIT+DEBUG_FLAGS,' ',_main_azproxied_cpp,_jvmti_h);
static final Q _main_azproxied_x86_core_o = QC.gen(OBJDIR_AZPROXIED_X86_CORE6,"debug/",GCC_X86+" -c -g -o %dst "+_main_azproxied_cpp._target+" "+INCLUDES_AZPROXIED_X86_CORE+AZPROXIED_X86_FLAGS_CORE+DEBUG_FLAGS,"main",".PP");
static final Q _proxy_jdk_azproxied_x86_core_o = new QS(OBJDIR_AZPROXIED_X86_CORE6+"debug/proxy_jdk_version.o",GCC_X86+" -c -g -o %dst "+_proxy_jdk_version_c._target+" "+INCLUDES_AZPROXIED_X86_CORE+AZPROXIED_X86_FLAGS_CORE+DEBUG_FLAGS,_proxy_jdk_version_c);
static final Q _main_azproxied_x86_jit_o = QC.gen(OBJDIR_AZPROXIED_X86_JIT6,"debug/",GCC_X86+" -c -g -o %dst "+_main_azproxied_cpp._target+" "+INCLUDES_AZPROXIED_X86_JIT+AZPROXIED_X86_FLAGS_JIT+DEBUG_FLAGS,"main",".PP");
static final Q _proxy_jdk_azproxied_x86_jit_o = new QS(OBJDIR_AZPROXIED_X86_JIT6+"debug/proxy_jdk_version.o",GCC_X86+" -c -g -o %dst "+_proxy_jdk_version_c._target+" "+INCLUDES_AZPROXIED_X86_JIT+AZPROXIED_X86_FLAGS_JIT+DEBUG_FLAGS,_proxy_jdk_version_c);
static final Q[] _avm_dbg_azproxied_libs = {
_libawt_dbg, _libcmm_dbg, _libdcpr_dbg, _libdt_socket_dbg,
_libhprof_dbg, _libinstrument_dbg, _libioser12_dbg,
_libjaas_dbg, _libjava_crw_demo_dbg, _libjava_dbg, _libjdwp_dbg, _libjli_dbg,
_libjpeg_dbg, _libjsound_dbg, _libmanagement_dbg, _libmlib_image_dbg, _libnet_dbg,
_libnio_dbg, _libnpt_dbg, _librmi_dbg, _libsecurity_dbg, _libunpack_dbg,
_libverify_dbg, _libzip_dbg, _libmawt_dbg,
_libazpr_dbg, _libazprof_dbg, _libazti_dbg, _libcrypto_dbg,
_libproxy_dbg, _librpc_dbg, _libssl_dbg, _libtrace_dbg, _libtransport_dbg };
static final Q[] _avm_opt_azproxied_libs = {
_libawt_opt, _libcmm_opt, _libdcpr_opt, _libdt_socket_opt,
_libhprof_opt, _libinstrument_opt, _libioser12_opt,
_libjaas_opt, _libjava_crw_demo_opt, _libjava_opt, _libjdwp_opt, _libjli_opt,
_libjpeg_opt, _libjsound_opt, _libmanagement_opt, _libmlib_image_opt, _libnet_opt,
_libnio_opt, _libnpt_opt, _librmi_opt, _libsecurity_opt, _libunpack_opt,
_libverify_opt, _libzip_opt, _libmawt_opt,
_libazpr_opt, _libazprof_opt, _libazti_opt, _libcrypto_opt,
_libproxy_opt, _librpc_opt, _libssl_opt, _libtrace_opt, _libtransport_opt };
// --- Building the AVM from libjvm.a
static final Q _avm_dbg_sym_azproxied_x86_core =
new QL(OBJDIR_AZPROXIED_X86_CORE6+"debug/avm_debug.sym",
GCC_X86+" -o %dst %src -rdynamic -lpthread -lrt -ldl",
' ', _main_azproxied_x86_core_o,_proxy_jdk_azproxied_x86_core_o,
XLinker_whole,
_libjvm_dbg_azproxied_x86_core, // 1st in the whole-archive section
_avm_dbg_azproxied_libs,
XLinker_no_whole,
_libfdlibm_dbg,
_libfdc_dbg,
_libfontmanager_dbg,
_libos_dbg,
_libregex_dbg
);
static final Q _avm_dbg_azproxied_x86_core = QStripSign.make(OBJDIR_AZPROXIED_X86_CORE6+"debug/avm_debug",_avm_dbg_sym_azproxied_x86_core);
static final Q _avm_fdg_sym_azproxied_x86_core =
new QL(OBJDIR_AZPROXIED_X86_CORE6+"fastdebug/avm_fastdebug.sym",
GCC_X86+" -o %dst %src -rdynamic -lpthread -lrt -ldl",
' ', _main_azproxied_x86_core_o,_proxy_jdk_azproxied_x86_core_o,
XLinker_whole,
_libjvm_fdg_azproxied_x86_core, // 1st in the whole-archive section
_avm_dbg_azproxied_libs,
XLinker_no_whole,
_libfdlibm_dbg,
_libfdc_dbg,
_libfontmanager_dbg,
_libos_dbg,
_libregex_dbg
);
static final Q _avm_fdg_azproxied_x86_core = QStripSign.make(OBJDIR_AZPROXIED_X86_CORE6+"fastdebug/avm_fastdebug",_avm_fdg_sym_azproxied_x86_core);
static final Q _avm_opt_sym_azproxied_x86_core =
new QL(OBJDIR_AZPROXIED_X86_CORE6+"optimized/avm_optimized.sym",
GCC_X86+" -o %dst %src -rdynamic -lpthread -lrt -ldl",
' ', _main_azproxied_x86_core_o,_proxy_jdk_azproxied_x86_core_o,
XLinker_whole,
_libjvm_opt_azproxied_x86_core, // 1st in the whole-archive section
_avm_opt_azproxied_libs,
XLinker_no_whole,
_libfdlibm_opt,
_libfdc_opt,
_libfontmanager_opt,
_libos_opt,
_libregex_opt
);
static final Q _avm_opt_azproxied_x86_core = QStripSign.make(OBJDIR_AZPROXIED_X86_CORE6+"optimized/avm_optimized",_avm_opt_sym_azproxied_x86_core);
static final Q _avm_prd_sym_azproxied_x86_core =
new QL(OBJDIR_AZPROXIED_X86_CORE6+"product/avm_product.sym",
GCC_X86+" -o %dst %src -rdynamic -lpthread -lrt -ldl",
' ', _main_azproxied_x86_core_o,_proxy_jdk_azproxied_x86_core_o,
XLinker_whole,
_libjvm_prd_azproxied_x86_core, // 1st in the whole-archive section
_avm_opt_azproxied_libs,
XLinker_no_whole,
_libfdlibm_opt,
_libfdc_opt,
_libfontmanager_opt,
_libos_opt,
_libregex_opt
);
static final Q _avm_prd_azproxied_x86_core = QStripSign.make(OBJDIR_AZPROXIED_X86_CORE6+"product/avm_product",_avm_prd_sym_azproxied_x86_core);
static final Q _avm_dbg_sym_azproxied_x86_jit =
new QL(OBJDIR_AZPROXIED_X86_JIT6+"debug/avm_debug.sym",
GCC_X86+" -o %dst %src -rdynamic -lpthread -lrt -ldl",
' ', _main_azproxied_x86_jit_o,_proxy_jdk_azproxied_x86_jit_o,
XLinker_whole,
_libjvm_dbg_azproxied_x86_jit, // 1st in the whole-archive section
_avm_dbg_azproxied_libs,
XLinker_no_whole,
_libfdlibm_dbg,
_libfdc_dbg,
_libfontmanager_dbg,
_libos_dbg,
_libregex_dbg
);
static final Q _avm_dbg_azproxied_x86_jit = QStripSign.make(OBJDIR_AZPROXIED_X86_JIT6+"debug/avm_debug",_avm_dbg_sym_azproxied_x86_jit);
static final Q _avm_fdg_sym_azproxied_x86_jit =
new QL(OBJDIR_AZPROXIED_X86_JIT6+"fastdebug/avm_fastdebug.sym",
GCC_X86+" -o %dst %src -rdynamic -lpthread -lrt -ldl",
' ', _main_azproxied_x86_jit_o,_proxy_jdk_azproxied_x86_jit_o,
XLinker_whole,
_libjvm_fdg_azproxied_x86_jit, // 1st in the whole-archive section
_avm_dbg_azproxied_libs,
XLinker_no_whole,
_libfdlibm_dbg,
_libfdc_dbg,
_libfontmanager_dbg,
_libos_dbg,
_libregex_dbg
);
static final Q _avm_fdg_azproxied_x86_jit = QStripSign.make(OBJDIR_AZPROXIED_X86_JIT6+"fastdebug/avm_fastdebug",_avm_fdg_sym_azproxied_x86_jit);
static final Q _avm_opt_sym_azproxied_x86_jit =
new QL(OBJDIR_AZPROXIED_X86_JIT6+"optimized/avm_optimized.sym",
GCC_X86+" -o %dst %src -rdynamic -lpthread -lrt -ldl",
' ', _main_azproxied_x86_jit_o,_proxy_jdk_azproxied_x86_jit_o,
XLinker_whole,
_libjvm_opt_azproxied_x86_jit, // 1st in the whole-archive section
_avm_opt_azproxied_libs,
XLinker_no_whole,
_libfdlibm_opt,
_libfdc_opt,
_libfontmanager_opt,
_libos_opt,
_libregex_opt
);
static final Q _avm_opt_azproxied_x86_jit = QStripSign.make(OBJDIR_AZPROXIED_X86_JIT6+"optimized/avm_optimized",_avm_opt_sym_azproxied_x86_jit);
static final Q _avm_prd_sym_azproxied_x86_jit =
new QL(OBJDIR_AZPROXIED_X86_JIT6+"product/avm_product.sym",
GCC_X86+" -o %dst %src -rdynamic -lpthread -lrt -ldl",
' ', _main_azproxied_x86_jit_o,_proxy_jdk_azproxied_x86_jit_o,
XLinker_whole,
_libjvm_prd_azproxied_x86_jit, // 1st in the whole-archive section
_avm_opt_azproxied_libs,
XLinker_no_whole,
_libfdlibm_opt,
_libfdc_opt,
_libfontmanager_opt,
_libos_opt,
_libregex_opt
);
static final Q _avm_prd_azproxied_x86_jit = QStripSign.make(OBJDIR_AZPROXIED_X86_JIT6+"product/avm_product",_avm_prd_sym_azproxied_x86_jit);
}