mirror of
git://git.code.sf.net/p/sbcl/sbcl
synced 2026-09-10 07:26:40 -04:00
Create a dedicated area of 'struct thread' to return multiple-values in excess of the arg-passing registers. Gating feature is :TLS-BASED-MV-RETURN and not enabled by default. The limit of 64 (inclusive) values is the minimum to get most existing tests to pass unchanged. After the optimizations outlined below are done, the feature will be more compelling, and we can see about making it opt-out rather than opt-in, or making MULTIPLE-VALUES-LIMIT configurable. (I'm sure that some user will claim to need 1000 values.) The benefit will be fully realized in some subsequent changes, namely: freeing a DX alloc, unbinding a special var, and breaking up a catch block will all return from their frame without invoking RETURN-MULTIPLE. Similarly, some "simple" unwind-protect forms such as release-mutex could too- anything that does not clobber the thread-local area during a cleanup. Also this alleviates a big impediment to creating an LLVM-based backend which could explore performance differences among the call conventions offered, since micro-management of the stack becomes less critical. Co-authored with Antigravity |
||
|---|---|---|
| .github/workflows | ||
| benchmarks | ||
| contrib | ||
| crossbuild-runner | ||
| doc | ||
| src | ||
| tests | ||
| tlsf-bsd | ||
| tools-for-build | ||
| .cirrus.yml | ||
| .dir-locals.el | ||
| .git-archive-version | ||
| .gitattributes | ||
| .gitignore | ||
| .mailmap | ||
| binary-distribution.sh | ||
| BUGS | ||
| build-all-cores.sh | ||
| build-comparison.sh | ||
| clean.sh | ||
| cload-xc.lisp | ||
| COPYING | ||
| cover-script.lisp | ||
| CREDITS | ||
| cross-make.sh | ||
| distclean.sh | ||
| DOCUMENTATION | ||
| find-gnumake.sh | ||
| freeze.sh | ||
| generate-version.sh | ||
| HACKING | ||
| html-distribution.sh | ||
| INSTALL | ||
| install.sh | ||
| load-xc.lisp | ||
| loader.lisp | ||
| make-android.sh | ||
| make-c-runtime.sh | ||
| make-config.sh | ||
| make-genesis-2.lisp | ||
| make-genesis-2.sh | ||
| make-host-1.lisp | ||
| make-host-1.sh | ||
| make-host-2.lisp | ||
| make-host-2.sh | ||
| make-shared-library.sh | ||
| make-target-1.sh | ||
| make-target-2-load.lisp | ||
| make-target-2.sh | ||
| make-target-contrib-android.sh | ||
| make-target-contrib.sh | ||
| make-windows-installer.sh | ||
| make.sh | ||
| maketarg2loop.lisp | ||
| NEWS | ||
| OPTIMIZATIONS | ||
| PRINCIPLES | ||
| pubring.pgp | ||
| README | ||
| release.sh | ||
| run-sbcl.sh | ||
| sbcl-pwd.sh | ||
| slam.sh | ||
| source-distribution.sh | ||
| tagify.sh | ||
| TLA | ||
| TODO | ||
| validate-float.lisp | ||
| verify-header-parsing.sh | ||
| wc.sh | ||
| xperfecthash30.lisp-expr | ||
| xperfecthash61.lisp-expr | ||
| xperfecthash63.lisp-expr | ||
GENERAL INFORMATION Welcome to SBCL. If you'd like to install or build the system, see the "INSTALL" file. To find out more about who created the system, see the "CREDITS" file. If you'd like information about the legalities of copying the system, see the "COPYING" file. The "DOCUMENTATION" file describes the various formats and ways to access the documentation. The system is a work in progress. See the "TODO" file in the source distribution for some highlights. See the "BUGS" file for how to view or report bugs. If you'd like to make suggestions or help to improve the system, please send mail to one of the mailing lists: sbcl-help@lists.sourceforge.net sbcl-devel@lists.sourceforge.net Note that as a spam reduction measure you must subscribe to the lists before you can post: https://sourceforge.net/p/sbcl/mailman/ The "HACKING" file has more details regarding hacking on and contributing to SBCL. SYSTEM-SPECIFIC HINTS for OpenBSD 6.0 and newer: SBCL must be built and run from a filesystem with the "wxallowed" mount option, such as /usr/local in the default install.