ladybird/Userland/Applications/Spreadsheet
Andreas Kling b6d4eea7ac LibJS: Never give back virtual memory once it belongs to a cell type
Instead of returning HeapBlock memory to the kernel (or a non-type
specific shared cache), we now keep a BlockAllocator per CellAllocator
and implement "deallocation" by basically informing the kernel that we
don't need the physical memory right now.

This is done with MADV_FREE or MADV_DONTNEED if available, but for other
platforms (including SerenityOS) we munmap and then re-mmap the memory
to achieve the same effect. It's definitely clunky, so I've added a
FIXME about implementing the madvise options on SerenityOS too.

The important outcome of this change is that GC types that use a
type-specific allocator become immune to use-after-free type confusion
attacks, since their virtual addresses will only ever be re-used for
the same exact type again and again.

Fixes #22274
2023-12-31 15:35:56 +01:00
..
CellType Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Readers Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Tests Spreadsheet: Throw if lookup value doesn't exist and no default is given 2022-06-26 22:21:17 +01:00
Writers Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Cell.cpp Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
Cell.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
CellSyntaxHighlighter.cpp LibJS: Make Error stack traces lazier 2023-05-28 10:03:11 +02:00
CellSyntaxHighlighter.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CellTypeDialog.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
CellTypeDialog.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
CMakeLists.txt Meta: Rename compile_gml to stringify_gml 2023-08-11 21:33:48 +02:00
CondFormatting.gml Spreadsheet: Make conditional-formatting condition-list scrollable 2022-06-30 11:53:50 +02:00
ConditionalFormatting.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
CondView.gml Spreadsheet: Use new layout system 2022-06-30 11:51:25 +02:00
csv_export.gml Userland: Replace empty GUI::Widgets in GML with GUI::Layout::Spacer 2022-09-29 08:31:15 -04:00
csv_import.gml Userland: Replace empty GUI::Widgets in GML with GUI::Layout::Spacer 2022-09-29 08:31:15 -04:00
ExportDialog.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ExportDialog.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Forward.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
HelpWindow.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
HelpWindow.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ImportDialog.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ImportDialog.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
JSIntegration.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
JSIntegration.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
main.cpp LibJS: Never give back virtual memory once it belongs to a cell type 2023-12-31 15:35:56 +01:00
Position.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
select_format_page.gml Userland: Replace empty GUI::Widgets in GML with GUI::Layout::Spacer 2022-09-29 08:31:15 -04:00
Spreadsheet.cpp Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
Spreadsheet.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
SpreadsheetModel.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
SpreadsheetModel.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
SpreadsheetView.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
SpreadsheetView.h Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
SpreadsheetWidget.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
SpreadsheetWidget.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Workbook.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Workbook.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30