Summary: | aarch64 llint does not build with JIT disabled | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Michael Catanzaro <mcatanzaro> | ||||||||||
Component: | JavaScriptCore | Assignee: | Michael Catanzaro <mcatanzaro> | ||||||||||
Status: | RESOLVED FIXED | ||||||||||||
Severity: | Normal | CC: | aperez, benjamin, cdumez, cmarcelo, darin, don.olmstead, ews-watchlist, fpizlo, guijemont, keith_miller, mark.lam, mcatanzaro, mgorse, msaboff, saam, sam, smoley, tzagallo, webkit-bug-importer, xan.lopez, ysuzuki | ||||||||||
Priority: | P2 | Keywords: | InRadar | ||||||||||
Version: | WebKit Nightly Build | ||||||||||||
Hardware: | PC | ||||||||||||
OS: | Linux | ||||||||||||
See Also: | https://bugs.webkit.org/show_bug.cgi?id=218613 | ||||||||||||
Attachments: |
|
Description
Michael Catanzaro
2020-11-25 14:36:24 PST
CC Don since this kinda messes up the nice split between PlatformUse.h and PlatformEnable.h. Created attachment 414869 [details]
Patch
The attached patch is for trunk. It doesn't apply to webkit-2.30. This inline patch is needed for webkit-2.30: diff --git a/Source/WTF/wtf/PlatformEnable.h b/Source/WTF/wtf/PlatformEnable.h index 700f90adc6c3..f703d4239bc0 100644 --- a/Source/WTF/wtf/PlatformEnable.h +++ b/Source/WTF/wtf/PlatformEnable.h @@ -871,6 +871,6 @@ #error "ENABLE(WEBGL2) requires ENABLE(WEBGL)" #endif -#if CPU(ARM64) && CPU(ADDRESS64) +#if CPU(ARM64) && CPU(ADDRESS64) && ENABLE(JIT) #define USE_JUMP_ISLANDS 1 #endif Comment on attachment 414869 [details]
Patch
Hm, there are even more problems, let me fix them all in one patch.
Next problem is:
../Source/JavaScriptCore/assembler/LinkBuffer.cpp: In member function 'void JSC::LinkBuffer::copyCompactAndLinkCode(JSC::MacroAssembler&, JSC::JITCompilationEffort)':
../Source/JavaScriptCore/assembler/LinkBuffer.cpp:380:13: error: there are no arguments to 'dumpJITMemory' that depend on a template parameter, so a declaration of 'dumpJITMemory' must be available [-fpermissive]
dumpJITMemory(outData, outData, m_size);
^~~~~~~~~~~~~
../Source/JavaScriptCore/assembler/LinkBuffer.cpp:380:13: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
../Source/JavaScriptCore/assembler/LinkBuffer.cpp: In instantiation of 'void JSC::LinkBuffer::copyCompactAndLinkCode(JSC::MacroAssembler&, JSC::JITCompilationEffort) [with InstructionType = unsigned int]':
../Source/JavaScriptCore/assembler/LinkBuffer.cpp:423:60: required from here
../Source/JavaScriptCore/assembler/LinkBuffer.cpp:380:26: error: 'dumpJITMemory' was not declared in this scope
dumpJITMemory(outData, outData, m_size);
~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
(In reply to Michael Catanzaro from comment #3) > The attached patch is for trunk. > > It doesn't apply to webkit-2.30. This inline patch is needed for webkit-2.30: > > diff --git a/Source/WTF/wtf/PlatformEnable.h > b/Source/WTF/wtf/PlatformEnable.h > index 700f90adc6c3..f703d4239bc0 100644 > --- a/Source/WTF/wtf/PlatformEnable.h > +++ b/Source/WTF/wtf/PlatformEnable.h > @@ -871,6 +871,6 @@ > #error "ENABLE(WEBGL2) requires ENABLE(WEBGL)" > #endif > > -#if CPU(ARM64) && CPU(ADDRESS64) > +#if CPU(ARM64) && CPU(ADDRESS64) && ENABLE(JIT) > #define USE_JUMP_ISLANDS 1 > #endif Second patch for webkit-2.30: diff --git a/Source/JavaScriptCore/assembler/LinkBuffer.cpp b/Source/JavaScriptCore/assembler/LinkBuffer.cpp index b6577a9e8c4e..7745793670b1 100644 --- a/Source/JavaScriptCore/assembler/LinkBuffer.cpp +++ b/Source/JavaScriptCore/assembler/LinkBuffer.cpp @@ -374,6 +374,7 @@ void LinkBuffer::copyCompactAndLinkCode(MacroAssembler& macroAssembler, JITCompi m_executableMemory->shrink(m_size); } +#if ENABLE(JIT) if (useFastJITPermissions()) { ASSERT(codeOutData == outData); if (UNLIKELY(Options::dumpJITMemoryPath())) @@ -382,6 +383,10 @@ void LinkBuffer::copyCompactAndLinkCode(MacroAssembler& macroAssembler, JITCompi ASSERT(codeOutData != outData); performJITMemcpy(codeOutData, outData, m_size); } +#else + ASSERT(codeOutData != outData); + performJITMemcpy(codeOutData, outData, m_size); +#endif jumpsToLink.clear(); Created attachment 414873 [details]
Patch
(CC: Adrian for the webkit-2.30 portion of the patch, since the patch for trunk won't apply on webkit-2.30.) Comment on attachment 414873 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=414873&action=review > Source/WTF/wtf/PlatformEnable.h:599 > +#define USE_JUMP_ISLANDS 1 Feels like maybe an #undef would be more appropriate? Comment on attachment 414873 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=414873&action=review >> Source/WTF/wtf/PlatformEnable.h:599 >> +#define USE_JUMP_ISLANDS 1 > > Feels like maybe an #undef would be more appropriate? Uh... actually yes, good idea. This might be the first time I've used #undef.... Created attachment 415154 [details]
Patch
Comment on attachment 415154 [details]
Patch
Sam Weinig suggests renaming this to ENABLE_JUMP_ISLANDS: "The intent of USE is “use a particular third-party library or optional OS service” (this is in a comment in top of the file)"
So I'll do that.
Created attachment 415237 [details]
Patch
Committed r270377: <https://trac.webkit.org/changeset/270377> All reviewed patches have been landed. Closing bug and clearing flags on attachment 415237 [details]. |