Mercurial > hg > truffle
diff mx/mx_graal.py @ 15870:fe608a56e3f7
made HotSpotOptions processing faster by removing use of service loader in VM startup and only doing work for options specified on the command line
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Fri, 23 May 2014 19:36:34 +0200 |
parents | 283c8d31c560 |
children | 6dcf8ab4ad86 |
line wrap: on
line diff
--- a/mx/mx_graal.py Fri May 23 17:47:44 2014 +0200 +++ b/mx/mx_graal.py Fri May 23 19:36:34 2014 +0200 @@ -154,7 +154,7 @@ def handleRemoveReadonly(func, path, exc): excvalue = exc[1] if mx.get_os() == 'windows' and func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES: - os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) # 0777 + os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) # 0777 func(path) else: raise @@ -212,7 +212,7 @@ def _genFileName(archivtype, middle): idPrefix = infos['revision'] + '_' idSuffix = '.tar.gz' - return join(_graal_home, "graalvm_" + archivtype + "_" + idPrefix + middle + idSuffix) + return join(_graal_home, "graalvm_" + archivtype + "_" + idPrefix + middle + idSuffix) def _genFileArchPlatformName(archivtype, middle): return _genFileName(archivtype, infos['platform'] + '_' + infos['architecture'] + '_' + middle) @@ -484,8 +484,34 @@ if exists(toDelete): os.unlink(toDelete) +def _update_HotSpotOptions_inline_hpp(graalJar): + p = mx.project('com.oracle.graal.hotspot') + mainClass = 'com.oracle.graal.hotspot.HotSpotOptionsLoader' + assert exists(join(p.source_dirs()[0], mainClass.replace('.', os.sep) + '.java')) + hsSrcGenDir = join(p.source_gen_dir(), 'hotspot') + if not exists(hsSrcGenDir): + os.makedirs(hsSrcGenDir) + path = join(hsSrcGenDir, 'HotSpotOptions.inline.hpp') + fd, tmp = tempfile.mkstemp(suffix='', prefix='HotSpotOptions.inline.hpp', dir=hsSrcGenDir) + os.close(fd) + try: + retcode = mx.run_java(['-cp', graalJar, mainClass, tmp], nonZeroIsFatal=False) + if retcode != 0: + # Suppress the error if it's because the utility class isn't compiled yet + with zipfile.ZipFile(graalJar, 'r') as zf: + mainClassFile = mainClass.replace('.', '/') + '.class' + if mainClassFile not in zf.namelist(): + return + mx.abort(retcode) + with open(tmp) as fp: + content = fp.read() + mx.update_file(path, content) + finally: + os.remove(tmp) + def _installGraalJarInJdks(graalDist): graalJar = graalDist.path + _update_HotSpotOptions_inline_hpp(graalJar) jdks = _jdksDir() if exists(jdks):