One interesting thing about the AS/400 is that all or almost all of the userland programs were distributed/stored in TIMI (Technology-Independent Machine Interface) format. It's a bytecode that gets AoT-compiled to native code when performing the AS/400 equivalent of setting the executable bit. This allowed IBM to go through several generations of incompatible CPUs without customers visibly needing to recompile binaries. TIMI was a remarkable amount of forward thinking on IBM's part.<p>These days, the Android Runtime does something similar at application installation time, but TIMI was quite a bit ahead of its time. As far as I know, IBM never added ART-like continuous profiling and re-optimization features to the TIMI runtime, but it would be technically possible.
For context --- and from 1992 (!) --- here is a delightfully of-its-time explanatory video created by IBM UK about AS/400 <a href="https://www.youtube.com/watch?v=5pY6Xxptp9A">https://www.youtube.com/watch?v=5pY6Xxptp9A</a>