The sealable-metaobjects Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The sealable-metaobjects Reference Manual

This is the sealable-metaobjects Reference Manual, generated automatically by Declt version 2.4 patchlevel 1 "Will Decker" on Fri May 24 09:45:21 2019 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

#+TITLE: Sealable Metaobjects

* Introduction
We present an extension of the Common Lisp Object System (CLOS) that allows
a compiler to inline a generic function under certain conditions.

We should note that moving parts of the callee into the caller is usually a
very bad idea.  It prevents safe and efficient function redefinition and
inflates the amount of generated machine code at the call site.  Most
severely, when moving parts of a generic function to the caller, we lose
the ability to redefine or extend some of the involved objects and
metaobjects.

Nevertheless, there are two cases where the aforementioned drawbacks are
tolerable.  The one case is when passing built-in Common Lisp objects to
specified functions.  The other case is for user code that has such extreme
performance demands that the alternative of using this technique would be
to refrain from using generic functions altogether.

* The Technique
The goal is to inline a generic function under certain circumstances.
These circumstances are:

1. It is possible to statically determine the generic function being
   called.

2. This generic function is sealed, i.e., it is an instance of
   SEALABLE-GENERIC-FUNCTION that has previously been passed to the
   function SEAL-GENERIC-FUNCTION.

3. This sealed generic function has at least one sealed method, i.e., a
   method of type POTENTIALLY-SEALABLE-METHOD that specializes, on each
   relevant argument, on a built-in or sealed class, or an eql specializer
   whose object is an instance of a built-in or sealed class.

4. It must be possible to determine, statically, that the types of all
   arguments in a specializing position uniquely determine the list of
   applicable methods.

* Examples
The following examples illustrate how sealable metaobjects can be used.
Each example code can be evaluated as-is.  However, for actual use, we
recommend the following practices:

- Sealable generic functions should be defined in a separate file that is
  loaded early.  If this is not done, its methods may not use the correct
  method-class.  (An alternative is to specify the method class of each
  method explicitly).
- Metaobject sealing should be the very last step when loading a project.
  Ideally, all calls to SEAL-GENERIC-FUNCTION should be in a separate file
  that ASDF loads last.  This way, sealing can also be disabled
  conveniently, e.g., to measure whether sealing actually improves
  performance (Which you should do!).

*** Generic Plus
This example shows how one can implement a generic version of =cl:+=.

#+BEGIN_SRC lisp
(sealable-metaobjects:define-sealable-generic-function generic-binary-+ (a b))

(defmethod generic-binary-+ ((a number) (b number))
  (+ a b))

(defmethod generic-binary-+ ((a character) (b character))
  (+ (char-code a)
     (char-code b)))

(sealable-metaobjects:seal-generic-function #'generic-binary-+)

(defun generic-+ (&rest things)
  (cond ((null things) 0)
        ((null (rest things)) (first things))
        (t (reduce #'generic-binary-+ things))))

(define-compiler-macro generic-+ (&rest things)
  (cond ((null things) 0)
        ((null (rest things)) (first things))
        (t
         (flet ((symbolic-generic-binary-+ (a b)
                  `(generic-binary-+ ,a ,b)))
           (reduce #'symbolic-generic-binary-+ things)))))
#+END_SRC

You can quickly verify that this new operator is as efficient as =cl:+=:

#+BEGIN_SRC lisp
(defun triple-1 (x)
  (declare (single-float x))
  (+ x x x))

(defun triple-2 (x)
  (declare (single-float x))
  (generic-+ x x x))

(disassemble #'triple-1)

(disassemble #'triple-2)
#+END_SRC

Yet, other than =cl:+=, =generic-+= can be extended by the user, just like
a regular generic function.  The only restriction is that new methods must
not interfere with the behavior of methods that specialize on sealed types
only.

#+BEGIN_SRC lisp
(defclass my-double-float ()
  ((%value :initarg :value :reader my-double-float-value)))

(defmethod generic-binary-+ ((a my-double-float) (b my-double-float))
  (make-instance 'my-double-float
    :value (+ (my-double-float-value a)
              (my-double-float-value b))))

(defun triple (x)
  (generic-+ x x x))

(my-double-float-value
 (triple
  (make-instance 'my-double-float :value 5.0d0)))
#+END_SRC

* Related Work
- https://github.com/guicho271828/inlined-generic-function
- https://opendylan.org/books/drm/Define_Sealed_Domain
- Generic Function Sealing by Paul Khuong


Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 sealable-metaobjects

Description

A CLOSsy way to trade genericity for performance.

Dependencies
Source

sealable-metaobjects.asd (file)

Components

Next: , Previous: , Up: Top   [Contents][Index]

3 Modules

Modules are listed depth-first from the system components tree.


Previous: , Up: Modules   [Contents][Index]

3.1 sealable-metaobjects/implementation-specific

Dependency

compute-static-call-signatures.lisp (file)

Parent

sealable-metaobjects (system)

Location

implementation-specific/

Components

Next: , Previous: , Up: Top   [Contents][Index]

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

4.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.1 sealable-metaobjects.asd

Location

sealable-metaobjects.asd

Systems

sealable-metaobjects (system)


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.2 sealable-metaobjects/packages.lisp

Parent

sealable-metaobjects (system)

Location

packages.lisp

Packages

sealable-metaobjects


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.3 sealable-metaobjects/debug.lisp

Dependency

packages.lisp (file)

Parent

sealable-metaobjects (system)

Location

debug.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.4 sealable-metaobjects/generic-functions.lisp

Dependency

debug.lisp (file)

Parent

sealable-metaobjects (system)

Location

generic-functions.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.5 sealable-metaobjects/null-lexical-environment-p.lisp

Dependency

generic-functions.lisp (file)

Parent

sealable-metaobjects (system)

Location

null-lexical-environment-p.lisp

Internal Definitions

null-lexical-environement-p (function)


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.6 sealable-metaobjects/inlineable-method-lambda-p.lisp

Dependency

null-lexical-environment-p.lisp (file)

Parent

sealable-metaobjects (system)

Location

inlineable-method-lambda-p.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.7 sealable-metaobjects/specializer-prototype.lisp

Dependency

inlineable-method-lambda-p.lisp (file)

Parent

sealable-metaobjects (system)

Location

specializer-prototype.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.8 sealable-metaobjects/sealable-metaobject-mixin.lisp

Dependency

specializer-prototype.lisp (file)

Parent

sealable-metaobjects (system)

Location

sealable-metaobject-mixin.lisp

Exported Definitions
Internal Definitions

sealable-metaobject-mixin (class)


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.9 sealable-metaobjects/sealable-class.lisp

Dependency

sealable-metaobject-mixin.lisp (file)

Parent

sealable-metaobjects (system)

Location

sealable-class.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.10 sealable-metaobjects/potentially-sealable-method.lisp

Dependency

sealable-class.lisp (file)

Parent

sealable-metaobjects (system)

Location

potentially-sealable-method.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.11 sealable-metaobjects/sealable-generic-function.lisp

Dependency

potentially-sealable-method.lisp (file)

Parent

sealable-metaobjects (system)

Location

sealable-generic-function.lisp

Exported Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.12 sealable-metaobjects/sealable-standard-class.lisp

Dependency

sealable-generic-function.lisp (file)

Parent

sealable-metaobjects (system)

Location

sealable-standard-class.lisp

Exported Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.13 sealable-metaobjects/potentially-sealable-standard-method.lisp

Dependency

sealable-standard-class.lisp (file)

Parent

sealable-metaobjects (system)

Location

potentially-sealable-standard-method.lisp

Internal Definitions

potentially-sealable-standard-method (class)


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.14 sealable-metaobjects/sealable-standard-generic-function.lisp

Dependency

potentially-sealable-standard-method.lisp (file)

Parent

sealable-metaobjects (system)

Location

sealable-standard-generic-function.lisp

Exported Definitions
Internal Definitions

starts-with (function)


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.15 sealable-metaobjects/compute-static-call-signatures.lisp

Dependency

sealable-standard-generic-function.lisp (file)

Parent

sealable-metaobjects (system)

Location

compute-static-call-signatures.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.16 sealable-metaobjects/implementation-specific/sbcl.lisp

If Feature

sbcl

Parent

implementation-specific (module)

Location

implementation-specific/sbcl.lisp

Exported Definitions

seal-metaobject (method)

Internal Definitions

Previous: , Up: Lisp files   [Contents][Index]

4.1.17 sealable-metaobjects/implementation-specific/default.lisp

If Feature

(not (or sbcl))

Parent

implementation-specific (module)

Location

implementation-specific/default.lisp


Next: , Previous: , Up: Top   [Contents][Index]

5 Packages

Packages are listed by definition order.


Previous: , Up: Packages   [Contents][Index]

5.1 sealable-metaobjects

Source

packages.lisp (file)

Use List

closer-common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

6.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.1 Macros

Macro: define-sealable-generic-function FUNCTION-NAME LAMBDA-LIST &body OPTIONS-AND-METHODS
Package

sealable-metaobjects

Source

sealable-standard-generic-function.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.2 Generic functions

Generic Function: class-sealable-p CLASS
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: class-sealable-p (CLASS class)
Generic Function: class-sealed-p CLASS
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: class-sealed-p (CLASS class)
Generic Function: generic-function-sealable-p GENERIC-FUNCTION
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: generic-function-sealable-p (GENERIC-FUNCTION generic-function)
Generic Function: generic-function-sealed-p GENERIC-FUNCTION
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: generic-function-sealed-p (GENERIC-FUNCTION generic-function)
Generic Function: generic-function-specializer-profile GENERIC-FUNCTION
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Writer

(setf generic-function-specializer-profile) (generic function)

Methods
Method: generic-function-specializer-profile (SEALABLE-GENERIC-FUNCTION sealable-generic-function)

automatically generated reader method

Source

sealable-generic-function.lisp (file)

Generic Function: (setf generic-function-specializer-profile) NEW-VALUE OBJECT
Package

sealable-metaobjects

Reader

generic-function-specializer-profile (generic function)

Methods
Method: (setf generic-function-specializer-profile) NEW-VALUE (SEALABLE-GENERIC-FUNCTION sealable-generic-function)

automatically generated writer method

Source

sealable-generic-function.lisp (file)

Generic Function: metaobject-sealable-p METAOBJECT
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: metaobject-sealable-p (SM potentially-sealable-method)
Source

potentially-sealable-method.lisp (file)

Method: metaobject-sealable-p (METAOBJECT sealable-metaobject-mixin)
Source

sealable-metaobject-mixin.lisp (file)

Method: metaobject-sealable-p (CLASS class)
Method: metaobject-sealable-p (GENERIC-FUNCTION generic-function)
Method: metaobject-sealable-p (METHOD method)
Method: metaobject-sealable-p (BUILT-IN-CLASS built-in-class)
Generic Function: metaobject-sealed-p METAOBJECT
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: metaobject-sealed-p (CLASS sealable-class-instance)
Source

sealable-class.lisp (file)

Method: metaobject-sealed-p (SEALABLE-METAOBJECT-MIXIN sealable-metaobject-mixin)

automatically generated reader method

Source

sealable-metaobject-mixin.lisp (file)

Method: metaobject-sealed-p (CLASS class)
Method: metaobject-sealed-p (GENERIC-FUNCTION generic-function)
Method: metaobject-sealed-p (METHOD method)
Method: metaobject-sealed-p (BUILT-IN-CLASS built-in-class)
Method: metaobject-sealed-p (BUILT-IN-CLASS built-in-class) around
Generic Function: method-sealable-p METHOD
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: method-sealable-p (METHOD method)
Generic Function: method-sealed-p METHOD
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: method-sealed-p (METHOD method)
Generic Function: seal-class CLASS
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: seal-class (CLASS class)
Generic Function: seal-generic-function GENERIC-FUNCTION
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: seal-generic-function (GENERIC-FUNCTION generic-function)
Generic Function: seal-metaobject METAOBJECT
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: seal-metaobject (SGF sealable-generic-function) after
Source

sbcl.lisp (file)

Method: seal-metaobject (SGF sealable-generic-function) before
Source

sealable-generic-function.lisp (file)

Method: seal-metaobject (SM potentially-sealable-method) before
Source

potentially-sealable-method.lisp (file)

Method: seal-metaobject (CLASS sealable-class) before
Source

sealable-class.lisp (file)

Method: seal-metaobject (CLASS sealable-class-instance) before
Source

sealable-class.lisp (file)

Method: seal-metaobject (METAOBJECT sealable-metaobject-mixin) around
Source

sealable-metaobject-mixin.lisp (file)

Method: seal-metaobject (METAOBJECT sealable-metaobject-mixin)
Source

sealable-metaobject-mixin.lisp (file)

Method: seal-metaobject OBJECT
Generic Function: seal-method METHOD
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: seal-method (METHOD method)
Generic Function: specializer-direct-superspecializers SPECIALIZER
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: specializer-direct-superspecializers (CLASS class)
Method: specializer-direct-superspecializers (EQL-SPECIALIZER eql-specializer)
Generic Function: specializer-prototype SPECIALIZER &optional EXCLUDED-SPECIALIZERS

Returns an object that is of the type indicated by SPECIALIZER, but not of any of the types indicated the optionally supplied EXCLUDED-SPECIALIZERS. Returns a secondary value of T if such an object could be determined, and NIL if no such object was found.

Examples:
(specializer-prototype
(find-class ’double-float))
=> 5.0d0, T

(specializer-prototype
(find-class ’double-float)
(list (intern-eql-specializer 5.0d0)))
=> 6.0d0, T

(specializer-prototype
(find-class ’real)
(list (find-class ’rational) (find-class ’float)))
=> NIL, NIL

Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: specializer-prototype (CLASS class) &optional EXCLUDED-SPECIALIZERS
Source

specializer-prototype.lisp (file)

Method: specializer-prototype (EQL-SPECIALIZER eql-specializer) &optional EXCLUDED-SPECIALIZERS
Source

specializer-prototype.lisp (file)

Generic Function: specializer-type SPECIALIZER
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: specializer-type (CLASS class)
Method: specializer-type (EQL-SPECIALIZER eql-specializer)

Previous: , Up: Exported definitions   [Contents][Index]

6.1.3 Classes

Class: sealable-class ()
Package

sealable-metaobjects

Source

sealable-class.lisp (file)

Direct superclasses
Direct subclasses

sealable-standard-class (class)

Direct methods
Class: sealable-class-instance ()
Package

sealable-metaobjects

Source

sealable-class.lisp (file)

Direct superclasses

t (class)

Direct subclasses

sealable-standard-class-instance (class)

Direct methods
Class: sealable-generic-function ()
Package

sealable-metaobjects

Source

sealable-generic-function.lisp (file)

Direct superclasses
Direct subclasses

sealable-standard-generic-function (class)

Direct methods
Direct slots
Slot: %specializer-profile
Readers

generic-function-specializer-profile (generic function)

Writers

(setf generic-function-specializer-profile) (generic function)

Class: sealable-standard-class ()
Package

sealable-metaobjects

Source

sealable-standard-class.lisp (file)

Direct superclasses
Direct methods

validate-superclass (method)

Class: sealable-standard-class-instance ()
Package

sealable-metaobjects

Source

sealable-standard-class.lisp (file)

Direct superclasses
Class: sealable-standard-generic-function ()
Package

sealable-metaobjects

Source

sealable-standard-generic-function.lisp (file)

Direct superclasses

Previous: , Up: Definitions   [Contents][Index]

6.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.1 Special variables

Special Variable: *class-prototypes*
Package

sealable-metaobjects

Source

specializer-prototype.lisp (file)

Special Variable: *debug*
Package

sealable-metaobjects

Source

debug.lisp (file)

Special Variable: *snode-table*
Package

sealable-metaobjects

Source

compute-static-call-signatures.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.2 Macros

Macro: debug-format FORMAT-STRING &rest ARGUMENTS
Package

sealable-metaobjects

Source

debug.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.3 Functions

Function: class-prototypes CLASS
Package

sealable-metaobjects

Source

specializer-prototype.lisp (file)

Function: effective-method-inline-lambda EFFECTIVE-METHOD
Package

sealable-metaobjects

Source

sbcl.lisp (file)

Function: eql-specializer-p OBJECT
Package

sealable-metaobjects

Source

specializer-prototype.lisp (file)

Function: inherits CLASS OTHER-CLASS
Package

sealable-metaobjects

Source

sealable-class.lisp (file)

Function: inlineable-body-p FORMS
Package

sealable-metaobjects

Source

inlineable-method-lambda-p.lisp (file)

Function: inlineable-form-p FORM
Package

sealable-metaobjects

Source

inlineable-method-lambda-p.lisp (file)

Function: inlineable-lambda-list-p LAMBDA-LIST
Package

sealable-metaobjects

Source

inlineable-method-lambda-p.lisp (file)

Function: inlineable-method-lambda-p LAMBDA-EXPRESSION ENVIRONMENT
Package

sealable-metaobjects

Source

inlineable-method-lambda-p.lisp (file)

Function: keyword-lambda-list-p LAMBDA-LIST
Package

sealable-metaobjects

Source

inlineable-method-lambda-p.lisp (file)

Function: make-deftransform GENERIC-FUNCTION STATIC-CALL-SIGNATURE
Package

sealable-metaobjects

Source

sbcl.lisp (file)

Function: make-effective-method-using-prototypes GF PROTOTYPES ARITY
Package

sealable-metaobjects

Source

sbcl.lisp (file)

Function: map-types-and-prototypes FN SPECIALIZERS-LIST SPECIALIZER-PROFILE
Package

sealable-metaobjects

Source

compute-static-call-signatures.lisp (file)

Function: null-lexical-environement-p ENVIRONMENT
Package

sealable-metaobjects

Source

null-lexical-environment-p.lisp (file)

Function: parse-body BODY
Package

sealable-metaobjects

Source

inlineable-method-lambda-p.lisp (file)

Function: register-class-prototype PROTOTYPE &optional CLASS
Package

sealable-metaobjects

Source

specializer-prototype.lisp (file)

Function: sb-pcl-symbol-p SYMBOL
Package

sealable-metaobjects

Source

sbcl.lisp (file)

Function: snode-add-edge SUPER-SNODE SUB-SNODE
Package

sealable-metaobjects

Source

compute-static-call-signatures.lisp (file)

Function: snode-prototype SNODE
Package

sealable-metaobjects

Source

compute-static-call-signatures.lisp (file)

Function: snode-type SNODE
Package

sealable-metaobjects

Source

compute-static-call-signatures.lisp (file)

Function: specializer-snode SPECIALIZER
Package

sealable-metaobjects

Source

compute-static-call-signatures.lisp (file)

Function: specializer-snode-p SPECIALIZER
Package

sealable-metaobjects

Source

compute-static-call-signatures.lisp (file)

Function: starts-with ITEM
Package

sealable-metaobjects

Source

sealable-standard-generic-function.lisp (file)

Function: type-prototype-pairs SPECIALIZERS
Package

sealable-metaobjects

Source

compute-static-call-signatures.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.4 Generic functions

Generic Function: compute-static-call-signatures GENERIC-FUNCTION
Package

sealable-metaobjects

Source

compute-static-call-signatures.lisp (file)

Methods
Method: compute-static-call-signatures (SGF sealable-generic-function)
Generic Function: generic-function-inline-lambda GENERIC-FUNCTION ARITY PROTOTYPES
Package

sealable-metaobjects

Methods
Method: generic-function-inline-lambda (GENERIC-FUNCTION sealable-generic-function) ARITY PROTOTYPES
Source

sbcl.lisp (file)

Generic Function: method-inline-lambda METHOD
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: method-inline-lambda (POTENTIALLY-SEALABLE-METHOD potentially-sealable-method)

automatically generated reader method

Source

potentially-sealable-method.lisp (file)

Generic Function: method-specializer-profile OBJECT
Generic Function: (setf method-specializer-profile) NEW-VALUE OBJECT
Package

sealable-metaobjects

Methods
Method: method-specializer-profile (POTENTIALLY-SEALABLE-METHOD potentially-sealable-method)

automatically generated reader method

Source

potentially-sealable-method.lisp (file)

Method: (setf method-specializer-profile) NEW-VALUE (POTENTIALLY-SEALABLE-METHOD potentially-sealable-method)

automatically generated writer method

Source

potentially-sealable-method.lisp (file)

Generic Function: snode-children OBJECT
Generic Function: (setf snode-children) NEW-VALUE OBJECT
Package

sealable-metaobjects

Methods
Method: snode-children (SNODE snode)

automatically generated reader method

Source

compute-static-call-signatures.lisp (file)

Method: (setf snode-children) NEW-VALUE (SNODE snode)

automatically generated writer method

Source

compute-static-call-signatures.lisp (file)

Generic Function: snode-parents OBJECT
Generic Function: (setf snode-parents) NEW-VALUE OBJECT
Package

sealable-metaobjects

Methods
Method: snode-parents (SNODE snode)

automatically generated reader method

Source

compute-static-call-signatures.lisp (file)

Method: (setf snode-parents) NEW-VALUE (SNODE snode)

automatically generated writer method

Source

compute-static-call-signatures.lisp (file)

Generic Function: snode-specializer OBJECT
Generic Function: (setf snode-specializer) NEW-VALUE OBJECT
Package

sealable-metaobjects

Methods
Method: snode-specializer (SNODE snode)

automatically generated reader method

Source

compute-static-call-signatures.lisp (file)

Method: (setf snode-specializer) NEW-VALUE (SNODE snode)

automatically generated writer method

Source

compute-static-call-signatures.lisp (file)

Generic Function: specializer-sealed-p SPECIALIZER
Package

sealable-metaobjects

Source

generic-functions.lisp (file)

Methods
Method: specializer-sealed-p (SEALABLE-CLASS sealable-class)
Source

sealable-class.lisp (file)

Method: specializer-sealed-p (CLASS class)
Method: specializer-sealed-p (BUILT-IN-CLASS built-in-class)
Method: specializer-sealed-p (EQL-SPECIALIZER eql-specializer)
Generic Function: static-call-signature-prototypes OBJECT
Package

sealable-metaobjects

Methods
Method: static-call-signature-prototypes (STATIC-CALL-SIGNATURE static-call-signature)

automatically generated reader method

Source

compute-static-call-signatures.lisp (file)

Generic Function: static-call-signature-types OBJECT
Package

sealable-metaobjects

Methods
Method: static-call-signature-types (STATIC-CALL-SIGNATURE static-call-signature)

automatically generated reader method

Source

compute-static-call-signatures.lisp (file)


Previous: , Up: Internal definitions   [Contents][Index]

6.2.5 Classes

Class: potentially-sealable-method ()
Package

sealable-metaobjects

Source

potentially-sealable-method.lisp (file)

Direct superclasses
Direct subclasses

potentially-sealable-standard-method (class)

Direct methods
Direct slots
Slot: %inline-lambda
Initargs

sealable-metaobjects::inline-lambda

Readers

method-inline-lambda (generic function)

Slot: %specializer-profile
Initargs

sealable-metaobjects::specializer-profile

Initform

(error "no specializer profile supplied.")

Readers

method-specializer-profile (generic function)

Writers

(setf method-specializer-profile) (generic function)

Class: potentially-sealable-standard-method ()
Package

sealable-metaobjects

Source

potentially-sealable-standard-method.lisp (file)

Direct superclasses
Class: sealable-metaobject-mixin ()
Package

sealable-metaobjects

Source

sealable-metaobject-mixin.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses
Direct methods
Direct slots
Slot: %sealed-p
Readers

metaobject-sealed-p (generic function)

Class: snode ()
Package

sealable-metaobjects

Source

compute-static-call-signatures.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
Direct slots
Slot: %specializer
Initargs

:specializer

Readers

snode-specializer (generic function)

Writers

(setf snode-specializer) (generic function)

Slot: %children
Initform

(quote nil)

Readers

snode-children (generic function)

Writers

(setf snode-children) (generic function)

Slot: %parents
Initform

(quote nil)

Readers

snode-parents (generic function)

Writers

(setf snode-parents) (generic function)

Class: static-call-signature ()
Package

sealable-metaobjects

Source

compute-static-call-signatures.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
Direct slots
Slot: %type
Initargs

:types

Readers

static-call-signature-types (generic function)

Slot: %prototype
Initargs

:prototypes

Readers

static-call-signature-prototypes (generic function)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   F   L   M   S  
Index Entry  Section

F
File, Lisp, sealable-metaobjects.asd: The sealable-metaobjects<dot>asd file
File, Lisp, sealable-metaobjects/compute-static-call-signatures.lisp: The sealable-metaobjects/compute-static-call-signatures<dot>lisp file
File, Lisp, sealable-metaobjects/debug.lisp: The sealable-metaobjects/debug<dot>lisp file
File, Lisp, sealable-metaobjects/generic-functions.lisp: The sealable-metaobjects/generic-functions<dot>lisp file
File, Lisp, sealable-metaobjects/implementation-specific/default.lisp: The sealable-metaobjects/implementation-specific/default<dot>lisp file
File, Lisp, sealable-metaobjects/implementation-specific/sbcl.lisp: The sealable-metaobjects/implementation-specific/sbcl<dot>lisp file
File, Lisp, sealable-metaobjects/inlineable-method-lambda-p.lisp: The sealable-metaobjects/inlineable-method-lambda-p<dot>lisp file
File, Lisp, sealable-metaobjects/null-lexical-environment-p.lisp: The sealable-metaobjects/null-lexical-environment-p<dot>lisp file
File, Lisp, sealable-metaobjects/packages.lisp: The sealable-metaobjects/packages<dot>lisp file
File, Lisp, sealable-metaobjects/potentially-sealable-method.lisp: The sealable-metaobjects/potentially-sealable-method<dot>lisp file
File, Lisp, sealable-metaobjects/potentially-sealable-standard-method.lisp: The sealable-metaobjects/potentially-sealable-standard-method<dot>lisp file
File, Lisp, sealable-metaobjects/sealable-class.lisp: The sealable-metaobjects/sealable-class<dot>lisp file
File, Lisp, sealable-metaobjects/sealable-generic-function.lisp: The sealable-metaobjects/sealable-generic-function<dot>lisp file
File, Lisp, sealable-metaobjects/sealable-metaobject-mixin.lisp: The sealable-metaobjects/sealable-metaobject-mixin<dot>lisp file
File, Lisp, sealable-metaobjects/sealable-standard-class.lisp: The sealable-metaobjects/sealable-standard-class<dot>lisp file
File, Lisp, sealable-metaobjects/sealable-standard-generic-function.lisp: The sealable-metaobjects/sealable-standard-generic-function<dot>lisp file
File, Lisp, sealable-metaobjects/specializer-prototype.lisp: The sealable-metaobjects/specializer-prototype<dot>lisp file

L
Lisp File, sealable-metaobjects.asd: The sealable-metaobjects<dot>asd file
Lisp File, sealable-metaobjects/compute-static-call-signatures.lisp: The sealable-metaobjects/compute-static-call-signatures<dot>lisp file
Lisp File, sealable-metaobjects/debug.lisp: The sealable-metaobjects/debug<dot>lisp file
Lisp File, sealable-metaobjects/generic-functions.lisp: The sealable-metaobjects/generic-functions<dot>lisp file
Lisp File, sealable-metaobjects/implementation-specific/default.lisp: The sealable-metaobjects/implementation-specific/default<dot>lisp file
Lisp File, sealable-metaobjects/implementation-specific/sbcl.lisp: The sealable-metaobjects/implementation-specific/sbcl<dot>lisp file
Lisp File, sealable-metaobjects/inlineable-method-lambda-p.lisp: The sealable-metaobjects/inlineable-method-lambda-p<dot>lisp file
Lisp File, sealable-metaobjects/null-lexical-environment-p.lisp: The sealable-metaobjects/null-lexical-environment-p<dot>lisp file
Lisp File, sealable-metaobjects/packages.lisp: The sealable-metaobjects/packages<dot>lisp file
Lisp File, sealable-metaobjects/potentially-sealable-method.lisp: The sealable-metaobjects/potentially-sealable-method<dot>lisp file
Lisp File, sealable-metaobjects/potentially-sealable-standard-method.lisp: The sealable-metaobjects/potentially-sealable-standard-method<dot>lisp file
Lisp File, sealable-metaobjects/sealable-class.lisp: The sealable-metaobjects/sealable-class<dot>lisp file
Lisp File, sealable-metaobjects/sealable-generic-function.lisp: The sealable-metaobjects/sealable-generic-function<dot>lisp file
Lisp File, sealable-metaobjects/sealable-metaobject-mixin.lisp: The sealable-metaobjects/sealable-metaobject-mixin<dot>lisp file
Lisp File, sealable-metaobjects/sealable-standard-class.lisp: The sealable-metaobjects/sealable-standard-class<dot>lisp file
Lisp File, sealable-metaobjects/sealable-standard-generic-function.lisp: The sealable-metaobjects/sealable-standard-generic-function<dot>lisp file
Lisp File, sealable-metaobjects/specializer-prototype.lisp: The sealable-metaobjects/specializer-prototype<dot>lisp file

M
Module, sealable-metaobjects/implementation-specific: The sealable-metaobjects/implementation-specific module

S
sealable-metaobjects.asd: The sealable-metaobjects<dot>asd file
sealable-metaobjects/compute-static-call-signatures.lisp: The sealable-metaobjects/compute-static-call-signatures<dot>lisp file
sealable-metaobjects/debug.lisp: The sealable-metaobjects/debug<dot>lisp file
sealable-metaobjects/generic-functions.lisp: The sealable-metaobjects/generic-functions<dot>lisp file
sealable-metaobjects/implementation-specific: The sealable-metaobjects/implementation-specific module
sealable-metaobjects/implementation-specific/default.lisp: The sealable-metaobjects/implementation-specific/default<dot>lisp file
sealable-metaobjects/implementation-specific/sbcl.lisp: The sealable-metaobjects/implementation-specific/sbcl<dot>lisp file
sealable-metaobjects/inlineable-method-lambda-p.lisp: The sealable-metaobjects/inlineable-method-lambda-p<dot>lisp file
sealable-metaobjects/null-lexical-environment-p.lisp: The sealable-metaobjects/null-lexical-environment-p<dot>lisp file
sealable-metaobjects/packages.lisp: The sealable-metaobjects/packages<dot>lisp file
sealable-metaobjects/potentially-sealable-method.lisp: The sealable-metaobjects/potentially-sealable-method<dot>lisp file
sealable-metaobjects/potentially-sealable-standard-method.lisp: The sealable-metaobjects/potentially-sealable-standard-method<dot>lisp file
sealable-metaobjects/sealable-class.lisp: The sealable-metaobjects/sealable-class<dot>lisp file
sealable-metaobjects/sealable-generic-function.lisp: The sealable-metaobjects/sealable-generic-function<dot>lisp file
sealable-metaobjects/sealable-metaobject-mixin.lisp: The sealable-metaobjects/sealable-metaobject-mixin<dot>lisp file
sealable-metaobjects/sealable-standard-class.lisp: The sealable-metaobjects/sealable-standard-class<dot>lisp file
sealable-metaobjects/sealable-standard-generic-function.lisp: The sealable-metaobjects/sealable-standard-generic-function<dot>lisp file
sealable-metaobjects/specializer-prototype.lisp: The sealable-metaobjects/specializer-prototype<dot>lisp file

Jump to:   F   L   M   S  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   (  
C   D   E   F   G   I   K   M   N   P   R   S   T  
Index Entry  Section

(
(setf generic-function-specializer-profile): Exported generic functions
(setf generic-function-specializer-profile): Exported generic functions
(setf method-specializer-profile): Internal generic functions
(setf method-specializer-profile): Internal generic functions
(setf snode-children): Internal generic functions
(setf snode-children): Internal generic functions
(setf snode-parents): Internal generic functions
(setf snode-parents): Internal generic functions
(setf snode-specializer): Internal generic functions
(setf snode-specializer): Internal generic functions

C
class-prototypes: Internal functions
class-sealable-p: Exported generic functions
class-sealable-p: Exported generic functions
class-sealed-p: Exported generic functions
class-sealed-p: Exported generic functions
compute-static-call-signatures: Internal generic functions
compute-static-call-signatures: Internal generic functions

D
debug-format: Internal macros
define-sealable-generic-function: Exported macros

E
effective-method-inline-lambda: Internal functions
eql-specializer-p: Internal functions

F
Function, class-prototypes: Internal functions
Function, effective-method-inline-lambda: Internal functions
Function, eql-specializer-p: Internal functions
Function, inherits: Internal functions
Function, inlineable-body-p: Internal functions
Function, inlineable-form-p: Internal functions
Function, inlineable-lambda-list-p: Internal functions
Function, inlineable-method-lambda-p: Internal functions
Function, keyword-lambda-list-p: Internal functions
Function, make-deftransform: Internal functions
Function, make-effective-method-using-prototypes: Internal functions
Function, map-types-and-prototypes: Internal functions
Function, null-lexical-environement-p: Internal functions
Function, parse-body: Internal functions
Function, register-class-prototype: Internal functions
Function, sb-pcl-symbol-p: Internal functions
Function, snode-add-edge: Internal functions
Function, snode-prototype: Internal functions
Function, snode-type: Internal functions
Function, specializer-snode: Internal functions
Function, specializer-snode-p: Internal functions
Function, starts-with: Internal functions
Function, type-prototype-pairs: Internal functions

G
Generic Function, (setf generic-function-specializer-profile): Exported generic functions
Generic Function, (setf method-specializer-profile): Internal generic functions
Generic Function, (setf snode-children): Internal generic functions
Generic Function, (setf snode-parents): Internal generic functions
Generic Function, (setf snode-specializer): Internal generic functions
Generic Function, class-sealable-p: Exported generic functions
Generic Function, class-sealed-p: Exported generic functions
Generic Function, compute-static-call-signatures: Internal generic functions
Generic Function, generic-function-inline-lambda: Internal generic functions
Generic Function, generic-function-sealable-p: Exported generic functions
Generic Function, generic-function-sealed-p: Exported generic functions
Generic Function, generic-function-specializer-profile: Exported generic functions
Generic Function, metaobject-sealable-p: Exported generic functions
Generic Function, metaobject-sealed-p: Exported generic functions
Generic Function, method-inline-lambda: Internal generic functions
Generic Function, method-sealable-p: Exported generic functions
Generic Function, method-sealed-p: Exported generic functions
Generic Function, method-specializer-profile: Internal generic functions
Generic Function, seal-class: Exported generic functions
Generic Function, seal-generic-function: Exported generic functions
Generic Function, seal-metaobject: Exported generic functions
Generic Function, seal-method: Exported generic functions
Generic Function, snode-children: Internal generic functions
Generic Function, snode-parents: Internal generic functions
Generic Function, snode-specializer: Internal generic functions
Generic Function, specializer-direct-superspecializers: Exported generic functions
Generic Function, specializer-prototype: Exported generic functions
Generic Function, specializer-sealed-p: Internal generic functions
Generic Function, specializer-type: Exported generic functions
Generic Function, static-call-signature-prototypes: Internal generic functions
Generic Function, static-call-signature-types: Internal generic functions
generic-function-inline-lambda: Internal generic functions
generic-function-inline-lambda: Internal generic functions
generic-function-sealable-p: Exported generic functions
generic-function-sealable-p: Exported generic functions
generic-function-sealed-p: Exported generic functions
generic-function-sealed-p: Exported generic functions
generic-function-specializer-profile: Exported generic functions
generic-function-specializer-profile: Exported generic functions

I
inherits: Internal functions
inlineable-body-p: Internal functions
inlineable-form-p: Internal functions
inlineable-lambda-list-p: Internal functions
inlineable-method-lambda-p: Internal functions

K
keyword-lambda-list-p: Internal functions

M
Macro, debug-format: Internal macros
Macro, define-sealable-generic-function: Exported macros
make-deftransform: Internal functions
make-effective-method-using-prototypes: Internal functions
map-types-and-prototypes: Internal functions
metaobject-sealable-p: Exported generic functions
metaobject-sealable-p: Exported generic functions
metaobject-sealable-p: Exported generic functions
metaobject-sealable-p: Exported generic functions
metaobject-sealable-p: Exported generic functions
metaobject-sealable-p: Exported generic functions
metaobject-sealable-p: Exported generic functions
metaobject-sealed-p: Exported generic functions
metaobject-sealed-p: Exported generic functions
metaobject-sealed-p: Exported generic functions
metaobject-sealed-p: Exported generic functions
metaobject-sealed-p: Exported generic functions
metaobject-sealed-p: Exported generic functions
metaobject-sealed-p: Exported generic functions
metaobject-sealed-p: Exported generic functions
Method, (setf generic-function-specializer-profile): Exported generic functions
Method, (setf method-specializer-profile): Internal generic functions
Method, (setf snode-children): Internal generic functions
Method, (setf snode-parents): Internal generic functions
Method, (setf snode-specializer): Internal generic functions
Method, class-sealable-p: Exported generic functions
Method, class-sealed-p: Exported generic functions
Method, compute-static-call-signatures: Internal generic functions
Method, generic-function-inline-lambda: Internal generic functions
Method, generic-function-sealable-p: Exported generic functions
Method, generic-function-sealed-p: Exported generic functions
Method, generic-function-specializer-profile: Exported generic functions
Method, metaobject-sealable-p: Exported generic functions
Method, metaobject-sealable-p: Exported generic functions
Method, metaobject-sealable-p: Exported generic functions
Method, metaobject-sealable-p: Exported generic functions
Method, metaobject-sealable-p: Exported generic functions
Method, metaobject-sealable-p: Exported generic functions
Method, metaobject-sealed-p: Exported generic functions
Method, metaobject-sealed-p: Exported generic functions
Method, metaobject-sealed-p: Exported generic functions
Method, metaobject-sealed-p: Exported generic functions
Method, metaobject-sealed-p: Exported generic functions
Method, metaobject-sealed-p: Exported generic functions
Method, metaobject-sealed-p: Exported generic functions
Method, method-inline-lambda: Internal generic functions
Method, method-sealable-p: Exported generic functions
Method, method-sealed-p: Exported generic functions
Method, method-specializer-profile: Internal generic functions
Method, seal-class: Exported generic functions
Method, seal-generic-function: Exported generic functions
Method, seal-metaobject: Exported generic functions
Method, seal-metaobject: Exported generic functions
Method, seal-metaobject: Exported generic functions
Method, seal-metaobject: Exported generic functions
Method, seal-metaobject: Exported generic functions
Method, seal-metaobject: Exported generic functions
Method, seal-metaobject: Exported generic functions
Method, seal-metaobject: Exported generic functions
Method, seal-method: Exported generic functions
Method, snode-children: Internal generic functions
Method, snode-parents: Internal generic functions
Method, snode-specializer: Internal generic functions
Method, specializer-direct-superspecializers: Exported generic functions
Method, specializer-direct-superspecializers: Exported generic functions
Method, specializer-prototype: Exported generic functions
Method, specializer-prototype: Exported generic functions
Method, specializer-sealed-p: Internal generic functions
Method, specializer-sealed-p: Internal generic functions
Method, specializer-sealed-p: Internal generic functions
Method, specializer-sealed-p: Internal generic functions
Method, specializer-type: Exported generic functions
Method, specializer-type: Exported generic functions
Method, static-call-signature-prototypes: Internal generic functions
Method, static-call-signature-types: Internal generic functions
method-inline-lambda: Internal generic functions
method-inline-lambda: Internal generic functions
method-sealable-p: Exported generic functions
method-sealable-p: Exported generic functions
method-sealed-p: Exported generic functions
method-sealed-p: Exported generic functions
method-specializer-profile: Internal generic functions
method-specializer-profile: Internal generic functions

N
null-lexical-environement-p: Internal functions

P
parse-body: Internal functions

R
register-class-prototype: Internal functions

S
sb-pcl-symbol-p: Internal functions
seal-class: Exported generic functions
seal-class: Exported generic functions
seal-generic-function: Exported generic functions
seal-generic-function: Exported generic functions
seal-metaobject: Exported generic functions
seal-metaobject: Exported generic functions
seal-metaobject: Exported generic functions
seal-metaobject: Exported generic functions
seal-metaobject: Exported generic functions
seal-metaobject: Exported generic functions
seal-metaobject: Exported generic functions
seal-metaobject: Exported generic functions
seal-metaobject: Exported generic functions
seal-method: Exported generic functions
seal-method: Exported generic functions
snode-add-edge: Internal functions
snode-children: Internal generic functions
snode-children: Internal generic functions
snode-parents: Internal generic functions
snode-parents: Internal generic functions
snode-prototype: Internal functions
snode-specializer: Internal generic functions
snode-specializer: Internal generic functions
snode-type: Internal functions
specializer-direct-superspecializers: Exported generic functions
specializer-direct-superspecializers: Exported generic functions
specializer-direct-superspecializers: Exported generic functions
specializer-prototype: Exported generic functions
specializer-prototype: Exported generic functions
specializer-prototype: Exported generic functions
specializer-sealed-p: Internal generic functions
specializer-sealed-p: Internal generic functions
specializer-sealed-p: Internal generic functions
specializer-sealed-p: Internal generic functions
specializer-sealed-p: Internal generic functions
specializer-snode: Internal functions
specializer-snode-p: Internal functions
specializer-type: Exported generic functions
specializer-type: Exported generic functions
specializer-type: Exported generic functions
starts-with: Internal functions
static-call-signature-prototypes: Internal generic functions
static-call-signature-prototypes: Internal generic functions
static-call-signature-types: Internal generic functions
static-call-signature-types: Internal generic functions

T
type-prototype-pairs: Internal functions

Jump to:   (  
C   D   E   F   G   I   K   M   N   P   R   S   T  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   %   *  
S  
Index Entry  Section

%
%children: Internal classes
%inline-lambda: Internal classes
%parents: Internal classes
%prototype: Internal classes
%sealed-p: Internal classes
%specializer: Internal classes
%specializer-profile: Exported classes
%specializer-profile: Internal classes
%type: Internal classes

*
*class-prototypes*: Internal special variables
*debug*: Internal special variables
*snode-table*: Internal special variables

S
Slot, %children: Internal classes
Slot, %inline-lambda: Internal classes
Slot, %parents: Internal classes
Slot, %prototype: Internal classes
Slot, %sealed-p: Internal classes
Slot, %specializer: Internal classes
Slot, %specializer-profile: Exported classes
Slot, %specializer-profile: Internal classes
Slot, %type: Internal classes
Special Variable, *class-prototypes*: Internal special variables
Special Variable, *debug*: Internal special variables
Special Variable, *snode-table*: Internal special variables

Jump to:   %   *  
S  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   C   P   S  
Index Entry  Section

C
Class, potentially-sealable-method: Internal classes
Class, potentially-sealable-standard-method: Internal classes
Class, sealable-class: Exported classes
Class, sealable-class-instance: Exported classes
Class, sealable-generic-function: Exported classes
Class, sealable-metaobject-mixin: Internal classes
Class, sealable-standard-class: Exported classes
Class, sealable-standard-class-instance: Exported classes
Class, sealable-standard-generic-function: Exported classes
Class, snode: Internal classes
Class, static-call-signature: Internal classes

P
Package, sealable-metaobjects: The sealable-metaobjects package
potentially-sealable-method: Internal classes
potentially-sealable-standard-method: Internal classes

S
sealable-class: Exported classes
sealable-class-instance: Exported classes
sealable-generic-function: Exported classes
sealable-metaobject-mixin: Internal classes
sealable-metaobjects: The sealable-metaobjects system
sealable-metaobjects: The sealable-metaobjects package
sealable-standard-class: Exported classes
sealable-standard-class-instance: Exported classes
sealable-standard-generic-function: Exported classes
snode: Internal classes
static-call-signature: Internal classes
System, sealable-metaobjects: The sealable-metaobjects system

Jump to:   C   P   S