3 ms·
The absolutely easiest way to write a JIT is to use Javascript and eval() (or "new Function()", which is just eval in a Java-shaped tuxedo). You can quite easil
by Scaevolus 3mo ago
The absolutely easiest way to write a JIT is to use Javascript and eval() (or "new Function()", which is just eval in a Java-shaped tuxedo). You can quite easily speed up little matching functions, especially arithmetic heavy ones, by just filling in some templates at runtime!
Here's an example used in PuzzleScript: https://github.com/increpare/PuzzleScript/blob/dc1e0fc979365d6e97d7a3f3a1a86c3bf3dc6ae4/src/js/engine.js#L1414 https://github.com/increpare/PuzzleScript/blob/dc1e0fc979365...
- hodgehog11 3mo agoThis is true, and is why I think Javascript is underrated for emulation. For example, this PSX emulator: https://github.com/kootstra-rene/enge-js https://github.com/kootstra-rene/enge-js It has decent compatibility and good speed. Furthermore, I challenge anyone to find a PSX emulator with fewer lines of code with competitive speed and accuracy. To my knowledge, this is by far the simplest such implementation, and is able to do this by taking advantage of Javascript JIT compilation.
- mcosta 3mo ago> To my knowledge, this is by far the simplest such implementation Are you taking into account the complexity of v8?
- hodgehog11 3mo agoNo I do not, in the same way that I would not take into account the complexity of the Python interpreter for Python emulator projects or the compiler for C or Rust projects. I would also not take into account the complexity of Retroarch for libretro-based emulator cores, because all of the actual challenging parts that effectively document the console still remain. These are general-purpose tool chains. The real question is, using those tools, how easily can you make an emulator for a device with as much complexity as the PSX?
- yjftsjthsd-h 3mo ago> in the same way that I would not take into account the complexity of the Python interpreter for Python emulator projects or the compiler for C or Rust projects. I'm less inclined to care about compile dependencies, but I think it's absolutely worth caring about how heavy of runtime dependencies you're pulling into your project.