Skip to content

Conversation

SingleAccretion
Copy link

@SingleAccretion SingleAccretion commented Jul 10, 2025

This change reduces the number of instances where we have to use the longer addr < 1024 null check form by being a bit more precise about which addresses we can consider "null or valid" aka "not an almost-null compiler-created byref".

Diffs (WasmDebugging):

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 674872
Total bytes of diff: 670850
Total bytes of delta: -4022 (-0.60% % of base)
Average relative delta: -4.19%
    diff is an improvement
    average relative diff is an improvement

Top method regressions (percentages):
          16 ( 2.03% of base) : 1278.dasm - S_P_CoreLib_System_Runtime_EH__DispatchEx
           7 ( 1.61% of base) : 1354.dasm - S_P_CoreLib_System_Number_BigInteger__Add
           6 ( 1.39% of base) : 1391.dasm - S_P_CoreLib_System_Environment__GetEnvironmentVariableCore
           2 ( 0.54% of base) : 1389.dasm - S_P_CoreLib_System_SpanHelpers__ClearWithReferences

Top method improvements (percentages):
        -404 (-30.98% of base) : 1090.dasm - S_P_TypeLoader_Internal_Runtime_TypeLoader_TypeLoaderEnvironment__TryGetNamedTypeForMetadata
        -279 (-25.36% of base) : 1073.dasm - S_P_Reflection_Execution_Internal_Reflection_Execution_ExecutionEnvironmentImplementation__GetTypeSequence
         -81 (-21.89% of base) : 1343.dasm - S_P_CoreLib_System_Runtime_EH_PreciseVirtualUnwindFrame__GetLast
         -44 (-18.18% of base) : 1312.dasm - S_P_CoreLib_System_Runtime_EH_EHTable__GetClauseInfo
         -34 (-15.96% of base) : 1296.dasm - S_P_StackTraceMetadata_Internal_StackTraceMetadata_StackTraceMetadata_PerModuleMethodNameResolver_StackTraceData____GetFieldHelper
         -34 (-15.96% of base) : 1293.dasm - S_P_CoreLib_System_Runtime_CompilerServices_ClassConstructorRunner_Cctor____GetFieldHelper
         -70 (-15.87% of base) : 1342.dasm - S_P_CoreLib_System_Runtime_PreciseVirtualUnwindInfo__Parse
         -34 (-15.81% of base) : 1160.dasm - S_P_CoreLib_System_Collections_Generic_Dictionary_2_Enumerator<System___Canon__System___Canon>____GetFieldHelper
         -27 (-15.70% of base) : 1094.dasm - S_P_CoreLib_System_Collections_Concurrent_ConcurrentUnifierW_2_Entry<S_P_CoreLib_System_Reflection_Runtime_TypeInfos_NativeFormat_NativeFormatRuntimeNamedTypeInfo_UnificationKey__System___Canon>____GetFieldHelper
         -27 (-15.70% of base) : 1294.dasm - S_P_CoreLib_System_Threading_SyncTable_Entry____GetFieldHelper
         -27 (-15.52% of base) : 1166.dasm - S_P_CoreLib_System_Collections_Concurrent_ConcurrentUnifier_2_Entry<Int32__System___Canon>____GetFieldHelper
         -27 (-15.34% of base) : 1017.dasm - S_P_CoreLib_System_Collections_Concurrent_ConcurrentUnifier_2_Entry<System___Canon__System___Canon>____GetFieldHelper
         -27 (-15.34% of base) : 1159.dasm - S_P_CoreLib_System_Collections_Generic_Dictionary_2_Entry<System___Canon__System___Canon>____GetFieldHelper
         -20 (-14.39% of base) : 1447.dasm - S_P_CoreLib_System_Collections_Generic_HashSet_1_Entry<Char>____GetFieldHelper
         -20 (-14.39% of base) : 1274.dasm - S_P_CoreLib_System_Reflection_Runtime_TypeInfos_NativeFormat_NativeFormatRuntimeNamedTypeInfo_UnificationKey____GetFieldHelper
         -20 (-14.39% of base) : 1165.dasm - S_P_CoreLib_System_Collections_Concurrent_ConcurrentUnifierWKeyed_2_Entry<S_P_CoreLib_System_Reflection_Runtime_TypeInfos_RuntimeHasElementTypeInfo_UnificationKey__System___Canon>____GetFieldHelper
         -20 (-14.39% of base) : 1477.dasm - S_P_CoreLib_System_Collections_Concurrent_ConcurrentUnifierWKeyed_2_Entry<S_P_CoreLib_System_Reflection_Runtime_TypeInfos_RuntimeConstructedGenericTypeInfo_UnificationKey__System___Canon>____GetFieldHelper
         -20 (-14.39% of base) : 1072.dasm - S_P_CoreLib_System_Collections_Concurrent_ConcurrentUnifierWKeyed_2_Entry<S_P_CoreLib_System_Reflection_Runtime_TypeInfos_RuntimeFunctionPointerTypeInfo_UnificationKey__System___Canon>____GetFieldHelper
         -20 (-14.39% of base) : 1164.dasm - S_P_CoreLib_System_Runtime_CompilerServices_ConditionalWeakTable_2_Entry<System___Canon__System___Canon>____GetFieldHelper
         -13 (-12.75% of base) : 1292.dasm - S_P_CoreLib_System_Runtime_CompilerServices_ClassConstructorRunner_BlockingRecord____GetFieldHelper

483 total methods with Code Size differences (479 improved, 4 regressed)

@yowl
Copy link
Contributor

yowl commented Jul 11, 2025

The eventpipe failure is annoying, especially as the actual error doesn't seem to be logged.

yowl

This comment was marked as outdated.

@SingleAccretion
Copy link
Author

The eventpipe failure is annoying, especially as the actual error doesn't seem to be logged.

Suspect it's the same as dotnet/runtime#117513 (comment). Let's rerun...

Copy link
Contributor

@yowl yowl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, nice.

@jkotas jkotas merged commit caa7b4d into dotnet:feature/NativeAOT-LLVM Jul 13, 2025
16 checks passed
@SingleAccretion SingleAccretion deleted the NullChk branch July 13, 2025 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants