summaryrefslogtreecommitdiff
path: root/src/jit/regset.h
diff options
context:
space:
mode:
authorBrian Sullivan <briansul@microsoft.com>2015-12-11 16:16:44 -0800
committerBrian Sullivan <briansul@microsoft.com>2015-12-11 16:16:44 -0800
commit121d095ed0b0076fb1c7ff59e6446fd19d506b32 (patch)
tree4a690f67e0117dd346a9de1937f018918a970ae9 /src/jit/regset.h
parentf05270a77a9782c5960d1bdff82b8521b1e3fa5d (diff)
downloadcoreclr-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.h')
-rw-r--r--src/jit/regset.h28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/jit/regset.h b/src/jit/regset.h
index 985cee71d7..3b0ccae614 100644
--- a/src/jit/regset.h
+++ b/src/jit/regset.h
@@ -155,10 +155,36 @@ public: // TODO-Cleanup: Should be private, but GCInfo uses them
#ifdef LEGACY_BACKEND
regMaskTP rsMaskUsed; // currently 'used' registers mask
#endif // LEGACY_BACKEND
- regMaskTP rsMaskVars; // mask of registers currently allocated to variables
+
+ __declspec(property(get=GetMaskVars,put=SetMaskVars))
+ regMaskTP rsMaskVars; // mask of registers currently allocated to variables
+
+ regMaskTP GetMaskVars() const // 'get' property function for rsMaskVars property
+ {
+ return _rsMaskVars;
+ }
+
+ void SetMaskVars(regMaskTP newMaskVars); // 'put' property function for rsMaskVars property
+
+ void AddMaskVars(regMaskTP addMaskVars) // union 'addMaskVars' with the rsMaskVars set
+ {
+ SetMaskVars(_rsMaskVars | addMaskVars);
+ }
+
+ void RemoveMaskVars(regMaskTP removeMaskVars) // remove 'removeMaskVars' from the rsMaskVars set (like bitset DiffD)
+ {
+ SetMaskVars(_rsMaskVars & ~removeMaskVars);
+ }
+
+ void ClearMaskVars() // Like SetMaskVars(RBM_NONE), but without any debug output.
+ {
+ _rsMaskVars = RBM_NONE;
+ }
private:
+ regMaskTP _rsMaskVars; // backing store for rsMaskVars property
+
#ifdef LEGACY_BACKEND
regMaskTP rsMaskLock; // currently 'locked' registers mask
regMaskTP rsMaskMult; // currently 'multiply used' registers mask