| Summary: | [libpas] Implement atomics in inline assembly if compiler is using ARM64 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Yusuke Suzuki <ysuzuki> | ||||||||
| Component: | New Bugs | Assignee: | Yusuke Suzuki <ysuzuki> | ||||||||
| Status: | RESOLVED FIXED | ||||||||||
| Severity: | Normal | CC: | fpizlo, webkit-bug-importer | ||||||||
| Priority: | P2 | Keywords: | InRadar | ||||||||
| Version: | WebKit Nightly Build | ||||||||||
| Hardware: | Unspecified | ||||||||||
| OS: | Unspecified | ||||||||||
| Attachments: |
|
||||||||||
|
Description
Yusuke Suzuki
2021-12-14 19:50:43 PST
Created attachment 447194 [details]
Patch
Created attachment 447197 [details]
Patch
Created attachment 447222 [details]
Patch
Comment on attachment 447222 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=447222&action=review I'm not sure how much I care, but it would be nice if store_atomic was a pas_utils thing. > Source/bmalloc/libpas/src/libpas/pas_lock.h:116 > #if PAS_COMPILER(CLANG) > +#if PAS_COMPILER(CLANG_ARM64_ATOMICS_DEPENDENCY) > + asm volatile ( > + "stlrb wzr, [%x[ptr]]\t\n" > + /* outputs */ : > + /* inputs */ : [ptr]"r"(&lock->lock) > + /* clobbers */ : "memory" > + ); > +#else > __c11_atomic_store((_Atomic bool*)&lock->lock, false, __ATOMIC_SEQ_CST); > +#endif > #else > __atomic_store_n((bool*)&lock->lock, false, __ATOMIC_SEQ_CST); > #endif I think it would be way better if this atomic store thing was factored out into pas_utils.h. Comment on attachment 447222 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=447222&action=review >> Source/bmalloc/libpas/src/libpas/pas_lock.h:116 >> #endif > > I think it would be way better if this atomic store thing was factored out into pas_utils.h. OK! Extracted atomic part. Committed r287092 (245284@trunk): <https://commits.webkit.org/245284@trunk> |