diagnostics: include dependency reasons from every window
Verify Tessera GUI / verify (push) Successful in 2m36s
Verify Tessera GUI / verify (push) Successful in 2m36s
This commit is contained in:
+1
-1
@@ -206,7 +206,7 @@ Source paint now uses a resumable read-only VM call with the same 256-instructio
|
||||
Layout and paint drivers now prepare one occurrence at a time. Their fixed-size outer bytecode repeats on the same VM frame; a short-lived helper retains only the current call, its bounds/arguments and collector. The helper is released before the next occurrence. Layout keeps bottom-up measure, top-down arrange and the same settling loop. Paint advances even intrinsic method classification through VM quanta. The weak occurrence list and native scratch/output data remain proportional to the actual tree, but preparation no longer allocates managed callables/Bounds for the whole tree before the first slice. All helpers share the original read-only scope and cumulative instruction/frame limits. Weak-list copying, structural extraction, settling and final projection remain bounded atomic native work.
|
||||
|
||||
|
||||
Presentation dependency diagnostics record a counter and the last invalidated object kind/identity and version transition. ui.stats exposes dependencyInvalidations and lastInvalidDependency without retaining the dependency or rendering its data. Snapshot replacement also records its last invalidating object/property or change-journal overflow, so cache invalidation can be distinguished from source layout/paint dependencies. These help distinguish expected input invalidation from repeated background refresh.
|
||||
Presentation dependency diagnostics record a counter and the last invalidated object kind/identity and version transition. ui.stats exposes dependencyInvalidations and lastInvalidDependency without retaining the dependency or rendering its data. windowDependencyDiagnostics includes nonempty reasons from every window, prefixed by window identity. Snapshot replacement also records its last invalidating object/property or change-journal overflow, so cache invalidation can be distinguished from source layout/paint dependencies. These help distinguish expected input invalidation from repeated background refresh.
|
||||
|
||||
|
||||
ui.readText(owner,key,path[,callback]) returns an owner-scoped Task and reads a regular UTF-8 file off the VM thread. Paths use native filesystem syntax; absolute paths are recommended. The optional callback takes zero arguments and must return Unit; it runs only on successful read and can use task.result(). Without a callback, poll status then read result from code. result() is available while a success callback is running or after completion (timers return Unit); error() returns an empty String or the provider/callback error. A provider failure marks the task failed and skips its callback without stopping the VM; a source callback failure still stops the shared domain. Owner/key replacement, explicit cancellation, close/reset/VM discard and GC drop the provider lease, remove queued completion and reject late delivery. In-progress OS reads may finish, but cannot deliver after cancellation. Only the owning VM worker updates managed results and rechecks owner/key identity. No VM handles enter provider threads beyond opaque weak identities.
|
||||
|
||||
@@ -1179,6 +1179,19 @@ impl NativeCallable for Function {
|
||||
"lastInvalidDependency",
|
||||
Value::Text(session.last_invalid_dependency.clone()),
|
||||
)?;
|
||||
cx.set_attr(
|
||||
stats,
|
||||
"windowDependencyDiagnostics",
|
||||
Value::Text(
|
||||
session
|
||||
.presentations
|
||||
.iter()
|
||||
.filter(|(_, view)| !view.last_invalid_dependency.is_empty())
|
||||
.map(|(id, view)| format!("{id}: {}", view.last_invalid_dependency))
|
||||
.collect::<Vec<_>>()
|
||||
.join("; "),
|
||||
),
|
||||
)?;
|
||||
return Ok(NativeResult::Return(Value::Object(stats)));
|
||||
}
|
||||
if matches!(self.operation, State) {
|
||||
|
||||
Reference in New Issue
Block a user