[webkit-dev] SH4, MIPS, and legacy-ARM assemblers in JavaScriptCore

Filip Pizlo fpizlo at apple.com
Thu Jun 21 15:50:11 PDT 2012

Hi all,

We are actively trying to improve the WebKit JavaScript engine (JavaScriptCore), with new debugging, profiling, memory efficiency, and performance features.  Because JavaScriptCore is a JIT-based engine, this inevitably means doing JIT work, which in turn includes adding new instructions to the JIT assemblers and changing the API between the assemblers and the JIT.

Currently, the maintenance situation in the assembler layer is not great.  We have three well-supported assemblers, X86-32, X86-64, and ARMv7. Then we have three assemblers that appear to be on life support: legacy (non-THUMB2, pre-v7) ARM, SH4, and MIPS.  It is increasingly painful to maintain these three barely-supported assemblers.  None of these assemblers has been updated to support the new JIT or interpreter infrastructure, and there appears to be no ongoing effort to do so.  That means that for progress to be made on X86 and ARMv7, we need to increasingly scatter #if ENABLE(...) noise throughout the system to keep those other assemblers building.  Neither the active JavaScriptCore contributors, nor those running the bots for those hardware platforms, appear to have much interest in maintaining those assemblers, other than the occasional build fix.

This is not a good situation to be in.

So, I am curious: is anyone shipping with the legacy ARM assembler, the MIPS assembler, or the SH4 assembler?

As a secondary question, if you are shipping the legacy ARM assembler, are you doing so because you have legacy ARM hardware or because you have not had the chance to switch to the new ARM assembler in your codebase?


More information about the webkit-dev mailing list