From 885b6b060ca36c919845f49614e63c24f08e5503 Mon Sep 17 00:00:00 2001 From: Jakob Botsch Nielsen Date: Mon, 20 Jun 2022 12:53:48 +0200 Subject: [PATCH 1/2] Model string literals as invariant/non GLOB_REF --- src/coreclr/jit/gentree.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp index 19e551f1f8946a..4bb306b09c8a9e 100644 --- a/src/coreclr/jit/gentree.cpp +++ b/src/coreclr/jit/gentree.cpp @@ -6873,8 +6873,8 @@ GenTree* Compiler::gtNewStringLiteralNode(InfoAccessType iat, void* pValue) tree = gtNewOperNode(GT_IND, TYP_REF, tree); // This indirection won't cause an exception. tree->gtFlags |= GTF_IND_NONFAULTING; - // This indirection points into the gloabal heap (it is String Object) - tree->gtFlags |= GTF_GLOB_REF; + // String literal objects are also ok to model as invariant. + tree->gtFlags |= GTF_IND_INVARIANT; break; default: From 9411437e10634e01cc55ed24e9434cb2196a8525 Mon Sep 17 00:00:00 2001 From: Jakob Botsch Nielsen Date: Mon, 20 Jun 2022 13:00:37 +0200 Subject: [PATCH 2/2] String literals are never null --- src/coreclr/jit/gentree.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp index 4bb306b09c8a9e..818a969122fea7 100644 --- a/src/coreclr/jit/gentree.cpp +++ b/src/coreclr/jit/gentree.cpp @@ -6875,6 +6875,8 @@ GenTree* Compiler::gtNewStringLiteralNode(InfoAccessType iat, void* pValue) tree->gtFlags |= GTF_IND_NONFAULTING; // String literal objects are also ok to model as invariant. tree->gtFlags |= GTF_IND_INVARIANT; + // ..and they are never null. + tree->gtFlags |= GTF_IND_NONNULL; break; default: