/usr/share/doc/sbcl/sbcl-internals/Overview-of-Funcallable-Instances.html is in sbcl-doc 2:1.4.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual is part of the SBCL software system. See the
README file for more information.
This manual is in the public domain and is provided with absolutely no
warranty. See the COPYING and CREDITS files for more
information. -->
<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Overview of Funcallable Instances (SBCL Internals)</title>
<meta name="description" content="Overview of Funcallable Instances (SBCL Internals)">
<meta name="keywords" content="Overview of Funcallable Instances (SBCL Internals)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<link href="index.html#Top" rel="start" title="Top">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Funcallable-Instances.html#Funcallable-Instances" rel="up" title="Funcallable Instances">
<link href="Implementation-of-Funcallable-Instances.html#Implementation-of-Funcallable-Instances" rel="next" title="Implementation of Funcallable Instances">
<link href="Funcallable-Instances.html#Funcallable-Instances" rel="prev" title="Funcallable Instances">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<a name="Overview-of-Funcallable-Instances"></a>
<div class="header">
<p>
Next: <a href="Implementation-of-Funcallable-Instances.html#Implementation-of-Funcallable-Instances" accesskey="n" rel="next">Implementation of Funcallable Instances</a>, Up: <a href="Funcallable-Instances.html#Funcallable-Instances" accesskey="u" rel="up">Funcallable Instances</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
</div>
<hr>
<a name="Overview-of-Funcallable-Instances-1"></a>
<h3 class="section">5.1 Overview of Funcallable Instances</h3>
<p>Funcallable instances in SBCL are implemented as a subtype of
<code>function</code>, and as such must be directly funcallable using the same
calling sequence as ordinary functions and closure objects, which means
reading the first word of the object after the header, and then jumping
to it (with an offset on non-x86 platforms). It must be possible to set
the function of a funcallable instance, as CLOS (one user of funcallable
instances) computes and sets the discriminating function for generic
functions with <code>sb-mop:set-funcallable-instance-function</code>, and also
allows the user to do the same.
</p>
<p>Additionally, although this functionality is not exported to the normal
user, they must support an arbitrary number of slots definable with
<code>!defstruct-with-alternate-metaclass</code>. If generic functions were
the only users of funcallable instances, then this might be less
critical, but (as of SBCL 0.9.17) other users of funcallable instances
are: the <code>ctor</code> make-instance optimization; the
<code>method-function</code> funcallable instance which does the bookkeeping
for fast method function optimization; and interpreted functions in the
full evaluator.
</p>
</body>
</html>
|