To give a feel for how easy it is to write these engines, TruffleJS is only about 80,000 lines of code compared to about 1.7 million for V8.
Given that Truffle should be doing the hard parts already, 80,000 lines still seems like a huge amount.
You write Truffle VMs in Java, which probably exagerrates the code size.
I expect that code size is fairly irrelevant. Instead compare the effort needed to write an AST interpreter in Truffle with that of writing a JIT compiler from scratch.
Given that Truffle should be doing the hard parts already, 80,000 lines still seems like a huge amount.
You write Truffle VMs in Java, which probably exagerrates the code size.
I expect that code size is fairly irrelevant. Instead compare the effort needed to write an AST interpreter in Truffle with that of writing a JIT compiler from scratch.