-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Labels:None
-
Fully Compatible
-
QE 2022-08-08, QE 2022-08-22
The call to releaseValue() is not inlined, (link). Also, it's very common that we dismiss a ValueGuard before it's destroyed, which means the call to releaseValue() does nothing.
We can improve this by avoiding the call to releaseValue() when the owned value is Nothing. We could extend this for all shallow types, but it would require changing the layout of TypeTags.
A test version of this change has shown a measurable improvement on some queries.