mirror of
https://github.com/servo/servo
synced 2026-05-12 09:56:50 +02:00
Replace the previously hardcoded "name prefix" strings for actors with [`type_name`](https://doc.rust-lang.org/std/any/fn.type_name.html). Note that we aren't using the prefix directly as an unique identifier, and `type_name` wouldn't be suitable for that. The suffix is an incremental counter shared across all actors, so that alone is enough to differentiate them. The purpose of the prefix is to visually inspect the logs and see what actors are involved. With this change the prefix will be slightly different: "InspectorActor11" vs "inspector11", but that shouldn't affect behaviour. The eventual goal is to remove `new_name` and force the use of `register/register_later` to create an actor. This is however a bit more complicated, see #41768. While I'd love to add `base_name` directly to the `Actor` trait, that would unfortunately mean that it wouldn't be [dyn compatible](https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility). There are workarounds for this like separating the trait in two and implementing it automatically, but I feel that would be too convoluted. Testing: Manual testing, this patch shouldn't change behaviour. Part of: #41768 Signed-off-by: eri <eri@igalia.com>
60 lines
1.4 KiB
Rust
60 lines
1.4 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
use serde::Serialize;
|
|
|
|
use crate::actor::{Actor, ActorRegistry};
|
|
|
|
#[derive(Serialize)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct TimelineMemoryReply {
|
|
js_object_size: u64,
|
|
js_string_size: u64,
|
|
js_other_size: u64,
|
|
dom_size: u64,
|
|
style_size: u64,
|
|
other_size: u64,
|
|
total_size: u64,
|
|
js_milliseconds: f64,
|
|
#[serde(rename = "nonJSMilliseconds")]
|
|
non_js_milliseconds: f64,
|
|
}
|
|
|
|
pub struct MemoryActor {
|
|
pub name: String,
|
|
}
|
|
|
|
impl Actor for MemoryActor {
|
|
fn name(&self) -> String {
|
|
self.name.clone()
|
|
}
|
|
}
|
|
|
|
impl MemoryActor {
|
|
/// return name of actor
|
|
pub fn create(registry: &ActorRegistry) -> String {
|
|
let actor_name = registry.new_name::<Self>();
|
|
let actor = MemoryActor {
|
|
name: actor_name.clone(),
|
|
};
|
|
|
|
registry.register_later(actor);
|
|
actor_name
|
|
}
|
|
|
|
pub fn measure(&self) -> TimelineMemoryReply {
|
|
TimelineMemoryReply {
|
|
js_object_size: 1,
|
|
js_string_size: 1,
|
|
js_other_size: 1,
|
|
dom_size: 1,
|
|
style_size: 1,
|
|
other_size: 1,
|
|
total_size: 1,
|
|
js_milliseconds: 1.1,
|
|
non_js_milliseconds: 1.1,
|
|
}
|
|
}
|
|
}
|