fpizlo at apple.com
Wed Feb 10 09:23:51 PST 2016
> On Feb 10, 2016, at 9:14 AM, Konstantin Tokarev <annulen at yandex.ru> wrote:
> 10.02.2016, 20:10, "Filip Pizło" <fpizlo at apple.com>:
>>> On Feb 10, 2016, at 1:40 AM, Konstantin Tokarev <annulen at yandex.ru> wrote:
>>> 10.02.2016, 05:41, "Eric Wing" <ewmailing at gmail.com>:
>>>>> On 2/7/16, Konstantin Tokarev <annulen at yandex.ru> wrote:
>>>>> Please try updated version of my branch, it now does not use LLVM unless you
>>>>> enable USE_LLVM_DISASSEMBLER.
>>>> I merged your branch. That seemed to build and work.
>>>> So what would USE_LLVM_DISAAEMBLER get me if I could build it?
>>> It will allow you to disassemble JIT code on architectures that are supported by LLVM but lack specialized disassembler inside JSC, e.g. it was known to work on ARM traditional.
>> We should drop the llvm disassembler support since we don't need it for ARM64, ARMv7, or x86. If we care about disassembly on ARM traditional, we should write one. It's not that hard.
> Out of curiosity, what is the reason not to reuse LLVM disassemblers? Just because LLVM is "inconvenient" dependency?
It's extremely inconvenient since it doesn't have a stable API. Also in our experience that disassembler sometimes only supports those instructions that llvm would emit. If you look you'll see that on x86 we choose between the llvm disassembler and our own based on whether llvm generated the code or we did, since the llvm disassembler has historically had issues handling some of the instructions that out MacroAssembler know about.
There's nothing worse than debugging a jit bug and being blocked on an upstream disassembler lacking a feature. It's much better if we have our own. That way we won't be blocked.
More information about the webkit-dev