#!/usr/bin/env python import os from os import environ, mkdir from os.path import abspath, dirname, isdir import string import sys from glob import glob args = sys.argv[1:] j_home = environ["JAVA_HOME"] if not j_home: raise "ERROR: $JAVA_HOME not defined" prefix = dirname(sys.argv[0]) adaptj_home = abspath(os.path.join(prefix, "../../adaptj_aspects/AdaptJ-0.1beta7-rc2")) libdir = abspath(os.path.join(prefix, "../lib")) ldlibdir = os.path.join(adaptj_home, "ldlib") specdir = os.path.join(adaptj_home, "spec") my_cp = os.path.join(j_home, "jre/lib/rt.jar:") my_cp += os.path.join(libdir, "aspectjrt.jar:") for jar in glob(adaptj_home + "/lib/*.jar"): my_cp += jar + ":" my_args = [] tracedir = "." benchmark_name = "" i = 0 while i < len(args): if args[i] in ("-cp", "-classpath"): i = i + 1 my_cp += args[i] elif args[i] in ("-tracedir",): i = i + 1 tracedir = abspath(args[i]) elif args[i] in ("-name",): i = i + 1 benchmark_name = args[i] else: my_args.append(args[i]) i = i + 1 if my_cp: cp = list(my_cp.split(':')) try: idx = cp.index("$CLASSPATH") if idx >= 0: del cp[idx] except ValueError: pass cp = filter(lambda x: x, cp) my_cp = string.join(cp, ':') + ':' else: my_cp = '' if not isdir(tracedir): raise "ERROR: trace directory " + tracedir + " does not exist." if tracedir is not ".": tracedir = os.path.join(tracedir, benchmark_name) tracedir = abspath(tracedir) if not isdir(tracedir): mkdir(tracedir) environ["CLASSPATH"] = my_cp environ["LD_LIBRARY_PATH"] = ldlibdir os.system(os.path.join(j_home, "bin/java") + ' -Xint -XX:+EnableJVMPIInstructionStartEvent' + ' -XrunAdaptJ:specFile=' + specdir + '/AdaptJ.spec' + ',split=1g' + ',file=' + tracedir + '/AdaptJ.dat' + ' ' + string.join(my_args))