Is the JVM a register-based or stack-based virtual machine, and why does that distinction matter for performance?