http://www.perlmonks.org?node_id=988132


in reply to Re^2: Perl 5 Optimizing Compiler, Part 2
in thread Perl 5 Optimizing Compiler, Part 2

Please correct me on this particular point.

Here's a fun one: how do you ensure that the finalization semantics of Perl 5 (thanks to reference counting) are in effect on an RPython platform? How about operator types? Iterator aliasing?

... from what little I understand about Javascript it is a high-enough-level language to emulate Perl 5 to some degree.

Does it support raw memory access, or do things that aren't hashes or floats have to be emulated with hashes and floats?

JIT is only a real advantage when you can use things like type specialization and escape analysis to create straight-line code that can make a lot of assumptions because you've proven them. You have to get the boxing/unboxing semantics right, and you have to have a deep understanding of the memory model of the target and of the hosted language.

(The same laws of physics apply when porting an existing language to a different VM. If you get dramatic speed improvements on all but a few benchmarks, it's a sign that the prior VM was pretty poor, not that JIT magic unicorn-flavored candy.)

  • Comment on Re^3: Perl 5 Optimizing Compiler, Part 2