From aad84026d7c5dc10b877bec263f4456a31584772 Mon Sep 17 00:00:00 2001 From: Bruce Forstall Date: Tue, 22 Nov 2016 16:42:57 -0800 Subject: [PATCH] Make RyuJIT/x86 the default x86 JIT JIT32 becomes compatjit.dll and RyuJIT LEGACY_BACKEND becomes legacyjit.dll (and is an altjit). If JIT32 is not being built, then RyuJIT LEGACY_BACKEND becomes compatjit.dll and is a normal jit (not an altjit). Both clrjit.dll and compatjit.dll are added to the JIT NuGet package. --- .gitignore | 3 + Documentation/project-docs/ci-trigger-phrases.md | 112 ++-- build.cmd | 24 +- netci.groovy | 667 ++++++++++++++------- .../win/Microsoft.NETCore.Jit.pkgproj | 1 + src/jit/CMakeLists.txt | 22 +- src/jit/compatjit/.gitmirror | 1 + src/jit/compatjit/CMakeLists.txt | 66 ++ src/jit/crossgen/CMakeLists.txt | 4 +- src/jit/dll/CMakeLists.txt | 10 +- src/jit/legacyjit/.gitmirror | 1 + src/jit/legacyjit/CMakeLists.txt | 62 ++ src/jit/protojit/CMakeLists.txt | 11 +- src/jit/standalone/CMakeLists.txt | 21 +- tests/runtest.cmd | 4 +- tests/x86/compatjit_x86_testenv.cmd | 8 + tests/x86/legacyjit_x86_testenv.cmd | 52 ++ tests/x86/ryujit_x86_testenv.cmd | 54 +- 18 files changed, 766 insertions(+), 357 deletions(-) create mode 100644 src/jit/compatjit/.gitmirror create mode 100644 src/jit/compatjit/CMakeLists.txt create mode 100644 src/jit/legacyjit/.gitmirror create mode 100644 src/jit/legacyjit/CMakeLists.txt create mode 100644 tests/x86/compatjit_x86_testenv.cmd create mode 100644 tests/x86/legacyjit_x86_testenv.cmd diff --git a/.gitignore b/.gitignore index ea3e8ea..702c37d 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,9 @@ bld/ [Oo]bj/ msbuild.log +# add back architecture directories ignored in 'Build results' +!tests/x86 + # Visual Studio 2015 .vs/ diff --git a/Documentation/project-docs/ci-trigger-phrases.md b/Documentation/project-docs/ci-trigger-phrases.md index 3652565..03e071d 100644 --- a/Documentation/project-docs/ci-trigger-phrases.md +++ b/Documentation/project-docs/ci-trigger-phrases.md @@ -3,6 +3,8 @@ When submitting a PR to the CoreCLR repo, you may want to run more test suites than are included in the default set of checks run with each PR. In this document you will find a list of all possible jobs to trigger, as well as the phrase that will trigger that job. +You can also ask the CI system to show you all to available trigger phrases by using `@dotnet-bot help`. + These phrases are ordered by OS. They will usually be in the form of "{OS} {Architecture} {Configuration} {Scenario}", so use that format if you are trying to ctrl-f a certain job. To trigger a job, post a comment on your PR with "@dotnet-bot {trigger-phrase}". @@ -79,64 +81,64 @@ To trigger a job, post a comment on your PR with "@dotnet-bot {trigger-phrase}". - **Windows_NT x64 Checked CoreFX JitStressRegs=8 Build & Test:** "test Windows_NT corefx_jitstressregs8" - **Windows_NT x64 Checked CoreFX JitStressRegs=0x10 Build & Test:** "test Windows_NT corefx_jitstressregs0x10" - **Windows_NT x64 Checked CoreFX JitStressRegs=0x80 Build & Test:** "test Windows_NT corefx_jitstressregs0x80" -- **Windows_NT x86 RyuJit Checked Priority 0 Build & Test:** "test Windows_NT x86 ryujit" +- **Windows_NT x86 Checked Priority 0 Build & Test:** "test Windows_NT x86" - **Windows_NT x86 legacy_backend Checked Priority 0 Build & Test:** "test Windows_NT x86 legacy_backend" -- **Windows_NT x86 RyuJit Release Ready-To-Run Priority 0 Build & Test:** "test Windows_NT x86 ryujit Release r2r" +- **Windows_NT x86 Release Ready-To-Run Priority 0 Build & Test:** "test Windows_NT x86 Release r2r" - **Windows_NT x86 legacy_backend Release Ready-To-Run Priority 0 Build & Test:** "test Windows_NT x86 legacy_backend Release r2r" -- **Windows_NT x86 RyuJit Release Ready-To-Run Priority 1 Build & Test:** "test Windows_NT x86 ryujit Release pri1r2r" +- **Windows_NT x86 Release Ready-To-Run Priority 1 Build & Test:** "test Windows_NT x86 Release pri1r2r" - **Windows_NT x86 legacy_backend Release Ready-To-Run Priority 1 Build & Test:** "test Windows_NT x86 legacy_backend Release pri1r2r" -- **Windows_NT x86 RyuJit Release GCStress=15 Ready-To-Run Priority 1 Build & Test:** "test Windows_NT x86 ryujit Release gcstress15_pri1r2r" +- **Windows_NT x86 Release GCStress=15 Ready-To-Run Priority 1 Build & Test:** "test Windows_NT x86 Release gcstress15_pri1r2r" - **Windows_NT x86 legacy_backend Release GCStress=15 Ready-To-Run Priority 1 Build & Test:** "test Windows_NT x86 legacy_backend Release gcstress15_pri1r2r" -- **Windows_NT x86 RyuJit Release jitstress1 R2R Build & Test:** "test Windows_NT x86 ryujit Release jitstress1 R2R" -- **Windows_NT x86 RyuJit Checked jitstress1 R2R Build & Test:** "test Windows_NT x86 ryujit Checked jitstress1 R2R" -- **Windows_NT x86 RyuJit Release jitstress2 R2R Build & Test:** "test Windows_NT x86 ryujit Release jitstress2 R2R" -- **Windows_NT x86 RyuJit Checked jitstress2 R2R Build & Test:** "test Windows_NT x86 ryujit Checked jitstress2 R2R" -- **Windows_NT x86 RyuJit Release jitstressregs1 R2R Build & Test:** "test Windows_NT x86 ryujit Release jitstressregs1 R2R" -- **Windows_NT x86 RyuJit Checked jitstressregs1 R2R Build & Test:** "test Windows_NT x86 ryujit Checked jitstressregs1 R2R" -- **Windows_NT x86 RyuJit Release jitstressregs2 R2R Build & Test:** "test Windows_NT x86 ryujit Release jitstressregs2 R2R" -- **Windows_NT x86 RyuJit Checked jitstressregs2 R2R Build & Test:** "test Windows_NT x86 ryujit Checked jitstressregs2 R2R" -- **Windows_NT x86 RyuJit Release jitstressregs3 R2R Build & Test:** "test Windows_NT x86 ryujit Release jitstressregs3 R2R" -- **Windows_NT x86 RyuJit Checked jitstressregs3 R2R Build & Test:** "test Windows_NT x86 ryujit Checked jitstressregs3 R2R" -- **Windows_NT x86 RyuJit Release jitstressregs4 R2R Build & Test:** "test Windows_NT x86 ryujit Release jitstressregs4 R2R" -- **Windows_NT x86 RyuJit Checked jitstressregs4 R2R Build & Test:** "test Windows_NT x86 ryujit Checked jitstressregs4 R2R" -- **Windows_NT x86 RyuJit Release jitstressregs8 R2R Build & Test:** "test Windows_NT x86 ryujit Release jitstressregs8 R2R" -- **Windows_NT x86 RyuJit Checked jitstressregs8 R2R Build & Test:** "test Windows_NT x86 ryujit Checked jitstressregs8 R2R" -- **Windows_NT x86 RyuJit Release jitstressregsx10 R2R Build & Test:** "test Windows_NT x86 ryujit Release jitstressregsx10 R2R" -- **Windows_NT x86 RyuJit Checked jitstressregsx10 R2R Build & Test:** "test Windows_NT x86 ryujit Checked jitstressregsx10 R2R" -- **Windows_NT x86 RyuJit Release jitstressregsx80 R2R Build & Test:** "test Windows_NT x86 ryujit Release jitstressregsx80 R2R" -- **Windows_NT x86 RyuJit Checked jitstressregsx80 R2R Build & Test:** "test Windows_NT x86 ryujit Checked jitstressregsx80 R2R" -- **Windows_NT x86 RyuJit Release JITMinOpts R2R Build & Test:** "test Windows_NT x86 ryujit Release JITMinOpts R2R" -- **Windows_NT x86 RyuJit Checked JITMinOpts R2R Build & Test:** "test Windows_NT x86 ryujit Checked JITMinOpts R2R" -- **Windows_NT x86 RyuJit Release ForceRelocs R2R Build & Test:** "test Windows_NT x86 ryujit Release ForceRelocs R2R" -- **Windows_NT x86 RyuJit Checked ForceRelocs R2R Build & Test:** "test Windows_NT x86 ryujit Checked ForceRelocs R2R" -- **Windows_NT x86 RyuJit Checked JIT MinOpts Build & Test:** "test Windows_NT x86 ryujit minopts" -- **Windows_NT x86 RyuJit Checked JITStress=1 Build & Test:** "test Windows_NT x86 ryujit jitstress1" -- **Windows_NT x86 RyuJit Checked JITStress=2 Build & Test:** "test Windows_NT x86 ryujit jitstress2" -- **Windows_NT x86 RyuJit Checked Jit ForceRelocs Build & Test:** "test Windows_NT x86 ryujit forcerelocs" -- **Windows_NT x86 RyuJit Checked JITStressRegs=1 Build & Test:** "test Windows_NT x86 ryujit jitstressregs1" -- **Windows_NT x86 RyuJit Checked JITStressRegs=2 Build & Test:** "test Windows_NT x86 ryujit jitstressregs2" -- **Windows_NT x86 RyuJit Checked JITStressRegs=3 Build & Test:** "test Windows_NT x86 ryujit jitstressregs3" -- **Windows_NT x86 RyuJit Checked JITStressRegs=4 Build & Test:** "test Windows_NT x86 ryujit jitstressregs4" -- **Windows_NT x86 RyuJit Checked JITStressRegs=8 Build & Test:** "test Windows_NT x86 ryujit jitstressregs8" -- **Windows_NT x86 RyuJit Checked JITStressRegs=0x10 Build & Test:** "test Windows_NT x86 ryujit jitstressregs0x10" -- **Windows_NT x86 RyuJit Checked JITStressRegs=0x80 Build & Test:** "test Windows_NT x86 ryujit jitstressregs0x80" -- **Windows_NT x86 RyuJit Checked JitStress=2 JITStressRegs=1 Build & Test:** "test Windows_NT x86 ryujit jitstress2_jitstressregs1" -- **Windows_NT x86 RyuJit Checked JitStress=2 JITStressRegs=2 Build & Test:** "test Windows_NT x86 ryujit jitstress2_jitstressregs2" -- **Windows_NT x86 RyuJit Checked JitStress=2 JITStressRegs=3 Build & Test:** "test Windows_NT x86 ryujit jitstress2_jitstressregs3" -- **Windows_NT x86 RyuJit Checked JitStress=2 JITStressRegs=4 Build & Test:** "test Windows_NT x86 ryujit jitstress2_jitstressregs4" -- **Windows_NT x86 RyuJit Checked JitStress=2 JITStressRegs=8 Build & Test:** "test Windows_NT x86 ryujit jitstress2_jitstressregs8" -- **Windows_NT x86 RyuJit Checked JitStress=2 JITStressRegs=0x10 Build & Test:** "test Windows_NT x86 ryujit jitstress2_jitstressregs0x10" -- **Windows_NT x86 RyuJit Checked JitStress=2 JITStressRegs=0x80 Build & Test:** "test Windows_NT x86 ryujit jitstress2_jitstressregs0x80" -- **Windows_NT x86 RyuJit Checked GCStress=0x3 Build & Test:** "test Windows_NT x86 ryujit gcstress0x3" -- **Windows_NT x86 RyuJit Checked GCStress=0xc Build & Test:** "test Windows_NT x86 ryujit gcstress0xc" -- **Windows_NT x86 RyuJit Checked zapdisable Build & Test:** "test Windows_NT x86 ryujit zapdisable" -- **Windows_NT x86 RyuJit Checked Heap Verify 1 Build & Test:** "test Windows_NT x86 ryujit heapverify1" -- **Windows_NT x86 RyuJit Checked GCStress=0xc zapdisable Build & Test:** "test Windows_NT x86 ryujit gcstress0xc_zapdisable" -- **Windows_NT x86 RyuJit Checked GCStress=0xc JitStress=2 zapdisable Build & Test:** "test Windows_NT x86 ryujit gcstress0xc_zapdisable_jitstress2" -- **Windows_NT x86 RyuJit Checked GCStress=0xc zapdisable Heap Verify 1 Build & Test:** "test Windows_NT x86 ryujit gcstress0xc_zapdisable_heapverify1" -- **Windows_NT x86 RyuJit Checked GCStress=0xc JitStress=1 Build & Test:** "test Windows_NT x86 ryujit gcstress0xc_jitstress1" -- **Windows_NT x86 RyuJit Checked GCStress=0xc JitStress=2 Build & Test:** "test Windows_NT x86 ryujit gcstress0xc_jitstress2" -- **Windows_NT x86 RyuJit Checked GCStress=0xc MinOpts Heap Verify 1 Build & Test:** "test Windows_NT x86 ryujit gcstress0xc_minopts_heapverify1" +- **Windows_NT x86 Release jitstress1 R2R Build & Test:** "test Windows_NT x86 Release jitstress1 R2R" +- **Windows_NT x86 Checked jitstress1 R2R Build & Test:** "test Windows_NT x86 Checked jitstress1 R2R" +- **Windows_NT x86 Release jitstress2 R2R Build & Test:** "test Windows_NT x86 Release jitstress2 R2R" +- **Windows_NT x86 Checked jitstress2 R2R Build & Test:** "test Windows_NT x86 Checked jitstress2 R2R" +- **Windows_NT x86 Release jitstressregs1 R2R Build & Test:** "test Windows_NT x86 Release jitstressregs1 R2R" +- **Windows_NT x86 Checked jitstressregs1 R2R Build & Test:** "test Windows_NT x86 Checked jitstressregs1 R2R" +- **Windows_NT x86 Release jitstressregs2 R2R Build & Test:** "test Windows_NT x86 Release jitstressregs2 R2R" +- **Windows_NT x86 Checked jitstressregs2 R2R Build & Test:** "test Windows_NT x86 Checked jitstressregs2 R2R" +- **Windows_NT x86 Release jitstressregs3 R2R Build & Test:** "test Windows_NT x86 Release jitstressregs3 R2R" +- **Windows_NT x86 Checked jitstressregs3 R2R Build & Test:** "test Windows_NT x86 Checked jitstressregs3 R2R" +- **Windows_NT x86 Release jitstressregs4 R2R Build & Test:** "test Windows_NT x86 Release jitstressregs4 R2R" +- **Windows_NT x86 Checked jitstressregs4 R2R Build & Test:** "test Windows_NT x86 Checked jitstressregs4 R2R" +- **Windows_NT x86 Release jitstressregs8 R2R Build & Test:** "test Windows_NT x86 Release jitstressregs8 R2R" +- **Windows_NT x86 Checked jitstressregs8 R2R Build & Test:** "test Windows_NT x86 Checked jitstressregs8 R2R" +- **Windows_NT x86 Release jitstressregsx10 R2R Build & Test:** "test Windows_NT x86 Release jitstressregsx10 R2R" +- **Windows_NT x86 Checked jitstressregsx10 R2R Build & Test:** "test Windows_NT x86 Checked jitstressregsx10 R2R" +- **Windows_NT x86 Release jitstressregsx80 R2R Build & Test:** "test Windows_NT x86 Release jitstressregsx80 R2R" +- **Windows_NT x86 Checked jitstressregsx80 R2R Build & Test:** "test Windows_NT x86 Checked jitstressregsx80 R2R" +- **Windows_NT x86 Release JITMinOpts R2R Build & Test:** "test Windows_NT x86 Release JITMinOpts R2R" +- **Windows_NT x86 Checked JITMinOpts R2R Build & Test:** "test Windows_NT x86 Checked JITMinOpts R2R" +- **Windows_NT x86 Release ForceRelocs R2R Build & Test:** "test Windows_NT x86 Release ForceRelocs R2R" +- **Windows_NT x86 Checked ForceRelocs R2R Build & Test:** "test Windows_NT x86 Checked ForceRelocs R2R" +- **Windows_NT x86 Checked JIT MinOpts Build & Test:** "test Windows_NT x86 minopts" +- **Windows_NT x86 Checked JITStress=1 Build & Test:** "test Windows_NT x86 jitstress1" +- **Windows_NT x86 Checked JITStress=2 Build & Test:** "test Windows_NT x86 jitstress2" +- **Windows_NT x86 Checked Jit ForceRelocs Build & Test:** "test Windows_NT x86 forcerelocs" +- **Windows_NT x86 Checked JITStressRegs=1 Build & Test:** "test Windows_NT x86 jitstressregs1" +- **Windows_NT x86 Checked JITStressRegs=2 Build & Test:** "test Windows_NT x86 jitstressregs2" +- **Windows_NT x86 Checked JITStressRegs=3 Build & Test:** "test Windows_NT x86 jitstressregs3" +- **Windows_NT x86 Checked JITStressRegs=4 Build & Test:** "test Windows_NT x86 jitstressregs4" +- **Windows_NT x86 Checked JITStressRegs=8 Build & Test:** "test Windows_NT x86 jitstressregs8" +- **Windows_NT x86 Checked JITStressRegs=0x10 Build & Test:** "test Windows_NT x86 jitstressregs0x10" +- **Windows_NT x86 Checked JITStressRegs=0x80 Build & Test:** "test Windows_NT x86 jitstressregs0x80" +- **Windows_NT x86 Checked JitStress=2 JITStressRegs=1 Build & Test:** "test Windows_NT x86 jitstress2_jitstressregs1" +- **Windows_NT x86 Checked JitStress=2 JITStressRegs=2 Build & Test:** "test Windows_NT x86 jitstress2_jitstressregs2" +- **Windows_NT x86 Checked JitStress=2 JITStressRegs=3 Build & Test:** "test Windows_NT x86 jitstress2_jitstressregs3" +- **Windows_NT x86 Checked JitStress=2 JITStressRegs=4 Build & Test:** "test Windows_NT x86 jitstress2_jitstressregs4" +- **Windows_NT x86 Checked JitStress=2 JITStressRegs=8 Build & Test:** "test Windows_NT x86 jitstress2_jitstressregs8" +- **Windows_NT x86 Checked JitStress=2 JITStressRegs=0x10 Build & Test:** "test Windows_NT x86 jitstress2_jitstressregs0x10" +- **Windows_NT x86 Checked JitStress=2 JITStressRegs=0x80 Build & Test:** "test Windows_NT x86 jitstress2_jitstressregs0x80" +- **Windows_NT x86 Checked GCStress=0x3 Build & Test:** "test Windows_NT x86 gcstress0x3" +- **Windows_NT x86 Checked GCStress=0xc Build & Test:** "test Windows_NT x86 gcstress0xc" +- **Windows_NT x86 Checked zapdisable Build & Test:** "test Windows_NT x86 zapdisable" +- **Windows_NT x86 Checked Heap Verify 1 Build & Test:** "test Windows_NT x86 heapverify1" +- **Windows_NT x86 Checked GCStress=0xc zapdisable Build & Test:** "test Windows_NT x86 gcstress0xc_zapdisable" +- **Windows_NT x86 Checked GCStress=0xc JitStress=2 zapdisable Build & Test:** "test Windows_NT x86 gcstress0xc_zapdisable_jitstress2" +- **Windows_NT x86 Checked GCStress=0xc zapdisable Heap Verify 1 Build & Test:** "test Windows_NT x86 gcstress0xc_zapdisable_heapverify1" +- **Windows_NT x86 Checked GCStress=0xc JitStress=1 Build & Test:** "test Windows_NT x86 gcstress0xc_jitstress1" +- **Windows_NT x86 Checked GCStress=0xc JitStress=2 Build & Test:** "test Windows_NT x86 gcstress0xc_jitstress2" +- **Windows_NT x86 Checked GCStress=0xc MinOpts Heap Verify 1 Build & Test:** "test Windows_NT x86 gcstress0xc_minopts_heapverify1" - **Windows_NT x86 legacy_backend Release jitstress1 R2R Build & Test:** "test Windows_NT x86 legacy_backend Release jitstress1 R2R" - **Windows_NT x86 legacy_backend Checked jitstress1 R2R Build & Test:** "test Windows_NT x86 legacy_backend Checked jitstress1 R2R" - **Windows_NT x86 legacy_backend Release jitstress2 R2R Build & Test:** "test Windows_NT x86 legacy_backend Release jitstress2 R2R" @@ -159,7 +161,7 @@ To trigger a job, post a comment on your PR with "@dotnet-bot {trigger-phrase}". - **Windows_NT x86 legacy_backend Checked JITMinOpts R2R Build & Test:** "test Windows_NT x86 legacy_backend Checked JITMinOpts R2R" - **Windows_NT x86 legacy_backend Release ForceRelocs R2R Build & Test:** "test Windows_NT x86 legacy_backend Release ForceRelocs R2R" - **Windows_NT x86 legacy_backend Checked ForceRelocs R2R Build & Test:** "test Windows_NT x86 legacy_backend Checked ForceRelocs R2R" -- **Windows_NT x86 RyuJit Release Long-Running GC Build & Test:** "test Windows_NT x86 ryujit Release longgc" +- **Windows_NT x86 Release Long-Running GC Build & Test:** "test Windows_NT x86 Release longgc" - **Windows_NT x86 legacy_backend Release Long-Running GC Build & Test:** "test Windows_NT x86 legacy_backend Release longgc" - **Ubuntu x64 Release Priority 1 Build & Test:** "test Ubuntu pri1" - **Ubuntu x64 Release IL RoundTrip Build & Test:** "test Ubuntu ilrt" diff --git a/build.cmd b/build.cmd index ba3dcf4..16f1e28 100644 --- a/build.cmd +++ b/build.cmd @@ -109,8 +109,12 @@ if /i "%1" == "usenmakemakefiles" (set __NMakeMakefiles=1&set __ConfigureOnly= if /i "%1" == "buildjit32" (set __BuildJit32="-DBUILD_JIT32=1"&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "pgoinstrument" (set __PgoInstrument=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) -if /i "%1" == "altjitcrossgen" (set __AltJitCrossgen=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "buildstandalonegc" (set __BuildStandaloneGC="-DFEATURE_STANDALONE_GC=1"&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "compatjitcrossgen" (set __CompatJitCrossgen=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "legacyjitcrossgen" (set __LegacyJitCrossgen=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "buildstandalonegc" (set __BuildStandaloneGC="-DFEATURE_STANDALONE_GC=1"&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) + +@REM The following can be deleted once the CI system that passes it is updated to not pass it. +if /i "%1" == "altjitcrossgen" (set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if [!processedArgs!]==[] ( call set __UnprocessedBuildArgs=!__args! @@ -370,9 +374,14 @@ set PATH=%PATH%;%WinDir%\Microsoft.Net\Framework64\V4.0.30319;%WinDir%\Microsoft if %__BuildNativeCoreLib% EQU 1 ( echo %__MsgPrefix%Generating native image of System.Private.CoreLib for %__BuildOS%.%__BuildArch%.%__BuildType% - if "%__AltJitCrossgen%"=="1" ( + if "%__CompatJitCrossgen%"=="1" ( + set COMPlus_UseWindowsX86CoreLegacyJit=1 + ) + + if "%__LegacyJitCrossgen%"=="1" ( + set COMPlus_AltJit=* set COMPlus_AltJitNgen=* - set COMPlus_AltJitName=protojit.dll + set COMPlus_AltJitName=legacyjit.dll ) echo "%__CrossgenExe%" /Platform_Assemblies_Paths "%__BinDir%" /out "%__BinDir%\System.Private.CoreLib.ni.dll" "%__BinDir%\System.Private.CoreLib.dll" @@ -397,7 +406,12 @@ if %__BuildNativeCoreLib% EQU 1 ( "!__CrossgenExe!" /Platform_Assemblies_Paths "%__BinDir%" /out "%__BinDir%\mscorlib.ni.dll" "%__BinDir%\mscorlib.dll" > "!__CrossGenCoreLibLog!" 2>&1 set err=!errorlevel! - if "%__AltJitCrossgen%"=="1" ( + if "%__CompatJitCrossgen%"=="1" ( + set COMPlus_UseWindowsX86CoreLegacyJit= + ) + + if "%__LegacyJitCrossgen%"=="1" ( + set COMPlus_AltJit= set COMPlus_AltJitNgen= set COMPlus_AltJitName= ) diff --git a/netci.groovy b/netci.groovy index a6809ea..465157d 100755 --- a/netci.groovy +++ b/netci.groovy @@ -32,20 +32,43 @@ def static getOSGroup(def os) { // We use this class (vs variables) so that the static functions can access data here. class Constants { + // Innerloop build OS's // The Windows_NT_BuildOnly OS is a way to speed up the Non-NT builds temporarily by avoiding // test execution in the build flow runs. It generates the exact same build // as Windows_NT but without the tests. - def static osList = ['Ubuntu', 'Debian8.4', 'OSX', 'Windows_NT', 'Windows_NT_BuildOnly', 'FreeBSD', 'CentOS7.1', 'OpenSUSE13.2', 'OpenSUSE42.1', 'RHEL7.2', 'LinuxARMEmulator', 'Ubuntu16.04', 'Ubuntu16.10', 'Fedora23'] + def static osList = [ + 'Ubuntu', + 'Debian8.4', + 'OSX', + 'Windows_NT', + 'Windows_NT_BuildOnly', + 'FreeBSD', + 'CentOS7.1', + 'OpenSUSE13.2', + 'OpenSUSE42.1', + 'RHEL7.2', + 'LinuxARMEmulator', + 'Ubuntu16.04', + 'Ubuntu16.10', + 'Fedora23'] + def static crossList = ['Ubuntu', 'OSX', 'CentOS7.1', 'RHEL7.2', 'Debian8.4', 'OpenSUSE13.2'] + // This is a set of JIT stress modes combined with the set of variables that // need to be set to actually enable that stress mode. The key of the map is the stress mode and // the values are the environment variables - def static jitStressModeScenarios = ['minopts' : ['COMPlus_JITMinOpts' : '1'], 'forcerelocs' : ['COMPlus_ForceRelocs' : '1'], - 'jitstress1' : ['COMPlus_JitStress' : '1'], 'jitstress2' : ['COMPlus_JitStress' : '2'], - 'jitstressregs1' : ['COMPlus_JitStressRegs' : '1'], 'jitstressregs2' : ['COMPlus_JitStressRegs' : '2'], - 'jitstressregs3' : ['COMPlus_JitStressRegs' : '3'], 'jitstressregs4' : ['COMPlus_JitStressRegs' : '4'], - 'jitstressregs8' : ['COMPlus_JitStressRegs' : '8'], 'jitstressregs0x10' : ['COMPlus_JitStressRegs' : '0x10'], + def static jitStressModeScenarios = [ + 'minopts' : ['COMPlus_JITMinOpts' : '1'], + 'forcerelocs' : ['COMPlus_ForceRelocs' : '1'], + 'jitstress1' : ['COMPlus_JitStress' : '1'], + 'jitstress2' : ['COMPlus_JitStress' : '2'], + 'jitstressregs1' : ['COMPlus_JitStressRegs' : '1'], + 'jitstressregs2' : ['COMPlus_JitStressRegs' : '2'], + 'jitstressregs3' : ['COMPlus_JitStressRegs' : '3'], + 'jitstressregs4' : ['COMPlus_JitStressRegs' : '4'], + 'jitstressregs8' : ['COMPlus_JitStressRegs' : '8'], + 'jitstressregs0x10' : ['COMPlus_JitStressRegs' : '0x10'], 'jitstressregs0x80' : ['COMPlus_JitStressRegs' : '0x80'], 'jitstress2_jitstressregs1' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '1'], 'jitstress2_jitstressregs2' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '2'], @@ -54,33 +77,62 @@ class Constants { 'jitstress2_jitstressregs8' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '8'], 'jitstress2_jitstressregs0x10' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '0x10'], 'jitstress2_jitstressregs0x80' : ['COMPlus_JitStress' : '2', 'COMPlus_JitStressRegs' : '0x80'], - 'corefx_baseline' : [ : ], // corefx baseline - 'corefx_minopts' : ['COMPlus_JITMinOpts' : '1'], + 'corefx_baseline' : [ : ], // corefx baseline + 'corefx_minopts' : ['COMPlus_JITMinOpts' : '1'], 'corefx_jitstress1' : ['COMPlus_JitStress' : '1'], 'corefx_jitstress2' : ['COMPlus_JitStress' : '2'], - 'corefx_jitstressregs1' : ['COMPlus_JitStressRegs' : '1'], 'corefx_jitstressregs2' : ['COMPlus_JitStressRegs' : '2'], - 'corefx_jitstressregs3' : ['COMPlus_JitStressRegs' : '3'], 'corefx_jitstressregs4' : ['COMPlus_JitStressRegs' : '4'], - 'corefx_jitstressregs8' : ['COMPlus_JitStressRegs' : '8'], 'corefx_jitstressregs0x10' : ['COMPlus_JitStressRegs' : '0x10'], + 'corefx_jitstressregs1' : ['COMPlus_JitStressRegs' : '1'], + 'corefx_jitstressregs2' : ['COMPlus_JitStressRegs' : '2'], + 'corefx_jitstressregs3' : ['COMPlus_JitStressRegs' : '3'], + 'corefx_jitstressregs4' : ['COMPlus_JitStressRegs' : '4'], + 'corefx_jitstressregs8' : ['COMPlus_JitStressRegs' : '8'], + 'corefx_jitstressregs0x10' : ['COMPlus_JitStressRegs' : '0x10'], 'corefx_jitstressregs0x80' : ['COMPlus_JitStressRegs' : '0x80'], - 'gcstress0x3' : ['COMPlus_GCStress' : '0x3'], 'gcstress0xc' : ['COMPlus_GCStress' : '0xC'], - 'zapdisable' : ['COMPlus_ZapDisable' : '0xC'], - 'heapverify1' : ['COMPlus_HeapVerify' : '1'], - 'gcstress0xc_zapdisable' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1'], - 'gcstress0xc_zapdisable_jitstress2' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1', 'COMPlus_JitStress' : '2'], - 'gcstress0xc_zapdisable_heapverify1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1', 'COMPlus_HeapVerify' : '1'], - 'gcstress0xc_jitstress1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_JitStress' : '1'], - 'gcstress0xc_jitstress2' : ['COMPlus_GCStress' : '0xC', 'COMPlus_JitStress' : '2'], - 'gcstress0xc_minopts_heapverify1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_JITMinOpts' : '1', 'COMPlus_HeapVerify' : '1'] + 'gcstress0x3' : ['COMPlus_GCStress' : '0x3'], + 'gcstress0xc' : ['COMPlus_GCStress' : '0xC'], + 'zapdisable' : ['COMPlus_ZapDisable' : '1'], + 'heapverify1' : ['COMPlus_HeapVerify' : '1'], + 'gcstress0xc_zapdisable' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1'], + 'gcstress0xc_zapdisable_jitstress2' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1', 'COMPlus_JitStress' : '2'], + 'gcstress0xc_zapdisable_heapverify1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_ZapDisable' : '1', 'COMPlus_HeapVerify' : '1'], + 'gcstress0xc_jitstress1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_JitStress' : '1'], + 'gcstress0xc_jitstress2' : ['COMPlus_GCStress' : '0xC', 'COMPlus_JitStress' : '2'], + 'gcstress0xc_minopts_heapverify1' : ['COMPlus_GCStress' : '0xC', 'COMPlus_JITMinOpts' : '1', 'COMPlus_HeapVerify' : '1'] ] + // This is a set of r2r jit stress scenarios - def static r2rJitStressScenarios = ['r2r_jitstress1', 'r2r_jitstress2', 'r2r_jitstressregs1', 'r2r_jitstressregs2', 'r2r_jitstressregs3', - 'r2r_jitstressregs4', 'r2r_jitstressregs8', 'r2r_jitstressregsx10', 'r2r_jitstressregsx80', - 'r2r_jitminopts', 'r2r_jitforcerelocs'] + def static r2rJitStressScenarios = [ + 'r2r_jitstress1', + 'r2r_jitstress2', + 'r2r_jitstressregs1', + 'r2r_jitstressregs2', + 'r2r_jitstressregs3', + 'r2r_jitstressregs4', + 'r2r_jitstressregs8', + 'r2r_jitstressregsx10', + 'r2r_jitstressregsx80', + 'r2r_jitminopts', + 'r2r_jitforcerelocs'] + // This is the basic set of scenarios - def static basicScenarios = ['default', 'pri1', 'ilrt', 'r2r', 'pri1r2r', 'gcstress15_pri1r2r', 'longgc', 'coverage', 'formatting', 'gcsimulator', 'jitdiff', 'standalone_gc'] + r2rJitStressScenarios + def static basicScenarios = [ + 'default', + 'pri1', + 'ilrt', + 'r2r', + 'pri1r2r', + 'gcstress15_pri1r2r', + 'longgc', + 'coverage', + 'formatting', + 'gcsimulator', + 'jitdiff', + 'standalone_gc'] + r2rJitStressScenarios + def static configurationList = ['Debug', 'Checked', 'Release'] + // This is the set of architectures - def static architectureList = ['arm', 'arm64', 'x64', 'x86ryujit', 'x86lb'] + def static architectureList = ['arm', 'arm64', 'x64', 'x86', 'x86compatjit', 'x86lb'] } def static setMachineAffinity(def job, def os, def architecture) { @@ -275,8 +327,11 @@ def static getJobName(def configuration, def architecture, def os, def scenario, baseName = architecture.toLowerCase() + '_emulator_cross_' + configuration.toLowerCase() + '_' + os.toLowerCase() } break - case 'x86ryujit': - baseName = 'x86_ryujit_' + configuration.toLowerCase() + '_' + os.toLowerCase() + case 'x86': + baseName = architecture.toLowerCase() + '_' + configuration.toLowerCase() + '_' + os.toLowerCase() + break + case 'x86compatjit': + baseName = 'x86_compatjit_' + configuration.toLowerCase() + '_' + os.toLowerCase() break case 'x86lb': baseName = 'x86_lb_' + configuration.toLowerCase() + '_' + os.toLowerCase() @@ -313,7 +368,8 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, case 'default': switch (architecture) { case 'x64': - case 'x86ryujit': + case 'x86': + case 'x86compatjit': case 'x86lb': if (isFlowJob || os == 'Windows_NT' || !(os in Constants.crossList)) { Utilities.addGithubPushTrigger(job) @@ -374,7 +430,7 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, } } // For x86, only add per-commit jobs for Windows - else if (architecture == 'x86ryujit' || architecture == 'x86lb') { + else if (architecture == 'x86' || architecture == 'x86compatjit' || architecture == 'x86lb') { if (os == 'Windows_NT') { Utilities.addGithubPushTrigger(job) } @@ -419,7 +475,7 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, } } // For x86, only add per-commit jobs for Windows - else if (architecture == 'x86ryujit' || architecture == 'x86lb') { + else if (architecture == 'x86' || architecture == 'x86compatjit' || architecture == 'x86lb') { if (os == 'Windows_NT') { Utilities.addPeriodicTrigger(job, 'H H * * 3,6') // some time every Wednesday and Saturday } @@ -560,7 +616,7 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, // We generally only have a distinct set of default triggers but a bunch of on-demand ones. def osGroup = getOSGroup(os) switch (architecture) { - case 'x64': + case 'x64': // editor brace matching: { if (scenario == 'coverage') { assert configuration == 'Release' if (os == 'Ubuntu') { @@ -1107,7 +1163,8 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, break } break - case 'arm': + // editor brace matching: } + case 'arm': // editor brace matching: { assert scenario == 'default' switch (os) { case 'Ubuntu': @@ -1131,7 +1188,8 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, break } break - case 'arm64': + // editor brace matching: } + case 'arm64': // editor brace matching: { assert (scenario == 'default') || (scenario == 'pri1r2r') || (scenario == 'gcstress0x3') || (scenario == 'gcstress0xc') // Set up a private trigger @@ -1166,165 +1224,358 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, break } break - case 'x86ryujit': - def arch = 'x86' - def jit = 'ryujit' + // editor brace matching: } + case 'x86': // editor brace matching: { + assert (os == 'Windows_NT') switch (scenario) { case 'default': - // Default trigger - if (os == 'Windows_NT') { - if (configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test") - } + if (configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test") } - else { - // default trigger - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build", "(?i).*test\\W+${arch}\\W+${osGroup}.\\W+${jit}.*") + break + case 'pri1': + if (configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Priority 1 Build and Test") + } + break + case 'ilrt': + if (configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} IL RoundTrip Build and Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r': + if (configuration == 'Checked' || configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri0 Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'pri1r2r': + if (configuration == 'Checked' || configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} R2R pri1 Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'gcstress15_pri1r2r': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GCStress 15 R2R pri1 Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r_jitstress1': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstress1 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r_jitstress2': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstress2 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r_jitstressregs1': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs1 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r_jitstressregs2': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs2 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r_jitstressregs3': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs3 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r_jitstressregs4': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs4 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r_jitstressregs8': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregs8 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r_jitstressregsx10': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregsx10 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r_jitstressregsx80': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} jitstressregsx80 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r_jitminopts': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} JITMinOpts R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'r2r_jitforcerelocs': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} ForceRelocs R2R Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'longgc': + if (configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Long-Running GC Build & Test", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'gcsimulator': + if (configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GC Simulator", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'standalone_gc': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Standalone GC", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + } + break + case 'minopts': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - MinOpts)", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + case 'forcerelocs': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ForceRelocs)", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + case 'jitstress1': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStress=1)", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + case 'jitstress2': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStress=2)", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + case 'jitstressregs1': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=1)", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + case 'jitstressregs2': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=2)", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + case 'jitstressregs3': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=3)", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + case 'jitstressregs4': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=4)", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + case 'jitstressregs8': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=8)", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + case 'jitstressregs0x10': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=0x10)", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + case 'jitstressregs0x80': + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - JitStressRegs=0x80)", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + case 'jitstress2_jitstressregs1': + case 'jitstress2_jitstressregs2': + case 'jitstress2_jitstressregs3': + case 'jitstress2_jitstressregs4': + case 'jitstress2_jitstressregs8': + case 'jitstress2_jitstressregs0x10': + case 'jitstress2_jitstressregs0x80': + case 'gcstress0x3': + case 'gcstress0xc': + case 'zapdisable': + case 'heapverify1': + case 'gcstress0xc_zapdisable': + case 'gcstress0xc_zapdisable_jitstress2': + case 'gcstress0xc_zapdisable_heapverify1': + case 'gcstress0xc_jitstress1': + case 'gcstress0xc_jitstress2': + case 'gcstress0xc_minopts_heapverify1': + def displayStr = getStressModeDisplayName(scenario) + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - ${displayStr})", + "(?i).*test\\W+${os}\\W+${architecture}\\W+${configuration}\\W+${scenario}.*") + break + default: + println("Unknown scenario: ${os} ${architecture} ${scenario}"); + assert false + break + } + break + // editor brace matching: } + case 'x86compatjit': // editor brace matching: { + assert (os == 'Windows_NT') + def arch = 'x86' + def jit = 'compatjit' + switch (scenario) { + case 'default': + if (configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test") } break case 'pri1': - // Default trigger if (configuration == 'Release') { Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Priority 1 Build and Test") } break case 'ilrt': if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} IL RoundTrip Build and Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} IL RoundTrip Build and Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r': if (configuration == 'Checked' || configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri0 Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri0 Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'pri1r2r': if (configuration == 'Checked' || configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri1 Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'gcstress15_pri1r2r': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} GCStress 15 R2R pri1 Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitstress1': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress1 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitstress2': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress2 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitstressregs1': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs1 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitstressregs2': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs2 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitstressregs3': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs3 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs3 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitstressregs4': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs4 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs4 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitstressregs8': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs8 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs8 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitstressregsx10': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx10 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx10 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitstressregsx80': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx80 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx80 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitminopts': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} JITMinOpts R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} JITMinOpts R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'r2r_jitforcerelocs': if (configuration == 'Release' || configuration == 'Checked') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} ForceRelocs R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} ForceRelocs R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'longgc': if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Long-Running GC Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Long-Running GC Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'gcsimulator': if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} GC Simulator", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} GC Simulator", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } break case 'minopts': - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - MinOpts)", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break case 'forcerelocs': - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - ForceRelocs)", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break case 'jitstress1': - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStress=1)", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break case 'jitstress2': - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStress=2)", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break case 'jitstressregs1': - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=1)", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break case 'jitstressregs2': - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=2)", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break case 'jitstressregs3': - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=3)", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break case 'jitstressregs4': - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=4)", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break case 'jitstressregs8': - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=8)", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break case 'jitstressregs0x10': - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=0x10)", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break case 'jitstressregs0x80': - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - JitStressRegs=0x80)", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break @@ -1346,150 +1597,137 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os, case 'gcstress0xc_jitstress2': case 'gcstress0xc_minopts_heapverify1': def displayStr = getStressModeDisplayName(scenario) - assert (os == 'Windows_NT') Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test (Jit - ${displayStr})", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") break default: - println("Unknown scenario: ${arch} ${jit} ${scenario}"); + println("Unknown scenario: ${os} ${arch} ${jit} ${scenario}"); assert false break } break - case 'x86lb': - assert (scenario == 'default' || scenario == 'r2r' || scenario == 'pri1r2r' || scenario == 'gcstress15_pri1r2r' || scenario == 'longgc' || scenario == 'gcsimulator' || + // editor brace matching: } + case 'x86lb': // editor brace matching: { + assert (os == 'Windows_NT') + assert (scenario == 'default' || + scenario == 'r2r' || + scenario == 'pri1r2r' || + scenario == 'gcstress15_pri1r2r' || + scenario == 'longgc' || + scenario == 'gcsimulator' || Constants.r2rJitStressScenarios.indexOf(scenario) != -1) - // For windows, x86 runs by default + def arch = 'x86' - def jit = 'ryujit' - if (architecture == 'x86lb') { - jit = 'legacy_backend' - } - - if (scenario == 'default') { - if (os == 'Windows_NT') { + def jit = 'legacy_backend' + switch (scenario) { + case 'default': if (configuration == 'Checked') { Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build and Test") } - } - else { - // default trigger - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Build", "(?i).*test\\W+${arch}\\W+${osGroup}.\\W+${jit}.*") - } - } - else if (scenario == 'r2r') { - if (os == 'Windows_NT') { + break + case 'r2r': if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri0 Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri0 Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'pri1r2r') { - if (os == 'Windows_NT') { + break + case 'pri1r2r': if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} R2R pri1 Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'gcstress15_pri1r2r'){ - if (os == 'Windows_NT'){ - if (configuration == 'Release'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} GCStress 15 R2R pri1 Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'gcstress15_pri1r2r': + if (configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} GCStress 15 R2R pri1 Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'r2r_jitstress1'){ - if (configuration == 'Release' || configuration == 'Checked') { - if (os == 'Windows_NT'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'r2r_jitstress1': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress1 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'r2r_jitstress2'){ - if (configuration == 'Release' || configuration == 'Checked') { - if (os == 'Windows_NT'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'r2r_jitstress2': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstress2 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'r2r_jitstressregs1'){ - if (configuration == 'Release' || configuration == 'Checked') { - if (os == 'Windows_NT'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs1 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'r2r_jitstressregs1': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs1 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'r2r_jitstressregs2'){ - if (configuration == 'Release' || configuration == 'Checked') { - if (os == 'Windows_NT'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs2 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'r2r_jitstressregs2': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs2 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'r2r_jitstressregs3'){ - if (configuration == 'Release' || configuration == 'Checked') { - if (os == 'Windows_NT'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs3 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'r2r_jitstressregs3': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs3 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'r2r_jitstressregs4'){ - if (configuration == 'Release' || configuration == 'Checked') { - if (os == 'Windows_NT'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs4 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'r2r_jitstressregs4': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs4 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'r2r_jitstressregs8'){ - if (configuration == 'Release' || configuration == 'Checked') { - if (os == 'Windows_NT'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs8 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'r2r_jitstressregs8': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregs8 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'r2r_jitstressregsx10'){ - if (configuration == 'Release' || configuration == 'Checked') { - if (os == 'Windows_NT'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx10 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'r2r_jitstressregsx10': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx10 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'r2r_jitstressregsx80'){ - if (configuration == 'Release' || configuration == 'Checked') { - if (os == 'Windows_NT'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx80 R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'r2r_jitstressregsx80': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitstressregsx80 R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'r2r_jitminopts'){ - if (configuration == 'Release' || configuration == 'Checked') { - if (os == 'Windows_NT'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitminopts R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'r2r_jitminopts': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitminopts R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'r2r_jitforcerelocs'){ - if (configuration == 'Release' || configuration == 'Checked') { - if (os == 'Windows_NT'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitforcerelocs R2R Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'r2r_jitforcerelocs': + if (configuration == 'Release' || configuration == 'Checked') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} jitforcerelocs R2R Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'longgc') { - if (os == 'Windows_NT'){ - if (configuration == 'Release'){ - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Long-Running GC Build & Test", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + break + case 'longgc': + if (configuration == 'Release') { + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} Long-Running GC Build & Test", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } - } - else if (scenario == 'gcsimulator') { - if (os == 'Windows_NT') { + break + case 'gcsimulator': if (configuration == 'Release') { - Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} GC Simulator", "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") + Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${arch} ${jit} ${configuration} GC Simulator", + "(?i).*test\\W+${os}\\W+${arch}\\W+${jit}\\W+${configuration}\\W+${scenario}.*") } - } + break + default: + println("Unknown scenario: ${os} ${arch} ${jit} ${scenario}"); + assert false + break } break + // editor brace matching: } default: println("Unknown architecture: ${architecture}"); assert false @@ -1552,7 +1790,8 @@ combinedScenarios.each { scenario -> return } break - case 'x86ryujit': + case 'x86': + case 'x86compatjit': case 'x86lb': // Skip non-windows if (os != 'Windows_NT') { @@ -1567,6 +1806,7 @@ combinedScenarios.each { scenario -> assert false break } + // Skip scenarios (blanket skipping for jit stress modes, which are good most everywhere // with checked builds def enableCorefxTesting = false @@ -1579,7 +1819,7 @@ combinedScenarios.each { scenario -> // Since these are just execution time differences, // skip platforms that don't execute the tests here (Windows_NT only) - def isEnabledOS = os == 'Windows_NT' || (os == 'Ubuntu' && enableCorefxTesting) + def isEnabledOS = (os == 'Windows_NT') || (os == 'Ubuntu' && enableCorefxTesting) if (!isEnabledOS || isBuildOnly) { return } @@ -1593,11 +1833,16 @@ combinedScenarios.each { scenario -> case 'x64': // Everything implemented break - case 'x86ryujit': + case 'x86': if (enableCorefxTesting) { return } break + case 'x86compatjit': + case 'x86lb': + // No stress modes for compatjit.dll, legacyjit.dll. + // (There's no technical reason we couldn't allow these.) + return default: return } @@ -1641,7 +1886,7 @@ combinedScenarios.each { scenario -> if (os != 'Windows_NT' && os != 'Ubuntu' && os != 'OSX') { return } - if (architecture != 'x64' && architecture != 'x86') { + if (architecture != 'x64') { return } if (configuration != 'Checked') { @@ -1772,19 +2017,21 @@ combinedScenarios.each { scenario -> // Calculate the build steps, archival, and xunit results switch (os) { - case 'Windows_NT': + case 'Windows_NT': // editor brace matching: { switch (architecture) { case 'x64': - case 'x86ryujit': + case 'x86': + case 'x86compatjit': case 'x86lb': def arch = architecture def buildOpts = '' - if (architecture == 'x86ryujit') { + if (architecture == 'x86compatjit') { arch = 'x86' - buildOpts = 'altjitcrossgen' + buildOpts = 'compatjitcrossgen' } else if (architecture == 'x86lb') { arch = 'x86' + buildOpts = 'legacyjitcrossgen' } if (Constants.jitStressModeScenarios.containsKey(scenario) || @@ -1899,6 +2146,7 @@ combinedScenarios.each { scenario -> } runtestArguments = "${lowerConfiguration} ${arch} ${gcstressStr} ${crossgenStr} ${runcrossgentestsStr} ${runjitstressStr} ${runjitstressregsStr} ${runjitmioptsStr} ${runjitforcerelocsStr} ${runjitdisasmStr} ${gcTestArguments}" + if (Constants.jitStressModeScenarios.containsKey(scenario)) { if (enableCorefxTesting) { // Sync to corefx repo @@ -1915,29 +2163,21 @@ combinedScenarios.each { scenario -> } else { def stepScriptLocation = "%WORKSPACE%\\bin\\tests\\SetStressModes.bat" - - if (architecture == 'x86ryujit'){ - def x86Vars = ['COMPLUS_AltJit' : '*', 'COMPLUS_AltJitName' : 'protojit.dll', 'COMPLUS_NoGuiOnAssert' : '1'] - buildCommands += genStressModeScriptStep(os, scenario, Constants.jitStressModeScenarios[scenario] + x86Vars, stepScriptLocation) - } - else { - buildCommands += genStressModeScriptStep(os, scenario, Constants.jitStressModeScenarios[scenario], stepScriptLocation) - } - + buildCommands += genStressModeScriptStep(os, scenario, Constants.jitStressModeScenarios[scenario], stepScriptLocation) // Run tests with the buildCommands += "tests\\runtest.cmd ${runtestArguments} TestEnv ${stepScriptLocation}" } } - else if (architecture == 'x64') { + else if (architecture == 'x64' || architecture == 'x86') { buildCommands += "tests\\runtest.cmd ${runtestArguments}" } - else if (architecture == 'x86ryujit') { - def testEnvLocation = "%WORKSPACE%\\tests\\x86\\ryujit_x86_testenv.cmd" - - buildCommands += "tests\\runtest.cmd ${runtestArguments} TestEnv ${testEnvLocation}" + else if (architecture == 'x86compatjit') { + def testEnvLocation = "%WORKSPACE%\\tests\\x86\\compatjit_x86_testenv.cmd" + buildCommands += "tests\\runtest.cmd ${runtestArguments} Exclude0 x86_legacy_backend_issues.targets TestEnv ${testEnvLocation}" } else if (architecture == 'x86lb') { - buildCommands += "tests\\runtest.cmd ${runtestArguments} Exclude0 x86_legacy_backend_issues.targets" + def testEnvLocation = "%WORKSPACE%\\tests\\x86\\legacyjit_x86_testenv.cmd" + buildCommands += "tests\\runtest.cmd ${runtestArguments} Exclude0 x86_legacy_backend_issues.targets TestEnv ${testEnvLocation}" } } @@ -2026,6 +2266,7 @@ combinedScenarios.each { scenario -> break } break + // editor brace matching: } case 'Ubuntu': case 'Ubuntu16.04': case 'Ubuntu16.10': @@ -2036,13 +2277,14 @@ combinedScenarios.each { scenario -> case 'RHEL7.2': case 'OpenSUSE13.2': case 'OpenSUSE42.1': - case 'Fedora23': + case 'Fedora23': // editor brace matching: { switch (architecture) { case 'x64': - case 'x86ryujit': + case 'x86': + case 'x86compatjit': case 'x86lb': def arch = architecture - if (architecture == 'x86ryujit' || architecture == 'x86lb') { + if (architecture == 'x86compatjit' || architecture == 'x86lb') { arch = 'x86' } @@ -2157,12 +2399,13 @@ combinedScenarios.each { scenario -> break } break + // editor brace matching: } default: println("Unknown os: ${os}"); assert false break - } - + } // os + newJob.with { steps { if (os == 'Windows_NT') { @@ -2205,7 +2448,7 @@ combinedScenarios.each { scenario -> } } } - } + } // newJob.with } // os } // configuration diff --git a/src/.nuget/Microsoft.NETCore.Jit/win/Microsoft.NETCore.Jit.pkgproj b/src/.nuget/Microsoft.NETCore.Jit/win/Microsoft.NETCore.Jit.pkgproj index 0a43ac4..66106c3 100644 --- a/src/.nuget/Microsoft.NETCore.Jit/win/Microsoft.NETCore.Jit.pkgproj +++ b/src/.nuget/Microsoft.NETCore.Jit/win/Microsoft.NETCore.Jit.pkgproj @@ -8,6 +8,7 @@ + runtimes/$(PackageTargetRuntime)/native diff --git a/src/jit/CMakeLists.txt b/src/jit/CMakeLists.txt index a5b5fc5..fb3c1ca 100644 --- a/src/jit/CMakeLists.txt +++ b/src/jit/CMakeLists.txt @@ -7,7 +7,7 @@ include_directories("../inc") # Enable the following for UNIX altjit on Windows # add_definitions(-DALT_JIT) -if (CLR_CMAKE_TARGET_ARCH_AMD64) +if (CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386) add_definitions(-DFEATURE_SIMD) add_definitions(-DFEATURE_AVX_SUPPORT) endif () @@ -195,19 +195,17 @@ endif() add_custom_target(jit_exports DEPENDS ${JIT_EXPORTS_FILE}) -set(JIT_BASE_NAME clrjit) -if (CLR_BUILD_JIT32) - set(JIT_BASE_NAME ryujit) -endif() - -if(WIN32) - add_definitions(-DFX_VER_INTERNALNAME_STR=${JIT_BASE_NAME}.dll) -endif(WIN32) - add_subdirectory(dll) add_subdirectory(crossgen) add_subdirectory(standalone) -if (CLR_CMAKE_PLATFORM_ARCH_I386 OR CLR_CMAKE_PLATFORM_ARCH_ARM) +if (CLR_CMAKE_PLATFORM_ARCH_ARM) add_subdirectory(protojit) -endif (CLR_CMAKE_PLATFORM_ARCH_I386 OR CLR_CMAKE_PLATFORM_ARCH_ARM) +endif (CLR_CMAKE_PLATFORM_ARCH_ARM) + +if (CLR_CMAKE_PLATFORM_ARCH_I386) + add_subdirectory(legacyjit) + if (NOT CLR_BUILD_JIT32) + add_subdirectory(compatjit) + endif () +endif (CLR_CMAKE_PLATFORM_ARCH_I386) diff --git a/src/jit/compatjit/.gitmirror b/src/jit/compatjit/.gitmirror new file mode 100644 index 0000000..f507630 --- /dev/null +++ b/src/jit/compatjit/.gitmirror @@ -0,0 +1 @@ +Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror. \ No newline at end of file diff --git a/src/jit/compatjit/CMakeLists.txt b/src/jit/compatjit/CMakeLists.txt new file mode 100644 index 0000000..360be96 --- /dev/null +++ b/src/jit/compatjit/CMakeLists.txt @@ -0,0 +1,66 @@ +project(compatjit) + +# This compatjit.dll is only built if we are not building JIT32 as compatjit.dll. +# It is the same build as legacyjit.dll, just with a different name, and not +# built as an altjit. + +add_definitions(-DLEGACY_BACKEND) + +add_definitions(-DFEATURE_NO_HOST) +add_definitions(-DSELF_NO_HOST) +# Note that legacy back-end does not define FEATURE_READYTORUN_COMPILER. +remove_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE) + +# No SIMD in legacy back-end. +remove_definitions(-DFEATURE_SIMD) +remove_definitions(-DFEATURE_AVX_SUPPORT) + +if(WIN32) + add_definitions(-DFX_VER_INTERNALNAME_STR=compatjit.dll) +endif(WIN32) + +add_library_clr(compatjit + SHARED + ${SHARED_LIB_SOURCES} +) + +add_dependencies(compatjit jit_exports) + +set_property(TARGET compatjit APPEND_STRING PROPERTY LINK_FLAGS ${JIT_EXPORTS_LINKER_OPTION}) +set_property(TARGET compatjit APPEND_STRING PROPERTY LINK_DEPENDS ${JIT_EXPORTS_FILE}) + +set(RYUJIT_LINK_LIBRARIES + utilcodestaticnohost + gcinfo +) + +if(CLR_CMAKE_PLATFORM_UNIX) + list(APPEND RYUJIT_LINK_LIBRARIES + mscorrc_debug + coreclrpal + palrt + ) +else() + list(APPEND RYUJIT_LINK_LIBRARIES + ${STATIC_MT_CRT_LIB} + ${STATIC_MT_VCRT_LIB} + kernel32.lib + advapi32.lib + ole32.lib + oleaut32.lib + uuid.lib + user32.lib + version.lib + shlwapi.lib + bcrypt.lib + crypt32.lib + RuntimeObject.lib + ) +endif(CLR_CMAKE_PLATFORM_UNIX) + +target_link_libraries(compatjit + ${RYUJIT_LINK_LIBRARIES} +) + +# add the install targets +install_clr(compatjit) diff --git a/src/jit/crossgen/CMakeLists.txt b/src/jit/crossgen/CMakeLists.txt index f79d9e7..6440e91 100644 --- a/src/jit/crossgen/CMakeLists.txt +++ b/src/jit/crossgen/CMakeLists.txt @@ -1,7 +1,7 @@ include(${CLR_DIR}/crossgen.cmake) -if(CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM) +if(CLR_CMAKE_TARGET_ARCH_ARM) add_definitions(-DLEGACY_BACKEND) endif() -add_library_clr(${JIT_BASE_NAME}_crossgen ${SOURCES}) +add_library_clr(clrjit_crossgen ${SOURCES}) diff --git a/src/jit/dll/CMakeLists.txt b/src/jit/dll/CMakeLists.txt index fcf869c..43ed07e 100644 --- a/src/jit/dll/CMakeLists.txt +++ b/src/jit/dll/CMakeLists.txt @@ -1,20 +1,20 @@ project(ClrJit) -if(CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM) +if(CLR_CMAKE_TARGET_ARCH_ARM) add_definitions(-DLEGACY_BACKEND) -endif(CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM) +endif(CLR_CMAKE_TARGET_ARCH_ARM) # Disable the following for UNIX altjit on Windows if(CLR_CMAKE_PLATFORM_UNIX) add_compile_options(-fPIC) - add_library_clr(${JIT_BASE_NAME}_static + add_library_clr(clrjit_static STATIC ${SHARED_LIB_SOURCES} ) - add_dependencies(${JIT_BASE_NAME}_static coreclrpal gcinfo) + add_dependencies(clrjit_static coreclrpal gcinfo) else() - add_library_clr(${JIT_BASE_NAME}_static + add_library_clr(clrjit_static ${SOURCES} ) # Disable up to here (see above) the following for UNIX altjit on Windows diff --git a/src/jit/legacyjit/.gitmirror b/src/jit/legacyjit/.gitmirror new file mode 100644 index 0000000..f507630 --- /dev/null +++ b/src/jit/legacyjit/.gitmirror @@ -0,0 +1 @@ +Only contents of this folder, excluding subfolders, will be mirrored by the Git-TFS Mirror. \ No newline at end of file diff --git a/src/jit/legacyjit/CMakeLists.txt b/src/jit/legacyjit/CMakeLists.txt new file mode 100644 index 0000000..7a45739 --- /dev/null +++ b/src/jit/legacyjit/CMakeLists.txt @@ -0,0 +1,62 @@ +project(legacyjit) + +add_definitions(-DLEGACY_BACKEND) +add_definitions(-DALT_JIT) +add_definitions(-DFEATURE_NO_HOST) +add_definitions(-DSELF_NO_HOST) +# Note that legacy back-end does not define FEATURE_READYTORUN_COMPILER. +remove_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE) + +# No SIMD in legacy back-end. +remove_definitions(-DFEATURE_SIMD) +remove_definitions(-DFEATURE_AVX_SUPPORT) + +if(WIN32) + add_definitions(-DFX_VER_INTERNALNAME_STR=legacyjit.dll) +endif(WIN32) + +add_library_clr(legacyjit + SHARED + ${SHARED_LIB_SOURCES} +) + +add_dependencies(legacyjit jit_exports) + +set_property(TARGET legacyjit APPEND_STRING PROPERTY LINK_FLAGS ${JIT_EXPORTS_LINKER_OPTION}) +set_property(TARGET legacyjit APPEND_STRING PROPERTY LINK_DEPENDS ${JIT_EXPORTS_FILE}) + +set(RYUJIT_LINK_LIBRARIES + utilcodestaticnohost + gcinfo +) + +if(CLR_CMAKE_PLATFORM_UNIX) + list(APPEND RYUJIT_LINK_LIBRARIES + mscorrc_debug + coreclrpal + palrt + ) +else() + list(APPEND RYUJIT_LINK_LIBRARIES + ${STATIC_MT_CRT_LIB} + ${STATIC_MT_VCRT_LIB} + kernel32.lib + advapi32.lib + ole32.lib + oleaut32.lib + uuid.lib + user32.lib + version.lib + shlwapi.lib + bcrypt.lib + crypt32.lib + RuntimeObject.lib + ) +endif(CLR_CMAKE_PLATFORM_UNIX) + +target_link_libraries(legacyjit + ${RYUJIT_LINK_LIBRARIES} +) + +# add the install targets +install_clr(legacyjit) diff --git a/src/jit/protojit/CMakeLists.txt b/src/jit/protojit/CMakeLists.txt index 259c7da..91c69e9 100644 --- a/src/jit/protojit/CMakeLists.txt +++ b/src/jit/protojit/CMakeLists.txt @@ -6,11 +6,9 @@ add_definitions(-DSELF_NO_HOST) add_definitions(-DFEATURE_READYTORUN_COMPILER) remove_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE) -# Enable SIMD support for RyuJIT/x86. -if (CLR_CMAKE_TARGET_ARCH_I386) - add_definitions(-DFEATURE_SIMD) - add_definitions(-DFEATURE_AVX_SUPPORT) -endif (CLR_CMAKE_TARGET_ARCH_I386) +if(WIN32) + add_definitions(-DFX_VER_INTERNALNAME_STR=protojit.dll) +endif(WIN32) add_library_clr(protojit SHARED @@ -35,7 +33,8 @@ if(CLR_CMAKE_PLATFORM_UNIX) ) else() list(APPEND RYUJIT_LINK_LIBRARIES - msvcrt.lib + ${STATIC_MT_CRT_LIB} + ${STATIC_MT_VCRT_LIB} kernel32.lib advapi32.lib ole32.lib diff --git a/src/jit/standalone/CMakeLists.txt b/src/jit/standalone/CMakeLists.txt index 2e63170..f20d379 100644 --- a/src/jit/standalone/CMakeLists.txt +++ b/src/jit/standalone/CMakeLists.txt @@ -1,22 +1,27 @@ project(ryujit) + add_definitions(-DFEATURE_NO_HOST) add_definitions(-DSELF_NO_HOST) add_definitions(-DFEATURE_READYTORUN_COMPILER) remove_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE) -if(CLR_CMAKE_TARGET_ARCH_I386 OR CLR_CMAKE_TARGET_ARCH_ARM) +if(CLR_CMAKE_TARGET_ARCH_ARM) add_definitions(-DLEGACY_BACKEND) endif() -add_library_clr(${JIT_BASE_NAME} +if(WIN32) + add_definitions(-DFX_VER_INTERNALNAME_STR=clrjit.dll) +endif(WIN32) + +add_library_clr(clrjit SHARED ${SHARED_LIB_SOURCES} ) -add_dependencies(${JIT_BASE_NAME} jit_exports) +add_dependencies(clrjit jit_exports) -set_property(TARGET ${JIT_BASE_NAME} APPEND_STRING PROPERTY LINK_FLAGS ${JIT_EXPORTS_LINKER_OPTION}) -set_property(TARGET ${JIT_BASE_NAME} APPEND_STRING PROPERTY LINK_DEPENDS ${JIT_EXPORTS_FILE}) +set_property(TARGET clrjit APPEND_STRING PROPERTY LINK_FLAGS ${JIT_EXPORTS_LINKER_OPTION}) +set_property(TARGET clrjit APPEND_STRING PROPERTY LINK_DEPENDS ${JIT_EXPORTS_FILE}) set(RYUJIT_LINK_LIBRARIES utilcodestaticnohost @@ -47,12 +52,12 @@ else() ) endif(CLR_CMAKE_PLATFORM_UNIX) -target_link_libraries(${JIT_BASE_NAME} +target_link_libraries(clrjit ${RYUJIT_LINK_LIBRARIES} ) # add the install targets -install_clr(${JIT_BASE_NAME}) +install_clr(clrjit) # Enable profile guided optimization -add_pgo(${JIT_BASE_NAME}) +add_pgo(clrjit) diff --git a/tests/runtest.cmd b/tests/runtest.cmd index 86ed0dd..23b4bb5 100644 --- a/tests/runtest.cmd +++ b/tests/runtest.cmd @@ -170,8 +170,8 @@ xcopy /s "%__BinDir%" "%CORE_ROOT%" :SkipCoreRootSetup -if defined __Exclude (if not exist %__Exclude% echo %__MsgPrefix%Error: Exclusion .targets file not found && exit /b 1) -if defined __TestEnv (if not exist %__TestEnv% echo %__MsgPrefix%Error: Test Environment script not found && exit /b 1) +if defined __Exclude (if not exist %__Exclude% echo %__MsgPrefix%Error: Exclusion file %__Exclude% not found && exit /b 1) +if defined __TestEnv (if not exist %__TestEnv% echo %__MsgPrefix%Error: Test Environment script %__TestEnv% not found && exit /b 1) REM These log files are created automatically by the test run process. Q: what do they depend on being set? set __TestRunHtmlLog=%__LogsDir%\TestRun_%__BuildOS%__%__BuildArch%__%__BuildType%.html diff --git a/tests/x86/compatjit_x86_testenv.cmd b/tests/x86/compatjit_x86_testenv.cmd new file mode 100644 index 0000000..d245370 --- /dev/null +++ b/tests/x86/compatjit_x86_testenv.cmd @@ -0,0 +1,8 @@ +@REM ------------------------------------------------------------------------- +@REM +@REM This script provides x86 compatjit test environment settings +@REM +@REM ------------------------------------------------------------------------- + +@REM Use compatjit.dll, not clrjit.dll. +set COMPlus_UseWindowsX86CoreLegacyJit=1 diff --git a/tests/x86/legacyjit_x86_testenv.cmd b/tests/x86/legacyjit_x86_testenv.cmd new file mode 100644 index 0000000..41da4cf --- /dev/null +++ b/tests/x86/legacyjit_x86_testenv.cmd @@ -0,0 +1,52 @@ +@REM ------------------------------------------------------------------------- +@REM +@REM This script provides x86 LEGACY_BACKEND JIT test environment settings +@REM +@REM ------------------------------------------------------------------------- + +set COMPLUS_AltJit=* +set COMPLUS_AltJitNgen=* +set COMPLUS_AltJitName=legacyjit.dll +set COMPLUS_NoGuiOnAssert=1 +set COMPLUS_AltJitAssertOnNYI=1 + +@REM ------------------------------------------------------------------------- +@REM A JitFuncInfoLogFile is a per-function record of which functions were +@REM compiled, and what asserts and NYI were hit. +@REM +@REM If you wish to collect FuncInfo, choose one of the following collection +@REM methods to use, by uncommenting the appropriate option. + +@REM Option 1: collect a single FuncInfoLogFile for all tests. +@REM TO DO: set a single, fully-qualified pathname here. +@REM ==== Uncomment below +@REM set COMPLUS_JitFuncInfoLogFile=%TEMP%\JitFuncInfoLogFile.txt +@REM ==== Uncomment above + +@REM Option #2: collect one FuncInfoLogFile per test, and put it in +@REM the same directory as the test. Note that each tests lives in +@REM its own directory, and the current directory is set to the unique +@REM test directory before this script is invoked. +@REM ==== Uncomment below +@REM set __TestDir=%CD% +@REM if %__TestDir:~-1%==\ set __TestDir=%__TestDir:~0,-1% +@REM set COMPLUS_JitFuncInfoLogFile=%__TestDir%\FuncInfo.txt +@REM ==== Uncomment above + +@REM Option #3: collect one FuncInfoLogFile per test, and put all of +@REM them in a separate directory tree rooted at %__FuncInfoRootDir%. +@REM If that is set globally already, then use it. Otherwise, use a +@REM default set here. The directory tree will mirror the test binary tree. +@REM Note that the current directory is set to the unique test directory +@REM before this script is invoked. +@REM ==== Uncomment below +@REM if not defined __FuncInfoRootDir set __FuncInfoRootDir=c:\FuncInfos +@REM set __TestDir=%CD% +@REM if %__TestDir:~-1%==\ set __TestDir=%__TestDir:~0,-1% +@REM if %__TestDir:~1,1%==: set __TestDir=%__TestDir:~3% +@REM set __FuncInfoDir=%__FuncInfoRootDir%\%__TestDir% +@REM if not exist %__FuncInfoDir% mkdir %__FuncInfoDir% +@REM set COMPLUS_JitFuncInfoLogFile=%__FuncInfoDir%\FuncInfo.txt +@REM ==== Uncomment above + +@REM ------------------------------------------------------------------------- diff --git a/tests/x86/ryujit_x86_testenv.cmd b/tests/x86/ryujit_x86_testenv.cmd index c9176ce..97e7ab8 100644 --- a/tests/x86/ryujit_x86_testenv.cmd +++ b/tests/x86/ryujit_x86_testenv.cmd @@ -1,51 +1,5 @@ -@REM ------------------------------------------------------------------------- -@REM -@REM This script provides x86 Ryujit test environment settings +@REM This is no longer needed, except the CI system, during the conversion of RyuJIT/x86 +@REM to the default, still looks for it for the old "ryujit" tasks. Leave it here, and the +@REM "ryujit" tasks will just run the default JIT (now RyuJIT). @REM -@REM ------------------------------------------------------------------------- - -set COMPLUS_AltJit=* -set COMPLUS_AltJitName=protojit.dll -set COMPLUS_NoGuiOnAssert=1 -set COMPLUS_AltJitAssertOnNYI=1 - -@REM ------------------------------------------------------------------------- -@REM A JitFuncInfoLogFile is a per-function record of which functions were -@REM compiled, and what asserts and NYI were hit. -@REM -@REM If you wish to collect FuncInfo, choose one of the following collection -@REM methods to use, by uncommenting the appropriate option. - -@REM Option 1: collect a single FuncInfoLogFile for all tests. -@REM TO DO: set a single, fully-qualified pathname here. -@REM ==== Uncomment below -@REM set COMPLUS_JitFuncInfoLogFile=%TEMP%\JitFuncInfoLogFile.txt -@REM ==== Uncomment above - -@REM Option #2: collect one FuncInfoLogFile per test, and put it in -@REM the same directory as the test. Note that each tests lives in -@REM its own directory, and the current directory is set to the unique -@REM test directory before this script is invoked. -@REM ==== Uncomment below -@REM set __TestDir=%CD% -@REM if %__TestDir:~-1%==\ set __TestDir=%__TestDir:~0,-1% -@REM set COMPLUS_JitFuncInfoLogFile=%__TestDir%\FuncInfo.txt -@REM ==== Uncomment above - -@REM Option #3: collect one FuncInfoLogFile per test, and put all of -@REM them in a separate directory tree rooted at %__FuncInfoRootDir%. -@REM If that is set globally already, then use it. Otherwise, use a -@REM default set here. The directory tree will mirror the test binary tree. -@REM Note that the current directory is set to the unique test directory -@REM before this script is invoked. -@REM ==== Uncomment below -@REM if not defined __FuncInfoRootDir set __FuncInfoRootDir=c:\FuncInfos -@REM set __TestDir=%CD% -@REM if %__TestDir:~-1%==\ set __TestDir=%__TestDir:~0,-1% -@REM if %__TestDir:~1,1%==: set __TestDir=%__TestDir:~3% -@REM set __FuncInfoDir=%__FuncInfoRootDir%\%__TestDir% -@REM if not exist %__FuncInfoDir% mkdir %__FuncInfoDir% -@REM set COMPLUS_JitFuncInfoLogFile=%__FuncInfoDir%\FuncInfo.txt -@REM ==== Uncomment above - -@REM ------------------------------------------------------------------------- +@REM After the .NET CI is updated, this can be deleted. -- 2.7.4