Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
042baee
JIT: escape analysis for object fields
AndyAyersMS May 6, 2025
2520f43
add missing check
AndyAyersMS May 8, 2025
f39bae0
must analyze appearances for locals known to escape
AndyAyersMS May 9, 2025
109a57b
cleanup
AndyAyersMS May 9, 2025
290927d
handle storing address of local
AndyAyersMS May 9, 2025
d0767e7
Merge branch 'main' into EscapeAnalysisTrackFieldsOfObjects
AndyAyersMS May 9, 2025
4620c94
handle blk/storeblk better (though likely incomplete)
AndyAyersMS May 10, 2025
cef4862
fix build
AndyAyersMS May 10, 2025
3f513a2
merge main
AndyAyersMS May 20, 2025
8a75e1d
post-merge cleanup
AndyAyersMS May 20, 2025
07f6e06
fix
AndyAyersMS May 20, 2025
1cd8ff5
more fixes
AndyAyersMS May 20, 2025
ca906ed
more fixes
AndyAyersMS May 21, 2025
3c0aca9
fix test exclusion
AndyAyersMS May 21, 2025
a0ca380
Merge branch 'main' into EscapeAnalysisTrackFieldsOfObjects
AndyAyersMS May 21, 2025
a032bb8
Merge branch 'main' into EscapeAnalysisTrackFieldsOfObjects
AndyAyersMS May 22, 2025
a13f618
post-merge fixes
AndyAyersMS May 22, 2025
646d41a
fix retyping
AndyAyersMS May 22, 2025
ee26e39
We need to know early on if an object can never be allocated on the s…
AndyAyersMS May 23, 2025
05f8011
check canAllocateOnStack only for non-value classes
AndyAyersMS May 24, 2025
eb4d01f
fix llvm build
AndyAyersMS May 24, 2025
8d5cc47
We defer substituting array locals during rewriting, but we still
AndyAyersMS May 24, 2025
9012da4
model missed connections to indirect stores (preliminary)
AndyAyersMS May 26, 2025
e954492
get field index properly
AndyAyersMS May 27, 2025
c999a79
Merge branch 'main' into EscapeAnalysisTrackFieldsOfObjects
AndyAyersMS Jun 6, 2025
a15d80e
post-merge cleanup
AndyAyersMS Jun 6, 2025
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
3 changes: 2 additions & 1 deletion src/coreclr/jit/jitconfigvalues.h
Original file line number Diff line number Diff line change
Expand Up @@ -674,7 +674,8 @@ RELEASE_CONFIG_INTEGER(JitObjectStackAllocationConditionalEscape, "JitObjectStac
CONFIG_STRING(JitObjectStackAllocationConditionalEscapeRange, "JitObjectStackAllocationConditionalEscapeRange")
RELEASE_CONFIG_INTEGER(JitObjectStackAllocationArray, "JitObjectStackAllocationArray", 1)
RELEASE_CONFIG_INTEGER(JitObjectStackAllocationSize, "JitObjectStackAllocationSize", 528)
RELEASE_CONFIG_INTEGER(JitObjectStackAllocationTrackFields, "JitObjectStackAllocationTrackFields", 1)
// 0 disable; 1 enable for local structs; 2 enable for object fields; 3 enable for both local structs and object fields
RELEASE_CONFIG_INTEGER(JitObjectStackAllocationTrackFields, "JitObjectStackAllocationTrackFields", 3)
CONFIG_STRING(JitObjectStackAllocationTrackFieldsRange, "JitObjectStackAllocationTrackFieldsRange")
CONFIG_INTEGER(JitObjectStackAllocationDumpConnGraph, "JitObjectStackAllocationDumpConnGraph", 0)

Expand Down
2 changes: 0 additions & 2 deletions src/coreclr/jit/layout.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -984,8 +984,6 @@ ClassLayoutBuilder ClassLayoutBuilder::BuildArray(Compiler* compiler, CORINFO_CL
//
BYTE* ClassLayoutBuilder::GetOrCreateGCPtrs()
{
assert(m_size % TARGET_POINTER_SIZE == 0);

if (m_gcPtrs == nullptr)
{
m_gcPtrs = new (m_compiler, CMK_ClassLayout) BYTE[m_size / TARGET_POINTER_SIZE]{};
Expand Down
Loading
Loading