Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Mosier <smosier@microsoft.com>2016-02-08 23:44:58 +0300
committerScott Mosier <smosier@microsoft.com>2016-02-08 23:44:58 +0300
commite7cf9872439f602b39a320c6ade8c9af6dd2e817 (patch)
tree140ac9095691a81167d010f81fb4688daf00cae7 /src/Native/Runtime/shash.h
parentcfb63d562045aafa3a81a4834dd457ad60e81ba6 (diff)
Fix RhpLoopHijack to stop trashing important registers
The loop hijack worker routine is not honoring the contract that it should be. Namely, the runtime is not allowed to trash any registers in our worker (except r12 on ARM). The two big oversights were scratch FP registers and the flags registers. I have also added a per-module map from loop index to target address (thus requiring all the shash.h includes). This primarily helps gcstress throughput because the loop indirection cell address calculation ends up being surprisingly lengthy. I considered the other obvious approach of "back-patching" the loop indirection cell in the gcstress case (normal loop hijacking does this, but under gcstress, we do not). However, I ended up preferring this because it could help GC suspension latency in normal operation. [tfs-changeset: 1573401]
Diffstat (limited to 'src/Native/Runtime/shash.h')
-rw-r--r--src/Native/Runtime/shash.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/Native/Runtime/shash.h b/src/Native/Runtime/shash.h
index eb5b9bab6..93be39adb 100644
--- a/src/Native/Runtime/shash.h
+++ b/src/Native/Runtime/shash.h
@@ -72,6 +72,7 @@
// disable the "Conditional expression is constant" warning
+#pragma warning(push)
#pragma warning(disable:4127)
@@ -626,6 +627,6 @@ public:
};
-// restore "Conditional expression is constant" warning to default value
-#pragma warning(default:4127)
+// restore "Conditional expression is constant" warning to previous value
+#pragma warning(pop)