Tune function chase_into_ok to not chase into EX/EXRL
insn.
Observed speedups on performance tests were:
none -6% ... -12%
memcheck -3% ... -8%
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11899
if (addr == TRANSTAB_BOGUS_GUEST_ADDR)
goto dontchase;
+# if defined(VGA_s390x)
+ /* Never chase into an EX instruction. Generating IR for EX causes
+ a round-trip through the scheduler including VG_(discard_translations).
+ And that's expensive as shown by perf/tinycc.c:
+ Chasing into EX increases the number of EX translations from 21 to
+ 102666 causing a 7x runtime increase for "none" and a 3.2x runtime
+ increase for memcheck. */
+ if (((UChar *)ULong_to_Ptr(addr))[0] == 0x44 || /* EX */
+ ((UChar *)ULong_to_Ptr(addr))[0] == 0xC6) /* EXRL */
+ goto dontchase;
+# endif
+
/* well, ok then. go on and chase. */
return True;