.mx.jvmci/mx_jvmci.py

Print this page




 660         # mx.findclass can be mistaken, don't give up yet
 661         candidates = args
 662 
 663     run_vm(['-javaagent:' + joljar, '-cp', os.pathsep.join([mx.classpath(), joljar]), "org.openjdk.jol.MainObjectInternals"] + candidates)
 664 
 665 class JVMCIArchiveParticipant:
 666     def __init__(self, dist):
 667         self.dist = dist
 668 
 669     def __opened__(self, arc, srcArc, services):
 670         self.services = services
 671         self.arc = arc
 672 
 673     def __add__(self, arcname, contents):
 674         if arcname.startswith('META-INF/jvmci.providers/'):
 675             provider = arcname[len('META-INF/jvmci.providers/'):]
 676             for service in contents.strip().split(os.linesep):
 677                 assert service
 678                 self.services.setdefault(service, []).append(provider)
 679             return True
 680         elif arcname.endswith('_OptionDescriptors.class'):
 681             # Need to create service files for the providers of the
 682             # jdk.vm.ci.options.Options service created by
 683             # jdk.vm.ci.options.processor.OptionProcessor.
 684             provider = arcname[:-len('.class'):].replace('/', '.')
 685             self.services.setdefault('jdk.vm.ci.options.OptionDescriptors', []).append(provider)
 686         return False
 687 
 688     def __addsrc__(self, arcname, contents):
 689         return False
 690 
 691     def __closing__(self):
 692         pass
 693 
 694 def _get_openjdk_os():
 695     # See: common/autoconf/platform.m4
 696     os = mx.get_os()
 697     if 'darwin' in os:
 698         os = 'macosx'
 699     elif 'linux' in os:
 700         os = 'linux'
 701     elif 'solaris' in os:
 702         os = 'solaris'
 703     elif 'cygwin' in os or 'mingw' in os:
 704         os = 'windows'
 705     return os


 744     name = '{}_{}_{}'.format(os, arch, buildname)
 745     return join(_get_jdk_build_dir(debugLevel=debugLevel), 'hotspot', name)
 746 
 747 def add_bootclasspath_prepend(dep):
 748     assert isinstance(dep, mx.ClasspathDependency)
 749     _jvmci_bootclasspath_prepends.append(dep)
 750 
 751 class JVMCI9JDKConfig(mx.JDKConfig):
 752     def __init__(self, debugLevel):
 753         self.debugLevel = debugLevel
 754         jdkBuildDir = _get_jdk_build_dir(debugLevel)
 755         jdkDir = join(jdkBuildDir, 'images', 'jdk') if mx.get_opts().use_jdk_image else join(jdkBuildDir, 'jdk')
 756         mx.JDKConfig.__init__(self, jdkDir, tag=_JVMCI_JDK_TAG)
 757 
 758     def parseVmArgs(self, args, addDefaultArgs=True):
 759         args = mx.expand_project_in_args(args, insitu=False)
 760         jacocoArgs = mx_gate.get_jacoco_agent_args()
 761         if jacocoArgs:
 762             args = jacocoArgs + args
 763 
 764         # Support for -G: options
 765         def translateGOption(arg):
 766             if arg.startswith('-G:+'):
 767                 if '=' in arg:
 768                     mx.abort('Mixing + and = in -G: option specification: ' + arg)
 769                 arg = '-Djvmci.option.' + arg[len('-G:+'):] + '=true'
 770             elif arg.startswith('-G:-'):
 771                 if '=' in arg:
 772                     mx.abort('Mixing - and = in -G: option specification: ' + arg)
 773                 arg = '-Djvmci.option.' + arg[len('-G:+'):] + '=false'
 774             elif arg.startswith('-G:'):
 775                 arg = '-Djvmci.option.' + arg[len('-G:'):]
 776             return arg
 777         args = map(translateGOption, args)
 778 
 779         args = ['-Xbootclasspath/p:' + dep.classpath_repr() for dep in _jvmci_bootclasspath_prepends] + args
 780 
 781         jvmciModeArgs = _jvmciModes[_vm.jvmciMode]
 782         if jvmciModeArgs:
 783             bcpDeps = [jdkDist.dist() for jdkDist in jdkDeployedDists]
 784             if bcpDeps:
 785                 args = ['-Xbootclasspath/p:' + os.pathsep.join([d.classpath_repr() for d in bcpDeps])] + args
 786 
 787         # Set the default JVMCI compiler
 788         for jdkDist in reversed(jdkDeployedDists):
 789             assert isinstance(jdkDist, JvmciJDKDeployedDist), jdkDist
 790             if jdkDist._compilers:
 791                 jvmciCompiler = jdkDist._compilers[-1]
 792                 args = ['-Djvmci.compiler=' + jvmciCompiler] + args
 793                 break
 794 
 795         if '-version' in args:
 796             ignoredArgs = args[args.index('-version') + 1:]
 797             if  len(ignoredArgs) > 0:
 798                 mx.log("Warning: The following options will be ignored by the vm because they come after the '-version' argument: " + ' '.join(ignoredArgs))




 660         # mx.findclass can be mistaken, don't give up yet
 661         candidates = args
 662 
 663     run_vm(['-javaagent:' + joljar, '-cp', os.pathsep.join([mx.classpath(), joljar]), "org.openjdk.jol.MainObjectInternals"] + candidates)
 664 
 665 class JVMCIArchiveParticipant:
 666     def __init__(self, dist):
 667         self.dist = dist
 668 
 669     def __opened__(self, arc, srcArc, services):
 670         self.services = services
 671         self.arc = arc
 672 
 673     def __add__(self, arcname, contents):
 674         if arcname.startswith('META-INF/jvmci.providers/'):
 675             provider = arcname[len('META-INF/jvmci.providers/'):]
 676             for service in contents.strip().split(os.linesep):
 677                 assert service
 678                 self.services.setdefault(service, []).append(provider)
 679             return True






 680         return False
 681 
 682     def __addsrc__(self, arcname, contents):
 683         return False
 684 
 685     def __closing__(self):
 686         pass
 687 
 688 def _get_openjdk_os():
 689     # See: common/autoconf/platform.m4
 690     os = mx.get_os()
 691     if 'darwin' in os:
 692         os = 'macosx'
 693     elif 'linux' in os:
 694         os = 'linux'
 695     elif 'solaris' in os:
 696         os = 'solaris'
 697     elif 'cygwin' in os or 'mingw' in os:
 698         os = 'windows'
 699     return os


 738     name = '{}_{}_{}'.format(os, arch, buildname)
 739     return join(_get_jdk_build_dir(debugLevel=debugLevel), 'hotspot', name)
 740 
 741 def add_bootclasspath_prepend(dep):
 742     assert isinstance(dep, mx.ClasspathDependency)
 743     _jvmci_bootclasspath_prepends.append(dep)
 744 
 745 class JVMCI9JDKConfig(mx.JDKConfig):
 746     def __init__(self, debugLevel):
 747         self.debugLevel = debugLevel
 748         jdkBuildDir = _get_jdk_build_dir(debugLevel)
 749         jdkDir = join(jdkBuildDir, 'images', 'jdk') if mx.get_opts().use_jdk_image else join(jdkBuildDir, 'jdk')
 750         mx.JDKConfig.__init__(self, jdkDir, tag=_JVMCI_JDK_TAG)
 751 
 752     def parseVmArgs(self, args, addDefaultArgs=True):
 753         args = mx.expand_project_in_args(args, insitu=False)
 754         jacocoArgs = mx_gate.get_jacoco_agent_args()
 755         if jacocoArgs:
 756             args = jacocoArgs + args
 757 















 758         args = ['-Xbootclasspath/p:' + dep.classpath_repr() for dep in _jvmci_bootclasspath_prepends] + args
 759 
 760         jvmciModeArgs = _jvmciModes[_vm.jvmciMode]
 761         if jvmciModeArgs:
 762             bcpDeps = [jdkDist.dist() for jdkDist in jdkDeployedDists]
 763             if bcpDeps:
 764                 args = ['-Xbootclasspath/p:' + os.pathsep.join([d.classpath_repr() for d in bcpDeps])] + args
 765 
 766         # Set the default JVMCI compiler
 767         for jdkDist in reversed(jdkDeployedDists):
 768             assert isinstance(jdkDist, JvmciJDKDeployedDist), jdkDist
 769             if jdkDist._compilers:
 770                 jvmciCompiler = jdkDist._compilers[-1]
 771                 args = ['-Djvmci.compiler=' + jvmciCompiler] + args
 772                 break
 773 
 774         if '-version' in args:
 775             ignoredArgs = args[args.index('-version') + 1:]
 776             if  len(ignoredArgs) > 0:
 777                 mx.log("Warning: The following options will be ignored by the vm because they come after the '-version' argument: " + ' '.join(ignoredArgs))