Tighten arm32/arm64 write barrier kill reg sets
authorBruce Forstall <brucefo@microsoft.com>
Wed, 21 Mar 2018 03:55:07 +0000 (20:55 -0700)
committerBruce Forstall <brucefo@microsoft.com>
Sat, 31 Mar 2018 06:27:13 +0000 (23:27 -0700)
commita74067170f7c24b81c5b3794a6f3758f1aacc05b
treec2724b1ee4b6acef8844a6f56b564aa4f22ad6a4
parent9496bc0546b73fdc4fdc8a176b2abd66bacf54db
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.
15 files changed:
src/jit/codegenarm64.cpp
src/jit/codegencommon.cpp
src/jit/codegenlegacy.cpp
src/jit/emit.cpp
src/jit/emitarm.cpp
src/jit/emitarm64.cpp
src/jit/gcinfo.cpp
src/jit/gentree.cpp
src/jit/importer.cpp
src/jit/lsra.cpp
src/jit/lsrabuild.cpp
src/jit/optimizer.cpp
src/jit/regset.cpp
src/jit/target.h
src/vm/arm/asmhelpers.asm