Skip to content
Draft

Frame size #127780

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
c08c441
JIT: Sort stack locals by access density for smaller code on x64
AndyAyersMS May 2, 2026
e63b427
JIT: Multi-strategy frame layout selection for smaller code on x64
AndyAyersMS May 3, 2026
839f457
JIT: Enable multi-strategy frame layout optimization for x86
AndyAyersMS May 3, 2026
ff85ffc
JIT: Enable frame layout optimization for MinOpts/Tier0 with lightwei…
AndyAyersMS May 3, 2026
81e5559
JIT: Sort stack locals by access density for smaller code on x64
AndyAyersMS May 2, 2026
113262f
JIT: Multi-strategy frame layout selection for smaller code on x64
AndyAyersMS May 3, 2026
086034d
JIT: Enable multi-strategy frame layout optimization for x86
AndyAyersMS May 3, 2026
59aab9d
JIT: Enable frame layout optimization for MinOpts/Tier0 with lightwei…
AndyAyersMS May 3, 2026
bbac4fb
JIT: Extract frame layout optimization into lvaComputeOptimalFrameLay…
AndyAyersMS May 3, 2026
8e09f3f
JIT: Lower frame layout optimization threshold from 128 to 64 bytes
AndyAyersMS May 3, 2026
0fadd1c
JIT: Use single array for frame layout strategy evaluation
AndyAyersMS May 3, 2026
83a333e
Add zero-init span cost to frame layout estimator
AndyAyersMS May 3, 2026
2f25315
Add sizeAsc frame layout strategy
AndyAyersMS May 3, 2026
656b74a
Add initGroupedDensity frame layout strategy
AndyAyersMS May 3, 2026
2ad97cc
Merge branch 'main' into FrameSize
AndyAyersMS May 3, 2026
3458073
Merge remote-tracking branch 'win0/FrameSize' into FrameSize
AndyAyersMS May 3, 2026
df5fb05
format
AndyAyersMS May 3, 2026
1108871
make it faster
AndyAyersMS May 4, 2026
9edbb98
cleanup
AndyAyersMS May 4, 2026
f7ebd17
Add early maxSavings gate to skip optimization when benefit is small
AndyAyersMS May 4, 2026
b4d6ee5
format
AndyAyersMS May 4, 2026
9926c37
Merge remote-tracking branch 'upstream/main' into FrameSize
AndyAyersMS May 14, 2026
cf3f0c3
Address PR review feedback
AndyAyersMS May 14, 2026
ac57311
Add JitFrameLayoutMaxSavingsThreshold config knob
AndyAyersMS May 14, 2026
a235753
Skip initGroupedDensity (S4) strategy at MinOpts
AndyAyersMS May 14, 2026
b42d78b
Merge branch 'main' into FrameSize
AndyAyersMS May 28, 2026
bba5fa3
JIT: bucket frame layout candidates by alloc pass, sort only the stra…
AndyAyersMS May 28, 2026
32b6b75
JIT: tighten straddle-bucket end check, run jit-format
AndyAyersMS May 28, 2026
2ad0914
JIT: address PR review feedback for frame layout heuristic
AndyAyersMS May 28, 2026
aef42a7
JIT: extend frame layout sort to all pre-straddler buckets
AndyAyersMS May 28, 2026
149dc41
JIT: lower JitFrameLayoutMaxSavingsThreshold default from 12 to 0
AndyAyersMS May 29, 2026
5550568
JIT: bail from lvaComputeOptimalFrameLayoutOrder when lvaCount == 0
AndyAyersMS May 29, 2026
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: 3 additions & 0 deletions src/coreclr/jit/compiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -4351,6 +4351,9 @@ class Compiler
void lvaAssignVirtualFrameOffsetsToArgs();
bool lvaGetRelativeOffsetToCallerAllocatedSpaceForParameter(unsigned lclNum, int* offset);
void lvaAssignVirtualFrameOffsetsToLocals();
#ifdef TARGET_XARCH
unsigned* lvaComputeOptimalFrameLayoutOrder(int stkOffs, const UINT* allocOrder);
#endif
bool lvaParamHasLocalStackSpace(unsigned lclNum);
int lvaAllocLocalAndSetVirtualOffset(unsigned lclNum, unsigned size, int stkOffs);
int lvaAllocAsyncContexts(int stkOffs);
Expand Down
1 change: 1 addition & 0 deletions src/coreclr/jit/jitconfigvalues.h
Original file line number Diff line number Diff line change
Expand Up @@ -697,6 +697,7 @@ RELEASE_CONFIG_INTEGER(JitExtDefaultPolicyProfScale, "JitExtDefaultPolicyProfSca
RELEASE_CONFIG_INTEGER(JitInlinePolicyModel, "JitInlinePolicyModel", 0)
RELEASE_CONFIG_INTEGER(JitInlinePolicyProfile, "JitInlinePolicyProfile", 0)
RELEASE_CONFIG_INTEGER(JitInlinePolicyProfileThreshold, "JitInlinePolicyProfileThreshold", 40)
RELEASE_CONFIG_INTEGER(JitFrameLayoutMaxSavingsThreshold, "JitFrameLayoutMaxSavingsThreshold", 0)
CONFIG_STRING(JitObjectStackAllocationRange, "JitObjectStackAllocationRange")
RELEASE_CONFIG_INTEGER(JitObjectStackAllocation, "JitObjectStackAllocation", 1)
RELEASE_CONFIG_INTEGER(JitObjectStackAllocationRefClass, "JitObjectStackAllocationRefClass", 1)
Expand Down
Loading
Loading