Split 16-byte SIMD store around GC struct fields into two 8-byte SIMD stores...
Split 16-byte SIMD store around GC struct fields into two 8-byte SIMD stores (x86)/ two 8-byte mov-s (x64) (#53116) Fixes #51638 by using 1) Constructing `ASG(OBJ(addr), 0)` for structs that have GC fields and keeping the current IR (i.e. `ASG(BLK(addr), 0)`) for other types. Such bookkeeping would allow the JIT to maintain information about the class layout. 2a) Emitting a sequence of `mov [m64],r64` instead of `movdqu [m128],xmm` when zeroing structs with GC fields that are not guaranteed to be on the stack on win-x64 or linux-x64. 2b) Emitting a sequence of `movq [m64],xmm` when zeroing such structs on win-x86.
Showing
想要评论请 注册 或 登录