Skip to content
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

Fix Allocator's alignment problems. #469

Merged
merged 14 commits into from
Aug 10, 2023
Merged

Conversation

MichaelRawson
Copy link
Contributor

See #452. Lib::Allocator returns insufficiently-aligned memory, which is undefined behaviour and will eventually bite us. It's also very complicated, which makes it hard to fix. Removing it altogether loses us more performance than we'd like.

However, status-quo performance can be restored by strapping a very minimal small-object allocator to the front of the system allocator. This PR does exactly that. We also need to track heap memory, so we provide a very tiny global operator new replacement that counts allocations and directly forwards to malloc/free.

From a maintenance point of view, this removes the source of undefined behaviour, reduces the amount of platform-specific code, and reduces the amount of code overall. Vampire hackers no longer need to route allocations through our custom allocator unless there is a compelling performance reason to do so.

@MichaelRawson MichaelRawson merged commit a500065 into master Aug 10, 2023
1 check passed
@MichaelRawson MichaelRawson deleted the michael-fix-allocator branch August 10, 2023 13:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants