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
Bug 1409255 - Replace all uses of the heapsize crate with malloc_size_of #18920
Conversation
Heads up! This PR modifies the following files:
|
|
524c213
to
4c7e747
Compare
CC @nnethercote I split the long line to fix tidy. Nit: @bors-servo try Reviewed 269 of 269 files at r1, 1 of 1 files at r2. components/malloc_size_of/lib.rs, line 345 at r1 (raw file):
Element 0 is not necessarily at the start. components/script/dom/eventtarget.rs, line 121 at r1 (raw file):
This doesn’t apply anymore, does it? Shouldn’t this be a Comments from Reviewable |
Bug 1409255 - Replace all uses of the heapsize crate with malloc_size_of Patch from Nicholas Nethercote on https://bugzilla.mozilla.org/show_bug.cgi?id=1409255 ---- Servo currently uses `heapsize`, but Stylo/Gecko use `malloc_size_of`. `malloc_size_of` is better -- it handles various cases that `heapsize` does not -- so this patch changes Servo to use `malloc_size_of`. This patch makes the following changes to the `malloc_size_of` crate. - Adds `MallocSizeOf` trait implementations for numerous types, some built-in (e.g. `VecDeque`), some external and Servo-only (e.g. `string_cache`). - Makes `enclosing_size_of_op` optional, because vanilla jemalloc doesn't support that operation. - For `HashSet`/`HashMap`, falls back to a computed estimate when `enclosing_size_of_op` isn't available. - Adds an extern "C" `malloc_size_of` function that does the actual heap measurement; this is based on the same functions from the `heapsize` crate. This patch makes the following changes elsewhere. - Converts all the uses of `heapsize` to instead use `malloc_size_of`. - Disables the "heapsize"/"heap_size" feature for the external crates that provide it. - Removes the `HeapSizeOf` implementation from `hashglobe`. - Adds `ignore` annotations to a few `Rc`/`Arc`, because `malloc_size_of` doesn't derive those types, unlike `heapsize`. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18920) <!-- Reviewable:end -->
☔ The latest upstream changes (presumably #18924) made this pull request unmergeable. Please resolve the merge conflicts. |
4c7e747
to
7403f92
Compare
☔ The latest upstream changes (presumably #18704) made this pull request unmergeable. Please resolve the merge conflicts. |
7403f92
to
f426155
Compare
Looks like (in AppVeyor) this is missing some imports on Windows: error[E0425]: cannot find function `GetProcessHeap` in this scope
--> C:\projects\servo\components\malloc_size_of\lib.rs:163:16
|
163 | let heap = GetProcessHeap();
| ^^^^^^^^^^^^^^ not found in this scope
error[E0425]: cannot find function `HeapValidate` in this scope
--> C:\projects\servo\components\malloc_size_of\lib.rs:165:8
|
165 | if HeapValidate(heap, 0, ptr) == 0 {
| ^^^^^^^^^^^^ not found in this scope
error[E0425]: cannot find function `HeapSize` in this scope
--> C:\projects\servo\components\malloc_size_of\lib.rs:169:5
|
169 | HeapSize(heap, 0, ptr) as usize
| ^^^^^^^^ not found in this scope
error: aborting due to 3 previous errors
error: Could not compile `malloc_size_of`. heapsize has this dependency: [target.'cfg(windows)'.dependencies]
kernel32-sys = "0.2.1" |
I filed #18932 to fix that. |
☔ The latest upstream changes (presumably #18932) made this pull request unmergeable. Please resolve the merge conflicts. |
Servo currently uses `heapsize`, but Stylo/Gecko use `malloc_size_of`. `malloc_size_of` is better -- it handles various cases that `heapsize` does not -- so this patch changes Servo to use `malloc_size_of`. This patch makes the following changes to the `malloc_size_of` crate. - Adds `MallocSizeOf` trait implementations for numerous types, some built-in (e.g. `VecDeque`), some external and Servo-only (e.g. `string_cache`). - Makes `enclosing_size_of_op` optional, because vanilla jemalloc doesn't support that operation. - For `HashSet`/`HashMap`, falls back to a computed estimate when `enclosing_size_of_op` isn't available. - Adds an extern "C" `malloc_size_of` function that does the actual heap measurement; this is based on the same functions from the `heapsize` crate. This patch makes the following changes elsewhere. - Converts all the uses of `heapsize` to instead use `malloc_size_of`. - Disables the "heapsize"/"heap_size" feature for the external crates that provide it. - Removes the `HeapSizeOf` implementation from `hashglobe`. - Adds `ignore` annotations to a few `Rc`/`Arc`, because `malloc_size_of` doesn't derive those types, unlike `heapsize`.
#18938 has the updated version of this change. |
Re-opening temporarily to get Reviewable to show a diff. |
f426155
to
4917b40
Compare
Patch from Nicholas Nethercote on https://bugzilla.mozilla.org/show_bug.cgi?id=1409255
Servo currently uses
heapsize
, but Stylo/Gecko usemalloc_size_of
.malloc_size_of
is better -- it handles various cases thatheapsize
does not-- so this patch changes Servo to use
malloc_size_of
.This patch makes the following changes to the
malloc_size_of
crate.Adds
MallocSizeOf
trait implementations for numerous types, some built-in(e.g.
VecDeque
), some external and Servo-only (e.g.string_cache
).Makes
enclosing_size_of_op
optional, because vanilla jemalloc doesn'tsupport that operation.
For
HashSet
/HashMap
, falls back to a computed estimate whenenclosing_size_of_op
isn't available.Adds an extern "C"
malloc_size_of
function that does the actual heapmeasurement; this is based on the same functions from the
heapsize
crate.This patch makes the following changes elsewhere.
Converts all the uses of
heapsize
to instead usemalloc_size_of
.Disables the "heapsize"/"heap_size" feature for the external crates that
provide it.
Removes the
HeapSizeOf
implementation fromhashglobe
.Adds
ignore
annotations to a fewRc
/Arc
, becausemalloc_size_of
doesn't derive those types, unlike
heapsize
.This change is