Mercurial > hg > truffle
comparison mx/commands.py @ 3722:7c5524a4e86e
Unified the way a specific build of the VM is chosen for any mx command that runs the GraalVM.
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Fri, 16 Dec 2011 16:33:42 +0100 |
parents | 71b1204a74b4 |
children | 4e3851bab8d0 |
comparison
equal
deleted
inserted
replaced
3721:71b1204a74b4 | 3722:7c5524a4e86e |
---|---|
76 env.log('--------- ' + a + ' ------------') | 76 env.log('--------- ' + a + ' ------------') |
77 project, mainClass = config | 77 project, mainClass = config |
78 run_example(env, verbose, project, mainClass) | 78 run_example(env, verbose, project, mainClass) |
79 | 79 |
80 def dacapo(env, args): | 80 def dacapo(env, args): |
81 """run a DaCapo benchmark""" | 81 """run one or all DaCapo benchmarks""" |
82 | 82 |
83 benchmarks = { | 83 benchmarks = { |
84 'avrora': ['-n', '5'], | 84 'avrora': ['-n', '5'], |
85 'batik': ['-n', '5'], | 85 'batik': ['-n', '5'], |
86 'eclipse': ['-n', '5'], | 86 'eclipse': ['-n', '5'], |
95 'tradebeans': ['-n', '5'], | 95 'tradebeans': ['-n', '5'], |
96 'tradesoap': ['-n', '5'], | 96 'tradesoap': ['-n', '5'], |
97 'xalan': ['-n', '5'], | 97 'xalan': ['-n', '5'], |
98 } | 98 } |
99 | 99 |
100 if len(args) == 0: | 100 dacapo = env.check_get_env('DACAPO_CP') |
101 args = args[0:] | 101 if not isfile(dacapo) or not dacapo.endswith('.jar'): |
102 for bm in benchmarks: | 102 env.abort('Specified DaCapo jar file does not exist or is not a jar file: ' + dacapo) |
103 run_dacapo(env, args + ['Harness', '-n', '2'] + [bm]) | 103 |
104 return | 104 vmOpts = ['-Xms1g', '-Xmx2g', '-esa', '-cp', dacapo] |
105 else: | 105 |
106 runs = dict() | |
107 while len(args) != 0 and not args[0].startswith('-'): | |
106 bm = args[0] | 108 bm = args[0] |
107 config = benchmarks.get(bm) | 109 del args[0] |
110 config = benchmarks.get(bm) | |
108 if (config is None): | 111 if (config is None): |
109 env.abort('unknown benchmark: ' + bm + '\nselect one of: ' + str(benchmarks.keys())) | 112 env.abort('unknown benchmark: ' + bm + '\nselect one of: ' + str(benchmarks.keys())) |
110 args = args[1:] | 113 runs[bm] = config |
111 return run_dacapo(env, args + ['Harness'] + config + [bm]) | 114 |
115 if len(runs) == 0: | |
116 runs = benchmarks | |
117 | |
118 vmOpts += args | |
119 for bm in runs: | |
120 config = benchmarks.get(bm) | |
121 vm(env, vmOpts + ['Harness'] + config + [bm]) | |
112 | 122 |
113 def tests(env, args): | 123 def tests(env, args): |
114 """run a selection of the Maxine JTT tests in Graal""" | 124 """run a selection of the Maxine JTT tests in Graal""" |
115 | 125 |
116 maxine = env.check_get_env('MAXINE_HOME') | 126 maxine = env.check_get_env('MAXINE_HOME') |
157 env.abort('Unknown build type: ' + build) | 167 env.abort('Unknown build type: ' + build) |
158 | 168 |
159 def make(env, args): | 169 def make(env, args): |
160 """builds the GraalVM binary | 170 """builds the GraalVM binary |
161 | 171 |
162 The optional argument specifies what type of VM to build. | 172 The optional argument specifies what type of VM to build.""" |
163 """ | |
164 | 173 |
165 def fix_jvm_cfg(env, jdk): | 174 def fix_jvm_cfg(env, jdk): |
166 jvmCfg = join(jdk, 'jre', 'lib', 'amd64', 'jvm.cfg') | 175 jvmCfg = join(jdk, 'jre', 'lib', 'amd64', 'jvm.cfg') |
167 found = False | 176 found = False |
168 if not exists(jvmCfg): | 177 if not exists(jvmCfg): |
196 | 205 |
197 os.environ.update(ARCH_DATA_MODEL='64', LANG='C', HOTSPOT_BUILD_JOBS='3', ALT_BOOTDIR=jdk7, INSTALL='y') | 206 os.environ.update(ARCH_DATA_MODEL='64', LANG='C', HOTSPOT_BUILD_JOBS='3', ALT_BOOTDIR=jdk7, INSTALL='y') |
198 env.run([env.gmake_cmd(), build + 'graal'], cwd=join(graal_home, 'make'), err=filterXusage) | 207 env.run([env.gmake_cmd(), build + 'graal'], cwd=join(graal_home, 'make'), err=filterXusage) |
199 | 208 |
200 def vm(env, args, vm='-graal'): | 209 def vm(env, args, vm='-graal'): |
201 """run the GraalVM | 210 """run the GraalVM""" |
202 | 211 |
203 The optional leading argument specifies an alternative to the | 212 build = env.vmbuild |
204 product build should be run: @g = debug, @f = fastdebug, @o = optimized""" | |
205 | |
206 build = 'product' | |
207 buildOpts = { | |
208 '@g': 'debug', | |
209 '@f': 'fastdebug', | |
210 '@o': 'optimized' | |
211 } | |
212 | |
213 if len(args) and args[0] in buildOpts.iterkeys(): | |
214 build = buildOpts[args[0]] | |
215 del args[0] | |
216 | |
217 if env.java_dbg: | 213 if env.java_dbg: |
218 args = ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000'] + args | 214 args = ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000'] + args |
219 os.environ['MAXINE'] = env.check_get_env('GRAAL_HOME') | 215 os.environ['MAXINE'] = env.check_get_env('GRAAL_HOME') |
220 exe = join(_jdk7(env, build), 'bin', env.exe_suffix('java')) | 216 exe = join(_jdk7(env, build), 'bin', env.exe_suffix('java')) |
221 return env.run([exe, vm] + args) | 217 return env.run([exe, vm] + args) |
222 | 218 |
223 def mx_init(env): | 219 def mx_init(env): |
220 env.vmbuild = 'product' | |
221 env.add_argument('--product', action='store_const', dest='vmbuild', const='product', help='select the product VM') | |
222 env.add_argument('--debug', action='store_const', dest='vmbuild', const='debug', help='select the debug VM') | |
223 env.add_argument('--fastdebug', action='store_const', dest='vmbuild', const='fastdebug', help='select the fast debug VM') | |
224 env.add_argument('--optimized', action='store_const', dest='vmbuild', const='optimized', help='select the optimized VM') | |
224 commands = { | 225 commands = { |
225 'dacapo': [dacapo, 'benchmark [VM options]'], | 226 'dacapo': [dacapo, '[benchmark] [VM options]'], |
226 'example': [example, '[-v] example names...'], | 227 'example': [example, '[-v] example names...'], |
227 'clean': [clean, ''], | 228 'clean': [clean, ''], |
228 'make': [make, '[product|debug|fastdebug|optimized]'], | 229 'make': [make, '[product|debug|fastdebug|optimized]'], |
229 'tests': [tests, ''], | 230 'tests': [tests, ''], |
230 'vm': [vm, '[@g|@f|@o] [-options] class [args...]'], | 231 'vm': [vm, '[-options] class [args...]'], |
231 } | 232 } |
232 env.commands.update(commands) | 233 env.commands.update(commands) |
233 | |
234 def run_dacapo(env, args): | |
235 dacapo = env.check_get_env('DACAPO_CP') | |
236 if not isfile(dacapo) or not dacapo.endswith('.jar'): | |
237 env.abort('Specified DaCapo jar file does not exist or is not a jar file: ' + dacapo) | |
238 return vm(env, ['-Xms1g', '-Xmx2g', '-esa', '-cp', dacapo] + args) |