Live

private class Live(val handle: PatchHandle, val target: Patches.Target)

A live patch and the install call behind it.

Constructors

Link copied to clipboard
constructor(handle: PatchHandle, target: Patches.Target)

Properties

Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
fun matches(cls: String, method: String, want: List<String>?, ph: Patch.Phase?): Boolean

Null want / ph is unfiltered. Woven signatures are the truth — Signatures.matches is what selected them — and a patch that wove several overloads answers to any one of them, being atomic. A patch that wove NONE — pending, or resolved to an ambiguous match Patch refused — has no signature to answer with, so its own filter stands in on the left, which is why * matches there in both directions. Empty and null are the same case here: both mean "nothing woven to compare".

Link copied to clipboard

Could an install of want weave the method this patch wove? Exact where something WAS woven — Signatures.matches is what selected it. Where nothing was it cannot answer, and Target.evicts wants "yes" in doubt; evicting a patch that wove nothing is free anyway.