Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Commit [9fb70c] Maximize Restore History

Speed up x86oid non-local exits.

In changeset dc386436 Nikodemus made WITH-ALIEN rebind *ALIEN-STACK*
to itself. This made some work of SAVE-/RESTORE-DYNAMIC-STATE redundant
so far as the special binding takes care of releasing aliens.
He even pointed out that aliens were no longer freed one at a time,
but didn't remove the extra mechanism, which incidentally seems not to
have worked correctly, as otherwise the bug which prompted the rebinding
approach couldn't have occurred.

Net of all previous related changes, the minimal example
(lambda () (catch 'foo (funcall 'bar)) nil)
is 14 instructions shorter and 90 bytes less on x86-64.
Gabriel's CTAK benchmark runs 10% faster, maybe more.

Douglas Katzman Douglas Katzman 2014-04-04

changed src/code/target-alieneval.lisp
changed src/compiler/x86-64/c-call.lisp
changed src/compiler/x86-64/nlx.lisp
changed src/compiler/x86/c-call.lisp
changed src/compiler/x86/nlx.lisp
changed src/compiler/aliencomp.lisp
src/code/target-alieneval.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86-64/c-call.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86-64/nlx.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86/c-call.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86/nlx.lisp Diff Switch to side-by-side view
Loading...
src/compiler/aliencomp.lisp Diff Switch to side-by-side view
Loading...