Details
-
Improvement
-
Status: In Progress
-
Major
-
Resolution: Unresolved
-
4.0.0
-
None
Description
This PR / Jira proposes multiple optimizations related to CurrentOrigin.withOrigin, including:
Avoid CurrentOrigin.withOrigin calls in tree transformation methods when partial function isn't defined
`CurrentOrigin.withOrigin { block }` performs a ThreadLocal.get() call to retrieve the current value of the `origin` thread local so it can be restored after `block` exits.
TreeNode has transform methods which apply PartialFunctions to every node in the tree. By checking `rule.isDefinedAt` before applying a rule we can skip the `CurrentOrigin.withOrigin` call in cases where we know the partial function isn't defined. This avoids the performance overhead associated with thread-local reads and sets.
Small optimizations to withOrigin itself to save a thread-local write.
See PR for full details.
Attachments
Issue Links
- links to