Remove locking when getting ptr to Singleton
Summary: This removes one layer on locking on the fast path, when ptr to singleton object is read from SingletonEntry.
Test Plan:
unit test
Before:
============================================================================
folly/experimental/test/SingletonTest.cpp relative time/iter iters/s
============================================================================
NormalSingleton 335.26ps 2.98G
MeyersSingleton 99.50% 336.96ps 2.97G
FollySingleton 0.28% 120.64ns 8.29M
============================================================================
After:
============================================================================
folly/experimental/test/SingletonTest.cpp relative time/iter iters/s
============================================================================
NormalSingleton 336.76ps 2.97G
MeyersSingleton 99.91% 337.07ps 2.97G
FollySingleton 0.36% 92.69ns 10.79M
============================================================================
Reviewed By: alikhtarov@fb.com
Subscribers: trunkagent, folly-diffs@
FB internal diff:
D1727604
Signature: t1:
1727604:
1418701171:
1728b516191a8ec4439e981d78634370b4bcf7a1