[Webkit-unassigned] [Bug 191548] Enable JIT on ARM/Linux

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


https://bugs.webkit.org/show_bug.cgi?id=191548

Yusuke Suzuki <yusukesuzuki at slowstart.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #355322|review?, commit-queue?      |review+, commit-queue-
              Flags|                            |

--- 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?

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20181120/fc9fc0c5/attachment.html>


More information about the webkit-unassigned mailing list