diff options
author | Brian Sullivan <briansul@microsoft.com> | 2015-12-11 16:16:44 -0800 |
---|---|---|
committer | Brian Sullivan <briansul@microsoft.com> | 2015-12-11 16:16:44 -0800 |
commit | 121d095ed0b0076fb1c7ff59e6446fd19d506b32 (patch) | |
tree | 4a690f67e0117dd346a9de1937f018918a970ae9 /src/jit/regset.cpp | |
parent | f05270a77a9782c5960d1bdff82b8521b1e3fa5d (diff) | |
download | coreclr-121d095ed0b0076fb1c7ff59e6446fd19d506b32.tar.gz coreclr-121d095ed0b0076fb1c7ff59e6446fd19d506b32.tar.bz2 coreclr-121d095ed0b0076fb1c7ff59e6446fd19d506b32.zip |
Port of all JIT changes for .NET Framework 4.6.1 changes
http://blogs.msdn.com/b/dotnet/archive/2015/11/30/net-framework-4-6-1-is-now-available.aspx
.NET Framework list of changes in 4.6.1
https://github.com/Microsoft/dotnet/blob/master/releases/net461/dotnet461-changes.md
Additional changes including
- Working ARM64 JIT compiler
- Additional JIT Optimizations
o Tail call recursion optimization
o Array length tracking optimization
o CSE for widening casts
o Smaller encoding for RIP relative and absolute addresses in addressing modes
o Tracked Local Variable increased to 512
o Improved handling of Intrinsics System.GetType()
o Improved handling of Math intrinsics
- Work for the X86 Ryu-JIT compiler
[tfs-changeset: 1557101]
Diffstat (limited to 'src/jit/regset.cpp')
-rw-r--r-- | src/jit/regset.cpp | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/src/jit/regset.cpp b/src/jit/regset.cpp index 15e6eb7275..f167879283 100644 --- a/src/jit/regset.cpp +++ b/src/jit/regset.cpp @@ -147,6 +147,31 @@ void RegSet::rsRemoveRegsModified(regMaskTP mask) rsModifiedRegsMask &= ~mask; } +void RegSet::SetMaskVars(regMaskTP newMaskVars) +{ +#ifdef DEBUG + if (m_rsCompiler->verbose) + { + printf("\t\t\t\t\t\t\tLive regs: "); + if (_rsMaskVars == newMaskVars) + { + printf("(unchanged) "); + } + else + { + printRegMaskInt(_rsMaskVars); + m_rsCompiler->getEmitter()->emitDispRegSet(_rsMaskVars); + printf(" => "); + } + printRegMaskInt(newMaskVars); + m_rsCompiler->getEmitter()->emitDispRegSet(newMaskVars); + printf("\n"); + } +#endif // DEBUG + + _rsMaskVars = newMaskVars; +} + #ifdef DEBUG RegSet::rsStressRegsType RegSet::rsStressRegs() @@ -1440,10 +1465,7 @@ void RegSet::rsSpillTree(regNumber reg, GenTreePtr tree) tree->gtFlags &= ~GTF_SPILL; #endif // !LEGACY_BACKEND -#ifdef _TARGET_AMD64_ - assert(tree->InReg()); - assert(tree->gtRegNum == reg); -#else +#if CPU_LONG_USES_REGPAIR /* Are we spilling a part of a register pair? */ if (treeType == TYP_LONG) @@ -1457,7 +1479,10 @@ void RegSet::rsSpillTree(regNumber reg, GenTreePtr tree) assert(tree->gtFlags & GTF_REG_VAL); assert(tree->gtRegNum == reg); } -#endif // _TARGET_AMD64_ +#else + assert(tree->InReg()); + assert(tree->gtRegNum == reg); +#endif // CPU_LONG_USES_REGPAIR /* Are any registers free for spillage? */ |