pub struct DebugStats {
pub parses: u64,
pub ref_index_locks: u64,
pub warm_sweeps_completed: u64,
pub workspace_symbol_index_ready: bool,
pub workspace_index_walks: u64,
pub reachability_scan_passes: u64,
pub analysis_compute_count: u64,
pub warm_start_replays_completed: u64,
}Expand description
Response for the $/php-lsp/debugStats custom request.
Fields§
§parses: u64Cumulative count of real ParsedDoc parses (cache misses).
ref_index_locks: u64Times mir’s reference index was locked. Reads are per-key posting lookups and edits commit one file’s postings, so this grows by a small bounded amount per operation — never per candidate file.
warm_sweeps_completed: u64Analysis warm sweeps run to completion (not cancelled). Lets benches and tests wait for the post-index sweep before baselining.
workspace_symbol_index_ready: boolWhether mir’s workspace symbol index singleton is populated (seeded from the disk cache at warm start, or built by the first sweep).
workspace_index_walks: u64Executions of mir’s tracked O(all-files) symbol-index walk. A cache-warm session must keep this at zero — the regression tests assert it.
reachability_scan_passes: u64Workspace-wide FQN/text-needle scan passes for reference-scope
narrowing (DocumentStore::resolve_reachability_queries). A request
with many narrowing-requiring declarations (e.g. code lens on a file
with several classes/public-static-methods) must pay one pass per
request, not one per declaration — the regression tests assert the
delta across such a request.
analysis_compute_count: u64Real FileAnalyzer::analyze runs (never a cache hit). Concurrent
callers racing for the same uncached file’s analysis (e.g. did_open
diagnostics vs. a fast-following hover) must serialize onto one run,
not one per caller — the regression test asserts the delta.
warm_start_replays_completed: u64DocumentStore::warm_start_indexes calls that replayed at least one
file. A runtime-added workspace folder runs this in the same spawned
task as its scan, before the refresh-request notifications go out —
tests await a count bump here instead of guessing a fixed delay.
Trait Implementations§
Source§impl Debug for DebugStats
impl Debug for DebugStats
Source§impl<'de> Deserialize<'de> for DebugStats
impl<'de> Deserialize<'de> for DebugStats
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for DebugStats
impl RefUnwindSafe for DebugStats
impl Send for DebugStats
impl Sync for DebugStats
impl Unpin for DebugStats
impl UnsafeUnpin for DebugStats
impl UnwindSafe for DebugStats
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more