X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Fmanual%2Fbeyond-ansi.texinfo;h=e595663533d4c2e428a6e2165b604dda69a81b96;hb=3fa2feb10ab827fc6cc2a85287e78b6e66b7bf4d;hp=a00ae6a402c95407ed5c08e7c524728bc2430fe5;hpb=fb2656c40ff25482dcf3519c3d0fab510216f983;p=sbcl.git diff --git a/doc/manual/beyond-ansi.texinfo b/doc/manual/beyond-ansi.texinfo index a00ae6a..e595663 100644 --- a/doc/manual/beyond-ansi.texinfo +++ b/doc/manual/beyond-ansi.texinfo @@ -13,6 +13,7 @@ it still has quite a few. @xref{Contributed Modules}. * Customization Hooks for Users:: * Tools To Help Developers:: * Resolution of Name Conflicts:: +* Hash Table Extensions:: * Miscellaneous Extensions:: * Stale Extensions:: * Efficiency Hacks:: @@ -21,19 +22,48 @@ it still has quite a few. @xref{Contributed Modules}. @node Garbage Collection @comment node-name, next, previous, up @section Garbage Collection +@cindex Garbage collection SBCL provides additional garbage collection functionality not -specified by ANSI. Weak pointers allow references to objects to be -maintained without keeping them from being garbage collected, and -``finalization'' hooks are available to cause code to be executed when -an object has been garbage collected. Additionally users can specify -their own cleanup actions to be executed with garbage collection. +specified by ANSI. + +@include var-sb-ext-star-after-gc-hooks-star.texinfo +@include fun-sb-ext-gc.texinfo + +@subsection Finalization +@cindex Finalization + +Finalization allows code to be executed after an object has been +garbage collected. This is useful for example for releasing foreign +memory associated with a Lisp object. @include fun-sb-ext-finalize.texinfo @include fun-sb-ext-cancel-finalization.texinfo + +@subsection Weak Pointers +@cindex Weak pointers + +Weak pointers allow references to objects to be maintained without +keeping them from being garbage collected: useful for building caches +among other things. + +Hash tables can also have weak keys and values: @pxref{Hash Table +Extensions}. + @include fun-sb-ext-make-weak-pointer.texinfo @include fun-sb-ext-weak-pointer-value.texinfo -@include var-sb-ext-star-after-gc-hooks-star.texinfo + +@subsection Introspection and Tuning + +@include var-sb-ext-star-gc-run-time-star.texinfo +@include fun-sb-ext-bytes-consed-between-gcs.texinfo +@include fun-sb-ext-generation-average-age.texinfo +@include fun-sb-ext-generation-bytes-allocated.texinfo +@include fun-sb-ext-generation-bytes-consed-between-gcs.texinfo +@include fun-sb-ext-generation-minimum-age-before-gc.texinfo +@include fun-sb-ext-generation-number-of-gcs-before-promotion.texinfo +@include fun-sb-ext-generation-number-of-gcs.texinfo +@include fun-sb-ext-get-bytes-consed.texinfo @node Metaobject Protocol @comment node-name, next, previous, up @@ -376,6 +406,24 @@ the @code{sb-ext:resolve-conflict} restart should be invoked with one argument, which should be a member of the list returned by the condition accessor @code{sb-ext:name-conflict-symbols}. +@node Hash Table Extensions +@comment node-name, next, previous, up +@section Hash Table Extensions +@cindex Hash tables + +Hash table extensions supported by SBCL are all controlled by keyword +arguments to @code{make-hash-table}. + +@include fun-common-lisp-make-hash-table.texinfo + +@include macro-sb-ext-define-hash-table-test.texinfo + +@include macro-sb-ext-with-locked-hash-table.texinfo + +@include fun-sb-ext-hash-table-synchronized-p.texinfo + +@include fun-sb-ext-hash-table-weakness.texinfo + @node Miscellaneous Extensions @comment node-name, next, previous, up @section Miscellaneous Extensions @@ -430,13 +478,3 @@ not checked. In short: don't use it. The @code{sb-ext:freeze-type} declaration declares that a type will never change, which can make type testing (@code{typep}, etc.) more efficient for structure types. - -The @code{sb-ext:constant-function} declaration specifies -that a function will always return the same value for the same -arguments, which may allow the compiler to optimize calls -to it. This is appropriate for functions like @code{sqrt}, but -is @emph{not} appropriate for functions like @code{aref}, -which can change their return values when the underlying data are -changed. -@c