Support 32 byte alignment of code on xarch (#2249)
authorAndy Ayers <andya@microsoft.com>
Sat, 15 Feb 2020 02:18:12 +0000 (18:18 -0800)
committerGitHub <noreply@github.com>
Sat, 15 Feb 2020 02:18:12 +0000 (18:18 -0800)
commit9b6d12ae871afe475662eb11e7246747cc03d21b
treea6394fe6e9764f5d341513ea6a0f34a1af01456a
parentd4b06b1a9e3c56e343c42efad2211c04c196a0cf
Support 32 byte alignment of code on xarch (#2249)

* Support 32 byte alignment of code on xarch

Update jit and runtime to allow jit to ask for code to be 32 byte aligned.
Request 32 byte alignment for Tier1 methods on x86/x64.

Add minimal crossgen support; one can imagine requesting or choosing 32 byte
alignment for crossgenned code, but that is left as future work.

This should provide some measure of performance stability, in particular for
microbenchmarks or other code where performance depends crucially on a few
branches.

It may or may not improve performance. If/when there are regressions we can
contemplate updating the jit to add intra-method padding to address alignment
sensitive code layout (e.g. dotnet/coreclr#11607).

This will require a jit GUID update in addition to the changes here.

* restrict to larger methods with loops; don't update zapper

* new jit GUID

* fix target ifdef name
src/coreclr/src/inc/corinfo.h
src/coreclr/src/inc/corjit.h
src/coreclr/src/jit/emit.cpp
src/coreclr/src/tools/Common/JitInterface/CorInfoTypes.cs
src/coreclr/src/tools/crossgen2/jitinterface/jitwrapper.cpp
src/coreclr/src/vm/codeman.cpp
src/coreclr/src/vm/jitinterface.cpp