[bmalloc][Linux] Remove static initializers for PerProcess<>::s_object
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 24 Jun 2018 19:01:22 +0000 (19:01 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 24 Jun 2018 19:01:22 +0000 (19:01 +0000)
commit7421c9df1eb6faa9a6310a93d3956853e26c9105
treea2343fd33ce411c7f7ac3c96337c6404b40ac64a
parentc1d3a9a8d95352cfc029c4b7625079b3b9e43a34
[bmalloc][Linux] Remove static initializers for PerProcess<>::s_object
https://bugs.webkit.org/show_bug.cgi?id=186966

Reviewed by Anders Carlsson.

chrome/tools/linux/dump-static-initializers.py can dump static initializers
in the binary and we found that PerProcess<>::s_object initialization is done
by static initializers in GCC + Linux environments. The example is the following.

Scavenger.cpp (initializer offset 0x38c210 size 0x3e)
    _GLOBAL__sub_I_Scavenger.cpp+0x1e
    _GLOBAL__sub_I_Scavenger.cpp+0x2d
    _GLOBAL__sub_I_Scavenger.cpp+0x3c
    _GLOBAL__sub_I_Scavenger.cpp+0xf
    guard variable for bmalloc::PerProcess<bmalloc::AllIsoHeaps>::s_object@@Base-0x3f0d8
    guard variable for bmalloc::PerProcess<bmalloc::Environment>::s_object@@Base-0x3f0e8
    guard variable for bmalloc::PerProcess<bmalloc::PerHeapKind<bmalloc::Heap> >::s_object@@Base-0x3c600
    guard variable for bmalloc::PerProcess<bmalloc::Scavenger>::s_object@@Base-0x38ce8

We can remove this by initializing `nullptr`, which leads to constexpr initialization.
After this change, Linux JSCOnly libJavaScriptCore.so has no static initializers.

* bmalloc/PerProcess.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/bmalloc/ChangeLog
Source/bmalloc/bmalloc/PerProcess.h