/usr/share/doc/sbcl/sbcl-internals/MOP-Optimizations.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 | <!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>MOP Optimizations (SBCL Internals)</title>
<meta name="description" content="MOP Optimizations (SBCL Internals)">
<meta name="keywords" content="MOP Optimizations (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="Slot_002dValue.html#Slot_002dValue" rel="up" title="Slot-Value">
<link href="Specials.html#Specials" rel="next" title="Specials">
<link href="Compiler-Transformations.html#Compiler-Transformations" rel="prev" title="Compiler Transformations">
<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="MOP-Optimizations"></a>
<div class="header">
<p>
Previous: <a href="Compiler-Transformations.html#Compiler-Transformations" accesskey="p" rel="prev">Compiler Transformations</a>, Up: <a href="Slot_002dValue.html#Slot_002dValue" accesskey="u" rel="up">Slot-Value</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
</div>
<hr>
<a name="MOP-Optimizations-1"></a>
<h3 class="section">8.3 MOP Optimizations</h3>
<p>Even when nothing is known at compile-time about the call to
<code>slot-value</code>, it is possible to do marginally better than in
<a href="Basic-Implementation.html#ex_003aslot_002dvalue_002dusing_002dclass">Example 8.2</a>. Each effective slot definition
metaobject can cache its own effective method, and the discriminating
function for <code>slot-value-using-class</code> is set to simply call the
function in its slot definition argument.
</p>
<p>(FIXME: I’m pretty sure this is a bad plan in general. Or rather, it’s
probably a good plan, but the effective methods should probably be
computed lazily rather than eagerly. The default image has 8589
closures implementing this optimization: 3 (<code>slot-value</code>,
<code>set-slot-value</code> and <code>slot-boundp</code>) for each of 2863 effective
slots.)
</p>
<p>(Also note that this optimization depends on not being able to
specialize the <code>new-value</code> argument to <code>(setf
slot-value-using-class)</code>.)
</p>
</body>
</html>
|