diff options
author | Bruce Forstall <brucefo@microsoft.com> | 2018-03-20 20:55:07 -0700 |
---|---|---|
committer | Bruce Forstall <brucefo@microsoft.com> | 2018-03-30 23:27:13 -0700 |
commit | a74067170f7c24b81c5b3794a6f3758f1aacc05b (patch) | |
tree | c2724b1ee4b6acef8844a6f56b564aa4f22ad6a4 /src/jit/emitarm64.cpp | |
parent | 9496bc0546b73fdc4fdc8a176b2abd66bacf54db (diff) | |
download | coreclr-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.cpp | 10 |
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 { |