summaryrefslogtreecommitdiff
path: root/src/jit/emitarm64.cpp
diff options
context:
space:
mode:
authorBruce Forstall <brucefo@microsoft.com>2018-03-20 20:55:07 -0700
committerBruce Forstall <brucefo@microsoft.com>2018-03-30 23:27:13 -0700
commita74067170f7c24b81c5b3794a6f3758f1aacc05b (patch)
treec2724b1ee4b6acef8844a6f56b564aa4f22ad6a4 /src/jit/emitarm64.cpp
parent9496bc0546b73fdc4fdc8a176b2abd66bacf54db (diff)
downloadcoreclr-a74067170f7c24b81c5b3794a6f3758f1aacc05b.tar.gz
coreclr-a74067170f7c24b81c5b3794a6f3758f1aacc05b.tar.bz2
coreclr-a74067170f7c24b81c5b3794a6f3758f1aacc05b.zip
Tighten arm32/arm64 write barrier kill reg sets
The JIT write barrier helpers have a custom calling convention that avoids killing most registers. The JIT was not taking advantage of this, and thus was killing unnecessary registers when a write barrier was necessary. In particular, some integer callee-trash registers are unaffected by the write barriers, and no floating-point register is affected. Also, I got rid of the `FEATURE_WRITE_BARRIER` define, which is always set. I also put some code under `LEGACY_BACKEND` for easier cleanup later. I removed some unused defines in target.h for some platforms.
Diffstat (limited to 'src/jit/emitarm64.cpp')
-rw-r--r--src/jit/emitarm64.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/jit/emitarm64.cpp b/src/jit/emitarm64.cpp
index fe690d2abb..dfca2cdd00 100644
--- a/src/jit/emitarm64.cpp
+++ b/src/jit/emitarm64.cpp
@@ -7356,6 +7356,16 @@ void emitter::emitIns_Call(EmitCallType callType,
{
savedSet |= RBM_PROFILER_RET_SCRATCH;
}
+
+#ifdef DEBUG
+ if (emitComp->verbose)
+ {
+ printf("NOGC Call: savedSet=");
+ printRegMaskInt(savedSet);
+ emitDispRegSet(savedSet);
+ printf("\n");
+ }
+#endif
}
else
{