Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions eng/pipelines/common/templates/runtimes/run-test-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ parameters:
hotColdSplitting: false
liveLibrariesBuildConfig: ''
compositeBuildMode: false
largeVersionBubble: false
useCodeFlowEnforcement: ''
helixQueues: ''
condition: true
Expand Down Expand Up @@ -129,6 +130,9 @@ jobs:
- ${{ if eq(parameters.hotColdSplitting, true) }}:
- name: LogNamePrefix
value: TestRunLogs_R2R_CG2_HotColdSplitting
- ${{ if eq(parameters.largeVersionBubble, true) }}:
- name: LogNamePrefix
value: TestRunLogs_R2R_CG2_LargeVersionBubble

- name: testFilterArg
value: ''
Expand Down Expand Up @@ -316,6 +320,7 @@ jobs:
runInterpreter: ${{ parameters.runInterpreter }}
tieringTest: ${{ parameters.tieringTest }}
hotColdSplitting: ${{ parameters.hotColdSplitting }}
largeVersionBubble: ${{ parameters.largeVersionBubble }}

${{ if eq(variables['System.TeamProject'], 'internal') }}:
# Access token variable for internal project from the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ parameters:
runInterpreter: ''
tieringTest: ''
hotColdSplitting: ''
largeVersionBubble: false
nativeAotTest: ''
longRunningGcTests: ''
gcSimulatorTests: ''
Expand Down Expand Up @@ -59,6 +60,7 @@ steps:
_RunInterpreter: ${{ parameters.runInterpreter }}
_TieringTest: ${{ parameters.tieringTest }}
_HotColdSplitting: ${{ parameters.hotColdSplitting }}
_LargeVersionBubble: ${{ parameters.largeVersionBubble }}
_NativeAotTest: ${{ parameters.nativeAotTest }}
_LongRunningGcTests: ${{ parameters.longRunningGcTests }}
_GcSimulatorTests: ${{ parameters.gcSimulatorTests }}
Expand Down
18 changes: 18 additions & 0 deletions eng/pipelines/coreclr/crossgen2-composite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,21 @@ extends:
displayNameArgs: Composite
liveLibrariesBuildConfig: Release
unifiedArtifactsName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)

# Composite mode with large version bubble (inputbubble)
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
buildConfig: checked
platforms:
- linux_x64
- windows_x64
jobParameters:
testGroup: innerloop
readyToRun: true
compositeBuildMode: true
largeVersionBubble: true
displayNameArgs: Composite_LargeVersionBubble
liveLibrariesBuildConfig: Release
unifiedArtifactsName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,7 @@ public IEnumerable<MethodWithGCInfo> EnumerateCompiledMethods(EcmaModule moduleT
// ARM32 relocs require the thumb bit set, and the JIT/crossgen doesn't set it properly for the usages in async methods.
// https://github.com/dotnet/runtime/issues/125337
// https://github.com/dotnet/runtime/issues/125338
if ((CompilationModuleGroup.IsCompositeBuildMode || Target.Architecture == TargetArchitecture.ARM)
if (Target.Architecture == TargetArchitecture.ARM
&& (method.IsAsyncVariant() || method.IsCompilerGeneratedILBodyForAsync()))
{
continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,7 @@ private static mdToken FindGenericMethodArgTypeSpec(EcmaModule module)
throw new NotSupportedException();
}

public static bool ShouldSkipCompilation(InstructionSetSupport instructionSetSupport, MethodDesc methodNeedingCode)
public static bool ShouldSkipCompilation(InstructionSetSupport instructionSetSupport, MethodDesc methodNeedingCode, ReadyToRunCodegenCompilation compilation = null)
{
bool targetAllowsRuntimeCodeGeneration = ((ReadyToRunCompilerContext)methodNeedingCode.Context).TargetAllowsRuntimeCodeGeneration;
if (methodNeedingCode.IsAggressiveOptimization && targetAllowsRuntimeCodeGeneration)
Expand Down Expand Up @@ -569,6 +569,14 @@ public static bool ShouldSkipCompilation(InstructionSetSupport instructionSetSup
// Special methods on delegate types
return true;
}
// Async resumption stubs use faux IL with synthetic tokens. When CoreLib is in the
// version bubble the stubs are not wrapped with ManifestModuleWrappedMethodIL, so
// token resolution for InstantiatedType / ParameterizedType falls through to a path
// that cannot handle them. Skip compilation and let the runtime JIT these stubs.
Comment on lines +572 to +575
if (methodNeedingCode.IsCompilerGeneratedILBodyForAsync() && compilation != null && compilation.NodeFactory.CompilationModuleGroup.IsCompositeBuildMode)
{
return true;
}
if (ShouldCodeNotBeCompiledIntoFinalImage(instructionSetSupport, methodNeedingCode))
{
return true;
Expand Down Expand Up @@ -770,7 +778,7 @@ public void CompileMethod(MethodWithGCInfo methodCodeNodeNeedingCode, Logger log

try
{
if (ShouldSkipCompilation(_compilation.InstructionSetSupport, MethodBeingCompiled))
if (ShouldSkipCompilation(_compilation.InstructionSetSupport, MethodBeingCompiled, _compilation))
{
if (logger.IsVerbose)
logger.Writer.WriteLine($"Info: Method `{MethodBeingCompiled}` was not compiled because it is skipped.");
Expand Down
4 changes: 2 additions & 2 deletions src/tests/Common/CLRTest.CrossGen.targets
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ if [ ! -z ${RunCrossGen2+x} ]%3B then
__R2RDumpCommand+=" dotnet"
fi
__R2RDumpCommand+=" $CORE_ROOT/R2RDump/R2RDump.dll"
__R2RDumpCommand+=" --header --sc --in $__OutputFileFinal --out $__OutputFileFinal.r2rdump --val"
__R2RDumpCommand+=" --header --sc --in $__OutputFileFinal --out $__OutputFileFinal.r2rdump --val --rp $CORE_ROOT"

__Command="$_DebuggerFullPath $CORE_ROOT/crossgen2/crossgen2"
__Command+=" @$__ResponseFile"
Expand Down Expand Up @@ -289,7 +289,7 @@ if defined RunCrossGen2 (
set __DotNet="dotnet"
)
set __R2RDumpCommand=!_DebuggerFullPath! !__DotNet! "!CORE_ROOT!\r2rdump\r2rdump.dll"
set __R2RDumpCommand=!__R2RDumpCommand! --header --sc --in !__OutputFile! --out !__OutputFile!.r2rdump --val
set __R2RDumpCommand=!__R2RDumpCommand! --header --sc --in !__OutputFile! --out !__OutputFile!.r2rdump --val --rp "!CORE_ROOT!"

set __Command=!_DebuggerFullPath! "!CORE_ROOT!\crossgen2\crossgen2.exe"
set __Command=!__Command! @"!__ResponseFile!"
Expand Down
4 changes: 4 additions & 0 deletions src/tests/Common/helixpublishwitharcade.proj
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
<_RunInterpreter>false</_RunInterpreter>
<_TieringTest>false</_TieringTest>
<_HotColdSplitting>false</_HotColdSplitting>
<_LargeVersionBubble>false</_LargeVersionBubble>
<_NativeAotTest>false</_NativeAotTest>
<_TimeoutPerTestCollectionInMinutes>123</_TimeoutPerTestCollectionInMinutes>
<_TimeoutPerTestInMinutes>234</_TimeoutPerTestInMinutes>
Expand Down Expand Up @@ -107,6 +108,7 @@
RunInterpreter=$(_RunInterpreter);
TieringTest=$(_TieringTest);
HotColdSplitting=$(_HotColdSplitting);
LargeVersionBubble=$(_LargeVersionBubble);
NativeAotTest=$(_NativeAotTest);
TimeoutPerTestCollectionInMinutes=$(_TimeoutPerTestCollectionInMinutes);
TimeoutPerTestInMinutes=$(_TimeoutPerTestInMinutes);
Expand Down Expand Up @@ -594,6 +596,7 @@
<HelixPreCommand Include="set RunTieringTest=1" Condition=" '$(TieringTest)' == 'true' " />
<HelixPreCommand Include="set RunWithNodeJS=1" Condition=" '$(TargetsBrowserOnCoreCLR)' == 'true' " />
<HelixPreCommand Include="set HotColdSplitting=1" Condition=" '$(HotColdSplitting)' == 'true' " />
<HelixPreCommand Include="set LargeVersionBubble=1" Condition=" '$(LargeVersionBubble)' == 'true' " />
<HelixPreCommand Include="set CLRCustomTestLauncher=%HELIX_CORRELATION_PAYLOAD%\runincontext.cmd" Condition=" '$(RunInUnloadableContext)' == 'true' " />
<HelixPreCommand Include="set CLRCustomTestLauncher=%HELIX_CORRELATION_PAYLOAD%\tieringtest.cmd" Condition=" '$(TieringTest)' == 'true' " />
<HelixPreCommand Include="set CLRCustomTestLauncher=%HELIX_CORRELATION_PAYLOAD%\nativeaottest.cmd" Condition=" '$(NativeAotTest)' == 'true' " />
Expand Down Expand Up @@ -649,6 +652,7 @@
<HelixPreCommand Include="export RunTieringTest=1" Condition=" '$(TieringTest)' == 'true' " />
<HelixPreCommand Include="export RunWithNodeJS=1" Condition=" '$(TargetsBrowserOnCoreCLR)' == 'true' " />
<HelixPreCommand Include="export HotColdSplitting=1" Condition=" '$(HotColdSplitting)' == 'true' " />
<HelixPreCommand Include="export LargeVersionBubble=1" Condition=" '$(LargeVersionBubble)' == 'true' " />
<HelixPreCommand Include="export CLRCustomTestLauncher=$HELIX_CORRELATION_PAYLOAD/runincontext.sh" Condition=" '$(RunInUnloadableContext)' == 'true' " />
<HelixPreCommand Include="export CLRCustomTestLauncher=$HELIX_CORRELATION_PAYLOAD/tieringtest.sh" Condition=" '$(TieringTest)' == 'true' " />
<HelixPreCommand Include="export CLRCustomTestLauncher=$HELIX_CORRELATION_PAYLOAD/nativeaottest.sh" Condition=" '$(NativeAotTest)' == 'true' " />
Expand Down
Loading