#55: Clearing LispThread.currentThread()._values more efficiently -------------------------+-------------------------------------------------- Reporter: ehuelsmann | Owner: ehuelsmann Type: enhancement | Status: new Priority: major | Milestone: Component: compiler | Version: Keywords: | -------------------------+-------------------------------------------------- We currently clear _values all over the place; we could be more efficient some times.
#55: Clearing LispThread.currentThread()._values more efficiently --------------------------+------------------------------------------------- Reporter: ehuelsmann | Owner: ehuelsmann Type: enhancement | Status: new Priority: major | Milestone: Component: compiler | Version: Resolution: | Keywords: performance --------------------------+------------------------------------------------- Changes (by ehuelsmann):
* keywords: => performance
#55: Clearing LispThread.currentThread()._values more efficiently --------------------------+------------------------------------------------- Reporter: ehuelsmann | Owner: ehuelsmann Type: enhancement | Status: new Priority: major | Milestone: too-vague Component: compiler | Version: Resolution: | Keywords: performance --------------------------+------------------------------------------------- Changes (by ehuelsmann):
* milestone: => too-vague
#55: Clearing LispThread.currentThread()._values more efficiently --------------------------+------------------------------------------------- Reporter: ehuelsmann | Owner: ehuelsmann Type: enhancement | Status: new Priority: major | Milestone: 1.0 Component: compiler | Version: Resolution: | Keywords: performance --------------------------+------------------------------------------------- Changes (by ehuelsmann):
* milestone: too-vague => 1.0
Comment:
Operations like these:
POP GETSTATIC PUTSTATIC GETFIELD PUTFIELD xLOAD xSTORE
(and possibly some others)
can be found enclosed in CLEAR-VALUES instructions, however, by nature, they can't be causing currentThread()._values to be set: only (lisp) function calls do that.
#55: Clearing LispThread.currentThread()._values more efficiently --------------------------+------------------------------------------------- Reporter: ehuelsmann | Owner: ehuelsmann Type: enhancement | Status: new Priority: major | Milestone: 1.0 Component: compiler | Version: Resolution: | Keywords: performance --------------------------+-------------------------------------------------
Comment(by ehuelsmann):
Some work has been done in this department (on the unsafe-p-removal branch): specifically, all block types are now explicitly handled, while only TAGBODY was before - and incorrectly at that.
However, the main issue still stands.
#55: Clearing LispThread.currentThread()._values more efficiently --------------------------+------------------------------------------------- Reporter: ehuelsmann | Owner: ehuelsmann Type: enhancement | Status: new Priority: major | Milestone: 1.0 Component: compiler | Version: Resolution: | Keywords: performance --------------------------+-------------------------------------------------
Comment(by ehuelsmann):
One of the factors determining single-valued-ness of self-compiled functions is the %SINGLE-VALUED-P field in the compiland structure.
This field gets set to T during pass1 whenever any function call within that function returns T for the call to SINGLE-VALUED-P (which itself is located in pass2???).
#55: Clearing LispThread.currentThread()._values more efficiently --------------------------+------------------------------------------------- Reporter: ehuelsmann | Owner: ehuelsmann Type: enhancement | Status: new Priority: major | Milestone: 1.0 Component: compiler | Version: Resolution: | Keywords: performance --------------------------+-------------------------------------------------
Comment(by ehuelsmann):
The last comment has been addressed in r13147.
#55: Clearing LispThread.currentThread()._values more efficiently -------------------------+-------------------------------------------------- Reporter: ehuelsmann | Owner: ehuelsmann Type: enhancement | Status: new Priority: major | Milestone: 1.1.0 Component: compiler | Version: Keywords: performance | -------------------------+-------------------------------------------------- Changes (by mevenson):
* milestone: 1.0 => 1.1.0
#55: Clearing LispThread.currentThread()._values more efficiently -------------------------+-------------------------------------------------- Reporter: ehuelsmann | Owner: ehuelsmann Type: enhancement | Status: new Priority: major | Milestone: 1.2.0 Component: compiler | Version: Keywords: performance | -------------------------+-------------------------------------------------- Changes (by ehuelsmann):
* milestone: 1.1.0 => 1.2.0
armedbear-ticket@common-lisp.net