[webkit-reviews] review granted: [Bug 191548] Enable JIT on ARM/Linux : [Attachment 355322] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Nov 20 04:03:44 PST 2018


Yusuke Suzuki <yusukesuzuki at slowstart.org> has granted Dominik Inführ
<dinfuehr at igalia.com>'s request for review:
Bug 191548: Enable JIT on ARM/Linux
https://bugs.webkit.org/show_bug.cgi?id=191548

Attachment 355322: Patch

https://bugs.webkit.org/attachment.cgi?id=355322&action=review




--- Comment #5 from Yusuke Suzuki <yusukesuzuki at slowstart.org> ---
Comment on attachment 355322
  --> https://bugs.webkit.org/attachment.cgi?id=355322
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=355322&action=review

r=me with comments.

> Source/JavaScriptCore/jit/JITCall32_64.cpp:298
> +    if (compileCallEval(bytecode)) {

This brace is not necessary.

> Source/JavaScriptCore/llint/LowLevelInterpreter.asm:628
> +elsif ARMv7
> +    macro probe(action)
> +	   push a0
> +	   push a1
> +	   push a2
> +	   push a3
> +	   push t0
> +	   push t1
> +	   push t2
> +	   push t3
> +	   push t4
> +	   push t5
> +	   push lr
> +	   push csr0
> +
> +	   action()
> +
> +	   pop csr0
> +	   pop lr
> +	   pop t5
> +	   pop t4
> +	   pop t3
> +	   pop t2
> +	   pop t1
> +	   pop t0
> +	   pop a3
> +	   pop a2
> +	   pop a1
> +	   pop a0
> +    end

The implementation is almost the same to the above implementation for X86_64 or
ARM64 or ARM64E.
Can we share the code with it?

> Source/JavaScriptCore/runtime/SamplingProfiler.cpp:447
> +
> +    if (!codeBlock->instructions().size()) {
> +	   isValid = false;
> +	   return 0;
> +    }

I think this is unnecessary if we add InstructionStream::contains, which is
described below.

> Source/JavaScriptCore/runtime/SamplingProfiler.cpp:451
> +    const Instruction* begin = codeBlock->instructions().at(0).ptr();
> +    const Instruction* end = reinterpret_cast<const
Instruction*>(reinterpret_cast<const uint8_t*>(begin) +
codeBlock->instructions().size());
> +    if (instruction >= begin && instruction < end) {

I think this should be encapsulated in InstructionStream class. Adding
InstructionStream::contains, and

if (codeBlock->instructions().contains(nstruction)) {

looks better.

> Source/cmake/WebKitFeatures.cmake:71
>      elseif (WTF_CPU_ARM AND WTF_OS_UNIX)

Should we switch this `UNIX` to `LINUX` because `OS(LINUX)` is checked in
Platform.h?


More information about the webkit-reviews mailing list