NQP is actually bootstrapped, so it's written in NQP. NQP in turn has different backends targetting different virtual machines. The backend used by almost everyone is the MoarVM backend (a VM made specifically for the Perl 6 object model, which is written in C), and there's also a JVM backend. The Parrot backend is pretty much legacy at this point, and there's an experimental JavaScript backend.