bmalloc IsoHeap needs to allow a thread to deallocate some size for the first time
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Dec 2017 22:50:47 +0000 (22:50 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Dec 2017 22:50:47 +0000 (22:50 +0000)
commit25509edabd2f3b8fb8f421ffdeb30dc6cc947529
tree05dfe6b0d79462d9b79e3ce5871a7722cb187762
parent89ade73a27b6766948df1532f178839293f763a9
bmalloc IsoHeap needs to allow a thread to deallocate some size for the first time
https://bugs.webkit.org/show_bug.cgi?id=180443

Reviewed by Saam Barati.
Source/bmalloc:

It's true that we can expect a heap to already be initialized if we try to deallocate in it.  But it
may not have its deallocator initialized on this thread yet.

This is easily fixed by adding a null check on the deallocate path. That's probably not going to
change perf at all. But doing that allows me to get rid of a lot of weird stuff I previously did to
avoid that null check, like creating a dummy TLS in the DebugHeap case.

* bmalloc/IsoTLS.cpp:
(bmalloc::IsoTLS::debugFree):
(bmalloc::IsoTLS::deallocateSlow): Deleted.
* bmalloc/IsoTLS.h:
* bmalloc/IsoTLSInlines.h:
(bmalloc::IsoTLS::allocateImpl):
(bmalloc::IsoTLS::allocateSlow):
(bmalloc::IsoTLS::deallocateImpl):
(bmalloc::IsoTLS::deallocateSlow):
(bmalloc::IsoTLS::ensureHeapAndEntries):

Source/WTF:

With this change it's possible to reenable isoheaps on iOS.

* wtf/IsoMalloc.h:
* wtf/IsoMallocInlines.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225551 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WTF/ChangeLog
Source/WTF/wtf/IsoMalloc.h
Source/WTF/wtf/IsoMallocInlines.h
Source/bmalloc/ChangeLog
Source/bmalloc/bmalloc/IsoTLS.cpp
Source/bmalloc/bmalloc/IsoTLS.h
Source/bmalloc/bmalloc/IsoTLSInlines.h