The rep stosd instruction seems to be jitted in a really weird way and I was wondering what are the design choices behind this.
Basically the code is jitted to an operation where there is a conditional branch that tests the ECX register to see if it's zero or not(although I could have gotten this part wrong). If it's not, it proceeds to prepare the data to be placed at es:[edi], decrements ECX and executes another conditional branch that ends up at a jmp to 'helper_le_stl_mmu' effectively exiting the translation block as execution will end up re-entering that same TB.
My question is why isn't this jitted to a loop and a call to this helper?