WebKit Bugzilla
Attachment 356999 Details for
Bug 192569
: LinkBuffer::copyCompactAndLinkCode() needs to be aware of ENABLE(SEPARATED_WX_HEAP).
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
proposed patch.
bug-192569.patch (text/plain), 4.03 KB, created by
Mark Lam
on 2018-12-10 14:09:58 PST
(
hide
)
Description:
proposed patch.
Filename:
MIME Type:
Creator:
Mark Lam
Created:
2018-12-10 14:09:58 PST
Size:
4.03 KB
patch
obsolete
>Index: Source/JavaScriptCore/ChangeLog >=================================================================== >--- Source/JavaScriptCore/ChangeLog (revision 239051) >+++ Source/JavaScriptCore/ChangeLog (working copy) >@@ -1,3 +1,14 @@ >+2018-12-10 Mark Lam <mark.lam@apple.com> >+ >+ LinkBuffer::copyCompactAndLinkCode() needs to be aware of ENABLE(SEPARATED_WX_HEAP). >+ https://bugs.webkit.org/show_bug.cgi?id=192569 >+ <rdar://problem/45615617> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * assembler/LinkBuffer.cpp: >+ (JSC::LinkBuffer::copyCompactAndLinkCode): >+ > 2018-12-10 Caio Lima <ticaiolima@gmail.com> > > [BigInt] Add ValueMul into DFG >Index: Source/JavaScriptCore/assembler/LinkBuffer.cpp >=================================================================== >--- Source/JavaScriptCore/assembler/LinkBuffer.cpp (revision 239051) >+++ Source/JavaScriptCore/assembler/LinkBuffer.cpp (working copy) >@@ -41,6 +41,10 @@ > > namespace JSC { > >+#if ENABLE(SEPARATED_WX_HEAP) >+extern JS_EXPORT_PRIVATE bool useFastPermisionsJITCopy; >+#endif // ENABLE(SEPARATED_WX_HEAP) >+ > bool shouldDumpDisassemblyFor(CodeBlock* codeBlock) > { > if (codeBlock && JITCode::isOptimizingJIT(codeBlock->jitType()) && Options::dumpDFGDisassembly()) >@@ -116,6 +120,14 @@ static ALWAYS_INLINE void recordLinkOffs > template <typename InstructionType> > void LinkBuffer::copyCompactAndLinkCode(MacroAssembler& macroAssembler, void* ownerUID, JITCompilationEffort effort) > { >+#if CPU(ARM64E) && ENABLE(FAST_JIT_PERMISSIONS) >+#if ENABLE(SEPARATED_WX_HEAP) >+ const bool isUsingFastPermisionsJITCopy = useFastPermisionsJITCopy; >+#else >+ const bool isUsingFastPermisionsJITCopy = true; >+#endif >+#endif >+ > allocate(macroAssembler, ownerUID, effort); > const size_t initialSize = macroAssembler.m_assembler.codeSize(); > if (didFailToAllocate()) >@@ -130,6 +142,11 @@ void LinkBuffer::copyCompactAndLinkCode( > const ARM64EHash assemblerBufferHash = macroAssembler.m_assembler.buffer().hash(); > ARM64EHash verifyUncompactedHash(assemblerBufferHash.randomSeed()); > uint8_t* outData = codeOutData; >+#if ENABLE(SEPARATED_WX_HEAP) >+ AssemblerData outBuffer(m_size); >+ if (!isUsingFastPermisionsJITCopy) >+ outData = reinterpret_cast<uint8_t*>(outBuffer.buffer()); >+#endif // ENABLE(SEPARATED_WX_HEAP) > #else > AssemblerData outBuffer(m_size); > uint8_t* outData = reinterpret_cast<uint8_t*>(outBuffer.buffer()); >@@ -144,7 +161,8 @@ void LinkBuffer::copyCompactAndLinkCode( > unsigned jumpCount = jumpsToLink.size(); > > #if CPU(ARM64E) && ENABLE(FAST_JIT_PERMISSIONS) >- os_thread_self_restrict_rwx_to_rw(); >+ if (isUsingFastPermisionsJITCopy) >+ os_thread_self_restrict_rwx_to_rw(); > #endif > > if (m_shouldPerformBranchCompaction) { >@@ -240,6 +258,8 @@ void LinkBuffer::copyCompactAndLinkCode( > for (unsigned i = 0; i < jumpCount; ++i) { > #if CPU(ARM64E) && ENABLE(FAST_JIT_PERMISSIONS) > auto memcpyFunction = memcpy; >+ if (!isUsingFastPermisionsJITCopy) >+ memcpyFunction = performJITMemcpy; > #else > auto memcpyFunction = performJITMemcpy; > #endif >@@ -256,7 +276,8 @@ void LinkBuffer::copyCompactAndLinkCode( > } > > #if CPU(ARM64E) && ENABLE(FAST_JIT_PERMISSIONS) >- os_thread_self_restrict_rwx_to_rx(); >+ if (isUsingFastPermisionsJITCopy) >+ os_thread_self_restrict_rwx_to_rx(); > #endif > > if (m_executableMemory) { >@@ -268,7 +289,12 @@ void LinkBuffer::copyCompactAndLinkCode( > ASSERT(codeOutData != outData); > performJITMemcpy(codeOutData, outData, m_size); > #else >- ASSERT(codeOutData == outData); >+ if (isUsingFastPermisionsJITCopy) >+ ASSERT(codeOutData == outData); >+ else { >+ ASSERT(codeOutData != outData); >+ performJITMemcpy(codeOutData, outData, m_size); >+ } > #endif > > jumpsToLink.clear(); >@@ -280,7 +306,7 @@ void LinkBuffer::copyCompactAndLinkCode( > dumpCode(codeOutData, m_size); > #endif > } >-#endif >+#endif // ENABLE(BRANCH_COMPACTION) > > > void LinkBuffer::linkCode(MacroAssembler& macroAssembler, void* ownerUID, JITCompilationEffort effort)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
saam
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192569
: 356999