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 [79a8e5] Maximize Restore History

1.0.28.30: DEFGLOBAL, ALWAYS-BOUND, GLOBAL, SYMBOL-GLOBAL-VALUE

* ALWAYS-BOUND allows the compiler to elide boundness checks
for symbol value access, and prohibits MAKUNBOUND. This is
handled via a new globaldb entry.

GLOBAL makes the compiler elide TLS checking for symbol
values access, and prohibits rebinding. This is handled via
new globaldb :variable :type, namely :global.

DEFGLOBAL is build on top of these. Global variables are mainly an
efficiency measure on threaded builds, but can also express
intention as they prohibit rebinding.

* Add %SET-SYMBOL-GLOBAL-VALUE, FAST-SYMBOL-GLOBAL-VALUE, and
SYMBOL-GLOBAL-VALUE VOPs to all backends. On unithreaded
builds these are trivial copies of the non-global versions.

* Tell SB-CLTL2 about both GLOBAL and ALWAYS-BOUND declarations too.

* Document in the Efficiency chapter of the manual.

* Prohibit declaring constants special.

* Tests.

Later: use these new features inside SBCL itself. For now there is
only a single DEFGLOBAL used, but more could well be.

Nikodemus Siivola Nikodemus Siivola 2009-05-08

1 2 > >> (Page 1 of 2)
changed contrib/sb-cltl2/env.lisp
changed contrib/sb-cltl2/tests.lisp
changed doc/manual/efficiency.texinfo
changed src/code/array.lisp
changed src/code/defboot.lisp
changed src/code/defsetfs.lisp
changed src/code/describe.lisp
changed src/code/early-extensions.lisp
changed src/code/eval.lisp
changed src/code/full-eval.lisp
changed src/code/gc.lisp
changed src/code/late-extensions.lisp
changed src/code/macros.lisp
changed src/code/room.lisp
changed src/code/symbol.lisp
changed src/compiler/alpha/cell.lisp
changed src/compiler/generic/objdef.lisp
changed src/compiler/hppa/cell.lisp
changed src/compiler/mips/cell.lisp
changed src/compiler/ppc/cell.lisp
changed src/compiler/sparc/cell.lisp
changed src/compiler/x86-64/cell.lisp
changed src/compiler/x86/cell.lisp
changed src/compiler/debug.lisp
changed src/compiler/defconstant.lisp
contrib/sb-cltl2/env.lisp Diff Switch to side-by-side view
Loading...
contrib/sb-cltl2/tests.lisp Diff Switch to side-by-side view
Loading...
doc/manual/efficiency.texinfo Diff Switch to side-by-side view
Loading...
src/code/array.lisp Diff Switch to side-by-side view
Loading...
src/code/defboot.lisp Diff Switch to side-by-side view
Loading...
src/code/defsetfs.lisp Diff Switch to side-by-side view
Loading...
src/code/describe.lisp Diff Switch to side-by-side view
Loading...
src/code/early-extensions.lisp Diff Switch to side-by-side view
Loading...
src/code/eval.lisp Diff Switch to side-by-side view
Loading...
src/code/full-eval.lisp Diff Switch to side-by-side view
Loading...
src/code/gc.lisp Diff Switch to side-by-side view
Loading...
src/code/late-extensions.lisp Diff Switch to side-by-side view
Loading...
src/code/macros.lisp Diff Switch to side-by-side view
Loading...
src/code/room.lisp Diff Switch to side-by-side view
Loading...
src/code/symbol.lisp Diff Switch to side-by-side view
Loading...
src/compiler/alpha/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/generic/objdef.lisp Diff Switch to side-by-side view
Loading...
src/compiler/hppa/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/mips/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ppc/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/sparc/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86-64/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/debug.lisp Diff Switch to side-by-side view
Loading...
src/compiler/defconstant.lisp Diff Switch to side-by-side view
Loading...
1 2 > >> (Page 1 of 2)