Awesome! Makes it even easier to spot and debug ARM bugs.

Thanks Hannes


On Wed, Jan 29, 2014 at 7:42 PM, Jan de Mooij <jandemo...@gmail.com> wrote:

> I just landed an ARM simulator for JIT code, imported from V8 (bug 959597
> [0]).
>
> This means if you build an x86 shell and pass --enable-arm-simulator
> to configure, it will still compile an x86 shell but with the ARM JIT
> backend for Baseline, Ion, Odin and YARR. When we enter JIT code, we
> run it inside a simulator (interpreter) for ARM code. Note that this
> only works with 32-bit builds (64-bit has a different Value format
> etc).
>
> There are new JS_CODEGEN_* defines that you should use in most cases
> for JIT backend stuff instead of JS_CPU_*. On real hardware there's no
> difference but a simulator build will have JS_CPU_X86 and
> JS_CODEGEN_ARM.
>
> Emulating an ARM processor may seem crazy and complicated, but the
> simulator itself is < 3000 lines of code, most of it pretty
> straight-forward and of course NPOTB (I'll try to get a Linux32 shell
> build on TBPL so that we don't regress it).
>
> The code was imported from V8, with many changes to make it integrate
> well with SpiderMonkey (style), mfbt etc. I added support for some
> missing (float32) instructions, but other than that the code was very
> stable and complete. It's also reasonably fast: an --enable-debug
> --enable-optimize build can run jit-tests in 2-3 minutes on my laptop.
>
> The simulator is not useful for performance testing of course and is
> not as reliable as real hardware, but for most changes it should be
> sufficient. It also has some nice features like its own debugger so
> that you can set breakpoints and disassemble code (I didn't import
> V8's disassembler, instead we run llvm-mc), an icache checker and it
> verifies JIT code does not modify callee-saved registers etc (this
> caught a real bug, bug 964005 [1]).
>
> I hope this will make it easier for our JIT hackers and fuzzers to
> improve/test our ARM backend. Thanks to V8 for the simulator code, to
> Nicolas, Mike and Gerv for reviews and Douglas for many useful
> suggestions and patches.
>
> Jan
>
> [0] https://bugzilla.mozilla.org/show_bug.cgi?id=959597
> [1] https://bugzilla.mozilla.org/show_bug.cgi?id=964005
> _______________________________________________
> dev-tech-js-engine-internals mailing list
> dev-tech-js-engine-internals@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals
>
_______________________________________________
dev-tech-js-engine-internals mailing list
dev-tech-js-engine-internals@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to