DWScript Win64 JIT work in progress

With the new year, work finally started on getting a Windows 64bit Just-In-Time compiler up and running for DWScript.

The repository on Bitbucket and the mirror on GitHub both already hold first working elements. At the moment unit tests are passing, though with effective JIT for only a smaller subset of features than for the 32 bit JIT.

The 64bit JIT is derived from the “greedy” JIT infrastructure of the old 32bit JIT, so register allocation is still limited to Float variables at the moment.

As for 32bit, JIT’ed code is vastly faster than interpreted, and in the subset where it’s supported, performance is on par with 32bit JIT or slightly faster.

To compile and run the unit tests, you will need a recent BeaEngine, and there is a pending issue you will need to manually fix until it’s fixed in the BeaEngine repository (issue #32).

Another detail to be aware is that the function and unwind tables currently “spam” the RtlAddFunctionTable function so if you are JIT’ing a lot of functions, this may slow down debugging and exceptions. This will be tackled at a later point.