Actually the best example is OS/400 mainframe system from IBM.
The kernel is a mixture of Assembly, C++ and Modula-2, with a JIT.
All user space code compiles to bytecode.
The kernel JIT compiles the applications on first execution. Afterwards the application is validated against generated native code, and re-JITed again if the bytecode has changed between executions.