Christian Weisgerber:
> Here's the list of ports that still need fixes or deeper analysis:
>
> www/webkitgtk4,webkitgtk41 ?
> www/webkitgtk4,webkitgtk50 ?
> www/webkitgtk4 ?
This is the last one on my list.
TL;DR: I think it's fine.
semarie's clang diff produced warnings about data directives inside
the .text section when compiling llint/LowLevelInterpreter.cpp.
You won't find the offending code in that file though, since it is
produced by convoluted preprocessor expansion. The output of c++ -E
shows things like this:
".int " "57" "\n" ".L" "llint_op_wide16" ":\n"
"movzbl 1(%r13, %r8, 1), %eax \n"
"movq " "g_opcodeMapWide16" "@GOTPCREL(%rip), %rsi \n"
"jmp *0(%rsi, %rax, 8) \n"
".int " "185" "\n" ".L" "llint_op_wide32" ":\n"
"movzbl 1(%r13, %r8, 1), %eax \n"
"movq " "g_opcodeMapWide32" "@GOTPCREL(%rip), %rsi \n"
"jmp *0(%rsi, %rax, 8) \n"
It turns out we're looking at a bytecode interpreter and the opcodes
are embedded before the routine that handles them. Luckily, this
feature is tightly coupled to the LLINT_EMBEDDED_OPCODE_ID define,
which appears only in a few places.
The embedded opcode is indeed read, but only in a single place, in
a function Interpreter::getOpcodeID(), which in turn is only called
in a single place in interpreter/Interpreter.cpp. And that latter
file is not compiled at all. Nor is it included.
So I think there are no .text reads in practice. We could flip
ENABLE_LLINT_EMBEDDED_OPCODE_ID in PlatformEnable.h to disable that
whole feature in the first place, but I don't think that's necessary.
--
Christian "naddy" Weisgerber naddy@mips.inka.de
No comments:
Post a Comment