-
Notifications
You must be signed in to change notification settings - Fork 112
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Refactor representation of thread local state. #751
base: main
Are you sure you want to change the base?
Conversation
318a880
to
0614a01
Compare
80d24e0
to
0fd6768
Compare
src/snmalloc/global/globalalloc.h
Outdated
@@ -4,7 +4,7 @@ | |||
|
|||
namespace snmalloc | |||
{ | |||
template<SNMALLOC_CONCEPT(IsConfig) Config> | |||
template<SNMALLOC_CONCEPT(IsConfig) Config = Config> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- I'm a little surprised these aren't triggering shadowing warnings?
- Are these functions ever invoked with non-default
Config
s? If not, maybe convert the template parameter and concept annotation to a suitablestatic_assert
requires
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did Config_
in #750.
CMakeLists.txt
Outdated
|
||
foreach(FLAVOUR ${FLAVOURS}) | ||
if (${FLAVOUR} STREQUAL "malloc") | ||
set(DEFINES SNMALLOC_PASS_THROUGH) | ||
endif() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎉
Only found time to make it into "Restrict ThreadAlloc usage to globalalloc", but so far so great. Thanks for nwfifying the commit stack. :D |
41392d1
to
654bcfd
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This continues to look really nice. (Read up through "WIP", exclusive.)
src/snmalloc/mem/localalloc.h
Outdated
return self->alloc_not_small<zero_mem, CheckInitDefault>(size); | ||
}, | ||
size, | ||
this); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a bit of a pity that something so formulaic can't, AFAIK, be templated away.
The check init code was tightly integrated into LocalAllocator. This commit pull that code out into ThreadAlloc, and passes a template parameter into the remaining LocalAllocator to perform the relevant TLS manipulations. This removes some of the awkward layering around register_clean_up.
Fully disable lotsofthreads test Need to investigate if the test is unreliable, or we have actually regressed perf. A quick mimalloc-bench didn't show any regressions.
This introduces one additional branch on when processing a batch of messages, but it is likely to only be hit when a lot of messages are processed.
654bcfd
to
fdab65d
Compare
Stacked on top of #750