The stmx Reference Manual

This is the stmx Reference Manual, version 2.0.5, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 17:58:00 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

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


2.1 stmx

Composable Transactional Memory

Author

Massimiliano Ghilardi

License

LLGPL

Version

2.0.5

Dependencies
  • alexandria (system).
  • log4cl (system).
  • closer-mop (system).
  • bordeaux-threads (system).
  • trivial-garbage (system).
Source

stmx.asd.

Child Components

3 Modules

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


3.1 stmx/asm

Source

stmx.asd.

Parent Component

stmx (system).

Child Components

3.2 stmx/lang

Dependency

asm (module).

Source

stmx.asd.

Parent Component

stmx (system).

Child Components

3.3 stmx/main

Dependency

lang (module).

Source

stmx.asd.

Parent Component

stmx (system).

Child Components

3.4 stmx/util

Dependencies
Source

stmx.asd.

Parent Component

stmx (system).

Child Components

4 Files

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


4.1 Lisp


4.1.1 stmx/stmx.asd

Source

stmx.asd.

Parent Component

stmx (system).

ASDF Systems

stmx.


4.1.2 stmx/asm/package.lisp

Source

stmx.asd.

Parent Component

asm (module).

Packages

stmx.asm.


4.1.3 stmx/asm/compiler.lisp

Dependency

package.lisp (file).

Source

stmx.asd.

Parent Component

asm (module).

Public Interface
Internals

4.1.4 stmx/asm/x86-32,64-known.lisp

Dependency

compiler.lisp (file).

Source

stmx.asd.

Parent Component

asm (module).


4.1.5 stmx/asm/x86-32,64-insts.lisp

Dependency

x86-32,64-known.lisp (file).

Source

stmx.asd.

Parent Component

asm (module).


4.1.6 stmx/asm/x86-32,64-vops.lisp

Dependency

x86-32,64-insts.lisp (file).

Source

stmx.asd.

Parent Component

asm (module).

Public Interface

+transaction-started+ (constant).


4.1.7 stmx/asm/cpuid.lisp

Dependency

x86-32,64-vops.lisp (file).

Source

stmx.asd.

Parent Component

asm (module).

Public Interface

4.1.8 stmx/asm/transaction.lisp

Dependency

x86-32,64-vops.lisp (file).

Source

stmx.asd.

Parent Component

asm (module).

Public Interface
Internals

transaction-abort-macro (macro).


4.1.9 stmx/lang/package.lisp

Source

stmx.asd.

Parent Component

lang (module).

Packages

stmx.lang.


4.1.10 stmx/lang/macro.lisp

Dependency

package.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface
Internals

4.1.11 stmx/lang/features.lisp

Dependency

macro.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface
Internals

4.1.12 stmx/lang/features-reader.lisp

Dependency

features.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface

enable-#?-syntax (macro).

Internals

4.1.13 stmx/lang/thread.lisp

Dependency

features-reader.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface
Internals

4.1.14 stmx/lang/features-detect.lisp

Dependency

thread.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface

4.1.15 stmx/lang/hw-transactions.lisp

Dependency

features-detect.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface

4.1.16 stmx/lang/atomic-ops.lisp

Dependency

features-detect.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface
Internals

4.1.17 stmx/lang/mutex.lisp

Dependency

atomic-ops.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface
Internals

4.1.18 stmx/lang/atomic-counter.lisp

Dependencies
Source

stmx.asd.

Parent Component

lang (module).

Public Interface
Internals

4.1.19 stmx/lang/cons.lisp

Dependency

thread.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface
Internals

*cons-pool* (special variable).


4.1.20 stmx/lang/fast-vector.lisp

Dependency

macro.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface
Internals

4.1.21 stmx/lang/hash-table.lisp

Dependency

cons.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface
Internals

incf-hash-counter (macro).


4.1.22 stmx/lang/print.lisp

Dependency

macro.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface
Internals

4.1.23 stmx/lang/class-precedence-list.lisp

Dependency

macro.lisp (file).

Source

stmx.asd.

Parent Component

lang (module).

Public Interface

clos-compute-class-precedence-list (function).

Internals

4.1.24 stmx/main/package.lisp

Source

stmx.asd.

Parent Component

main (module).

Packages

stmx.


4.1.25 stmx/main/version.lisp

Dependency

package.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface

*stmx-version* (special variable).

Internals

4.1.26 stmx/main/global-clock.lisp

Dependency

package.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface

make-load-form (method).

Internals

4.1.27 stmx/main/tvar-fwd.lisp

Dependency

global-clock.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface
Internals

4.1.28 stmx/main/classes.lisp

Dependency

tvar-fwd.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface
Internals

4.1.29 stmx/main/txhash.lisp

Dependency

classes.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface

print-object (method).

Internals

4.1.30 stmx/main/tlog.lisp

Dependency

txhash.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface

print-object (method).

Internals

4.1.31 stmx/main/tvar.lisp

Dependency

tlog.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface
Internals

4.1.32 stmx/main/optimize-for.lisp

Dependency

tvar.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface
Internals

4.1.33 stmx/main/tvar-slot.lisp

Dependency

optimize-for.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface
Internals

4.1.34 stmx/main/tstruct.lisp

Dependency

tvar-slot.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface
Internals

4.1.35 stmx/main/tclass.lisp

Dependencies
Source

stmx.asd.

Parent Component

main (module).

Public Interface
Internals

4.1.36 stmx/main/tslot.lisp

Dependency

tclass.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface
Internals

4.1.37 stmx/main/hw-atomic.lisp

Dependency

classes.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface

hw-atomic2 (macro).

Internals

4.1.38 stmx/main/commit.lisp

Dependencies
Source

stmx.asd.

Parent Component

main (module).

Public Interface
Internals

4.1.39 stmx/main/sw-atomic.lisp

Dependency

commit.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface

transaction (macro).

Internals

4.1.40 stmx/main/atomic.lisp

Dependencies
Source

stmx.asd.

Parent Component

main (module).

Public Interface
Internals

hw-transaction-test (function).


4.1.41 stmx/main/orelse.lisp

Dependency

atomic.lisp (file).

Source

stmx.asd.

Parent Component

main (module).

Public Interface
Internals

4.1.42 stmx/util/package.lisp

Source

stmx.asd.

Parent Component

util (module).

Packages

stmx.util.


4.1.43 stmx/util/misc.lisp

Dependency

package.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.44 stmx/util/print.lisp

Dependency

package.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Internals

print-object-contents (generic function).


4.1.45 stmx/util/container.lisp

Dependency

misc.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface

4.1.46 stmx/util/tcons.lisp

Dependency

misc.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.47 stmx/util/tcons-list.lisp

Dependency

tcons.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.48 stmx/util/tcons-alist.lisp

Dependency

tcons.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.49 stmx/util/tcons-set.lisp

Dependency

tcons.lisp (file).

Source

stmx.asd.

Parent Component

util (module).


4.1.50 stmx/util/tcons-tree.lisp

Dependency

tcons.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

copy-ttree (function).


4.1.51 stmx/util/tcons-higher.lisp

Dependency

tcons-alist.lisp (file).

Source

stmx.asd.

Parent Component

util (module).


4.1.52 stmx/util/tvar.lisp

Dependency

container.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface

4.1.53 stmx/util/tcell.lisp

Dependency

container.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

+empty-tcell+ (constant).


4.1.54 stmx/util/tstack.lisp

Dependency

container.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.55 stmx/util/tfifo.lisp

Dependencies
Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.56 stmx/util/tchannel.lisp

Dependencies
Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.57 stmx/util/bheap.lisp

Dependency

container.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.58 stmx/util/gmap.lisp

Dependencies
Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.59 stmx/util/rbmap.lisp

Dependency

gmap.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface

rbmap (class).

Internals

4.1.60 stmx/util/tmap.lisp

Dependency

rbmap.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.61 stmx/util/simple-tvector.lisp

Dependency

print.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.62 stmx/util/ghash-table.lisp

Dependency

print.lisp (file).

Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

4.1.63 stmx/util/thash-table.lisp

Dependencies
Source

stmx.asd.

Parent Component

util (module).

Public Interface
Internals

5 Packages

Packages are listed by definition order.


5.1 stmx.lang

Source

package.lisp.

Use List
  • bordeaux-threads.
  • common-lisp.
Used By List
Public Interface
Internals

5.2 stmx.util

Source

package.lisp.

Use List
Public Interface
Internals

5.3 stmx

Source

package.lisp.

Use List
  • bordeaux-threads.
  • closer-mop.
  • common-lisp.
  • stmx.lang.
Used By List

stmx.util.

Public Interface
Internals

5.4 stmx.asm

Source

package.lisp.

Use List

common-lisp.

Public Interface
Internals

6 Definitions

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


6.1 Public Interface


6.1.1 Constants

Constant: +hw-transaction-started+
Package

stmx.lang.

Source

hw-transactions.lisp.

Constant: +hw-transaction-supported+
Package

stmx.lang.

Source

hw-transactions.lisp.

Constant: +impl-package+

Designator for the SBCL internal package where we look for VOP-related symbols

Package

stmx.asm.

Source

compiler.lisp.

Constant: +transaction-started+

Value returned by (transaction-begin) if the transaction is successfully started. It is an implementation-dependent fixnum, different from all possible transactions abort error codes.

Package

stmx.asm.

Source

x86-32,64-vops.lisp.

Constant: +transaction-user-abort+

Value returned by (transaction-begin) if the transaction was manually aborted by calling (transaction-abort).
It is an implementation-dependent fixnum, different from +transaction-started+ and from all error codes indicating a spontaneous abort.

Package

stmx.asm.

Source

transaction.lisp.

Constant: +unbound-tvar+

Unbound TVARs actually contain this value. Use with care.

Package

stmx.

Source

tvar-fwd.lisp.


6.1.2 Special variables

Special Variable: *current-thread*
Package

stmx.lang.

Source

thread.lisp.

Special Variable: *stmx-version*
Package

stmx.

Source

version.lisp.


6.1.3 Macros

Macro: after-commit (&body body)

Register BODY to be invoked after the current transaction commits.
If BODY signals an error when executed, the error is propagated
to the caller and further code registered with AFTER-COMMIT is not executed, but the transaction remains committed.

WARNING: Code registered with after-commit has a number or restrictions:

1) if BODY signal an error when executed, the error is propagated to the caller, forms registered later with AFTER-COMMIT are not executed,
but the transaction remains committed.

2) BODY is *not* executed inside a transaction: while it is certainly possible to explicitly run an (atomic) block from it, doing so would probably defeat the purpose of AFTER-COMMIT and it may also cause a significant performance penalty.

Package

stmx.

Source

commit.lisp.

Macro: aif (test then &optional else)
Package

stmx.lang.

Source

macro.lisp.

Macro: analyze-struct ((defstruct name-and-options &rest slot-descriptions))

Analyze the slots of a non-transactional struct, so that transactional structs can subclass it. Use this macro to wrap a DEFSTRUCT as follows:
(ANALYZE-STRUCT (DEFSTRUCT {struct-name | (struct-name [options])} slots-description*)

Note: this macro only analyzes the structure definition, does *not* define the structure. See NON-TRANSACTIONAL-STRUCT for that.

Package

stmx.

Source

tstruct.lisp.

Macro: atomic (&rest body)

Main entry point for STMX.

Run BODY in a memory transaction. All changes to transactional memory will be visible to other threads only after BODY returns normally (commits). If BODY signals an error, its effects on transactional memory are rolled back and the error is propagated normally.
Also, no work-in-progress transactional memory will ever be visible to other threads.

A memory transaction can also retry: in such case ATOMIC will abort it, wait until some of the value read by the transaction have changed,
then re-run the transaction from the beginning.

Since STMX transactions do not lock memory, it is possible for different transactions to try to update the same memory (almost) simultaneously.
In such case, the conflict is detected when they try to commit or rollback, and only one conflicting transaction is allowed to commit:
all others are immediately re-run again from the beginning.

For this reason, a transaction SHOULD NOT perform any irreversible operation such as INPUT/OUTPUT: the result would be that I/O is executed multiple times, or executed even when it shouldn’t have!
Irreversible operations SHOULD be performed OUTSIDE transactions,
for example by queueing them into transactional memory that another thread will consume and then, OUTSIDE transactions, actually perform them.

For how to create transactional memory, see TRANSACTIONAL or TVAR.
For another way to run transactions, see also TRANSACTION.
For advanced features inside transactions, see RETRY, ORELSE, NONBLOCKING, BEFORE-COMMIT and AFTER-COMMIT.

For pre-defined transactional classes, see the package STMX.UTIL

Package

stmx.

Source

atomic.lisp.

Macro: atomic-compare-and-swap (place old new)
Package

stmx.lang.

Source

atomic-ops.lisp.

Macro: atomic-decf (place &optional delta)

Atomically decrement PLACE by DELTA. Return _previous_ value of PLACE.

Package

stmx.lang.

Source

atomic-ops.lisp.

Macro: atomic-incf (place &optional delta)

Atomically increment PLACE by DELTA. Return _previous_ value of PLACE.

Package

stmx.lang.

Source

atomic-ops.lisp.

Macro: atomic-pop (place)

Like POP, but atomic. PLACE may be read multiple times before the operation completes – the write does not occur until such time that no other thread modified PLACE between the read and the write.

Works only on places supported by ATOMIC-COMPARE-AND-SWAP.

Package

stmx.lang.

Source

atomic-ops.lisp.

Macro: awhen (test &body body)
Package

stmx.lang.

Source

macro.lisp.

Macro: before-commit (&body body)

Register BODY to be invoked immediately before the current transaction commits. If BODY signals an error when executed, the error is propagated to the caller, further code registered with BEFORE-COMMIT are not executed,
and the transaction rollbacks.

BODY can read and write normally to transactional memory, and in case of conflicts the whole transaction (not only the code registered with before-commit)
is re-executed from the beginning.

WARNING: BODY cannot (retry) - attempts to do so will signal an error. Starting a nested transaction and retrying inside that is acceptable,
as long as the (retry) does not propagate outside BODY.

Package

stmx.

Source

commit.lisp.

Macro: define-constant-once (name value &optional doc)

Same as DEFCONSTANT, but evaluate VALUE only once:
re-executing again the same (DEFINE-CONSTANT-ONCE name ...) has no effects.

Package

stmx.lang.

Source

features-detect.lisp.

Macro: define-global (name value &optional doc)

Define NAME as a global variable, declaring that it will have the same value in all threads, i.e. it will not be special nor dynamically bound.

This is implemented either with a compiler-specific macro (for example SB-EXT:DEFGLOBAL on SBCL), or as DEFVAR if no better implementation is available.

Package

stmx.lang.

Source

features-detect.lisp.

Macro: defprint-object ((obj class &key type identity) &rest body)
Package

stmx.lang.

Source

print.lisp.

Macro: do-fast-vector ((element) fast-vector &body body)
Package

stmx.lang.

Source

fast-vector.lisp.

Macro: do-ghash ((key &optional value index) hash &body body)

Execute BODY on each KEY/VALUE contained in HASH. Return NIL.

Package

stmx.util.

Source

ghash-table.lisp.

Macro: do-gmap ((key &optional value &key from-end) m &body body)

Execute BODY in order on each key/value pair contained in M:
first execute it on the smallest key, then the second smallest... finally execute BODY on the largest key. Return nil.

If :FROM-END is true, BODY will be executed first on the largest key, then on the second largest key... and finally on the smallest key.

Adding or removing keys from M during this call (even from other threads) has undefined consequences. Not even the current key can be removed.

Package

stmx.util.

Source

gmap.lisp.

Macro: do-hash ((key &optional value) hash &body body)

Execute body on each key/value pair contained in hash table

Package

stmx.lang.

Source

hash-table.lisp.

Macro: do-simple-tvector ((element) tvec &body body)

Execute BODY on each ELEMENT contained in simple-tvector TVEC.

Creates an implicit block named NIL, so (return ...) can be used to exit early from the loop with an explicit return value.

Package

stmx.util.

Source

simple-tvector.lisp.

Macro: do-tree ((atom tree &optional result) &body body)

Execute BODY for each atom inside TREE

Package

stmx.lang.

Source

macro.lisp.

Macro: enable-#?-syntax ()
Package

stmx.lang.

Source

features-reader.lisp.

Macro: eval-always (&body body)
Package

stmx.lang.

Source

macro.lisp.

Macro: fast-atomic (&rest body)

Possibly slightly faster variant of ATOMIC.

On systems supporting hardware transactions (as of July 2013, very few systems support them), FAST-ATOMIC and ATOMIC are identical.
On other systems, multiple nested FAST-ATOMIC forms may be slightly faster than multiple nested ATOMIC blocks, at the price of compiling BODY more than once.

Package

stmx.

Source

atomic.lisp.

Macro: fast-vector-pop-macro (fast-vector &optional default)

If FAST-VECTOR is not empty, remove its last element and return it and t as multiple values. Otherwise evaluate DEFAULT and return (values DEFAULT NIL).

Package

stmx.lang.

Source

fast-vector.lisp.

Macro: get-atomic-place (place &optional place-mutex)

Return current value of atomic PLACE.

Package

stmx.lang.

Source

atomic-counter.lisp.

Macro: get-atomic-place-plus-delta (place delta &optional place-mutex)

Return DELTA plus current value of atomic PLACE.

Package

stmx.lang.

Source

atomic-counter.lisp.

Macro: hw-atomic2 ((&key hw-write-version err test-for-running-tx? update-stat) &optional body fallback)

Run BODY in a hardware memory transaction. All changes to transactional memory will be visible to other threads only after BODY returns normally (commits). If BODY signals an error, its effects on transactional memory are rolled back and the error is propagated normally.
Also, no work-in-progress transactional memory will ever be visible to other threads.

If hardware memory transaction aborts for a conflict, rerun it.
If it fails for some other reason, execute FALLBACK.

Package

stmx.

Source

hw-atomic.lisp.

Macro: hw-transaction-abort ()

Abort a hardware memory transaction currently in progress. Causes a rollback of *all* transaction effects, execution resumes at (hw-transaction-begin) by returning abort reason.

Package

stmx.lang.

Source

hw-transactions.lisp.

Macro: hw-transaction-begin ()

Start a hardware memory transaction. Return +hw-transaction-started+ if transaction started successfully, otherwise return abort reason.

Package

stmx.lang.

Source

hw-transactions.lisp.

Macro: hw-transaction-end ()

Try to commit a hardware memory transaction currently in progress. If commit is successful, return normally. Otherwise execution resumes at (hw-transaction-begin) by returning abort reason.

Package

stmx.lang.

Source

hw-transactions.lisp.

Macro: hw-transaction-rerun-may-succeed? (err-code)

If ERR-CODE is the result returned by (HW-TRANSACTION-BEGIN) of an *aborted* transaction, return T if re-running the same transaction has a possibility to succeed,
i.e. if the abort reason was temporary (as for example a conflict with another thread). Return NIL if re-running the same transaction has no possibility to succeed.

Package

stmx.lang.

Source

hw-transactions.lisp.

Macro: hw-transaction-running? ()

Return T if a hardware memory transaction is in progress.

Package

stmx.lang.

Source

hw-transactions.lisp.

Macro: hw-transaction-supported-and-running? ()
Package

stmx.lang.

Source

hw-transactions.lisp.

Macro: hw-transaction-supported? ()

Return T if the CPU supports hardware memory transactions, and there is a compiler extension to use them, otherwise return NIL.

Package

stmx.lang.

Source

hw-transactions.lisp.

Macro: if-bind (var test then &optional else)
Package

stmx.lang.

Source

macro.lisp.

Macro: incf-atomic-place (place &optional delta place-mutex)

Increase atomic PLACE by DELTA and return its new value.

Package

stmx.lang.

Source

atomic-counter.lisp.

Macro: let1 (var value &body body)
Package

stmx.lang.

Source

macro.lisp.

Macro: log.debug (&rest args)
Package

stmx.lang.

Source

macro.lisp.

Macro: log.make-logger (&rest args)
Package

stmx.lang.

Source

macro.lisp.

Macro: log.trace (&rest args)
Package

stmx.lang.

Source

macro.lisp.

Macro: mem-read-barrier (&body before)

Memory read barrier. Execute BEFORE, then put the barrier.

Package

stmx.lang.

Source

atomic-ops.lisp.

Macro: mem-write-barrier (&body before)

Memory write barrier. Execute BEFORE, then put the barrier.

Package

stmx.lang.

Source

atomic-ops.lisp.

Macro: new (class &rest initargs &key &allow-other-keys)
Package

stmx.lang.

Source

macro.lisp.

Macro: non-transactional-struct ((defstruct name-and-options &rest slot-descriptions))

Use this macro to wrap a normal DEFSTRUCT as follows:
(NON-TRANSACTIONAL-STRUCT (DEFSTRUCT {struct-name | (struct-name [options])} slots-description*)

The effect is the same as DEFSTRUCT, plus its slots will be analyzed
so that transactional structs can subclass it

Package

stmx.

Source

tstruct.lisp.

Macro: nonblocking (&body body)

Execute all the forms in BODY in a single nested transaction and:
a) in case of transaction conflicts, re-execute BODY
b) if BODY returns normally, commit and return multiple values:
T followed by the values returned by BODY.
b) if BODY signals an error, rollback and raise such error.
d) if BODY attempts to retry, immediately return NIL without waiting/sleeping.

Can only be used inside an ATOMIC block.

Package

stmx.

Source

orelse.lisp.

Macro: optimize-for-transaction ((defun-or-defmethod name (&rest args) &body body))
Package

stmx.

Source

optimize-for.lisp.

Macro: optimize-for-transaction* ((&key inline body-hwtx body-swtx body-notx) (defun-or-defmethod name (&rest args) &body body))
Package

stmx.

Source

optimize-for.lisp.

Macro: orelse (&body body)

Execute each form in BODY from left to right in separate, nested transactions until one succeeds (i.e. commits) or signals an error.

If a form calls (RETRY) or has a temporary failure (temporary failures as for example conflicts are normally invisible because (ATOMIC ...) re-executes them automatically) advance to the next form and run it instead of retrying the current one.

Returns the value of the transaction that succeeded,
or signals the error raised by the transaction that failed.

Can only be used inside an ATOMIC block.

Package

stmx.

Source

orelse.lisp.

Macro: pop-free-cons^ (place)

Equivalent to POP, but also assumes the CONS at PLACE is no longer used and can be added to free CONS pool.
Removes and returns the first element in PLACE.

Package

stmx.lang.

Source

cons.lisp.

Macro: push^ (value place)

Equivalent to PUSH, but uses CONS pool to speedup allocation. Inserts VALUE as the first element in PLACE.
Return the modified PLACE.

Package

stmx.lang.

Source

cons.lisp.

Macro: save-thread-initial-bindings (&rest syms)
Package

stmx.lang.

Source

thread.lisp.

Macro: set-atomic-place (place value &optional place-mutex)

Set and return value of atomic PLACE.

Package

stmx.lang.

Source

atomic-counter.lisp.

Macro: tpop (place)

Equivalent to POP, but for TCONS transactional cells. Removes and returns the first element in PLACE.

Package

stmx.util.

Source

tcons.lisp.

Macro: tpush (value place)

Equivalent to PUSH, but for TCONS transactional cells. Inserts VALUE as the first element in PLACE. Return the modified PLACE.

Package

stmx.util.

Source

tcons.lisp.

Macro: transaction ((defun-or-defmethod func-name args &body body))

Deprecated. Use ATOMIC instead.

Define FUNC-NAME as a new atomic function or method.
Use this macro to wrap a normal DEFUN or DEFMETHOD as follows: (TRANSACTION (DEFUN function-name (arguments) body))
or
(TRANSACTION (DEFMETHOD function-name (arguments) body))

The effect is the same as DEFUN - or DEFMETHOD - plus:
- the BODY is wrapped inside (atomic ...)

Package

stmx.

Source

sw-atomic.lisp.

Macro: transactional ((defclass-or-defstruct class-or-struct-name &rest direct-superclasses-slots-and-options))

Define CLASS-OR-STRUCT-NAME as a new transactional class or struct.

Use this macro to wrap a normal DEFCLASS as follows: (TRANSACTIONAL (DEFCLASS class-name (superclasses) (slots) [options]))

Or to wrap a normal DEFCLASS as follows:
(TRANSACTIONAL (DEFSTRUCT (class-name (options)) slots))

Package

stmx.

Source

tclass.lisp.

Macro: transactional-class ((defclass class-name direct-superclasses direct-slots &rest class-options))

Define CLASS-NAME as a new transactional class.
Use this macro to wrap a normal DEFCLASS as follows:
(TRANSACTIONAL (DEFCLASS class-name (superclasses) (slots) [options]))

The effect is the same as DEFCLASS, plus:
- by default, slots are transactional memory (implemented by TVARs)
- it inherits also from TRANSACTIONAL-OBJECT
- the metaclass is TRANSACTIONAL-CLASS
- it internally defines a method INITIALIZE-INSTANCE :before, do NOT redefine it

Package

stmx.

Source

tclass.lisp.

Macro: transactional-struct ((defstruct name-and-options &rest slot-descriptions))

Define NAME as a new transactional struct.
Use this macro to wrap a normal DEFSTRUCT as follows:
(TRANSACTIONAL-STRUCT (DEFSTRUCT {struct-name | (struct-name [options])} slots-description*)

The effect is the same as DEFSTRUCT, plus:
- by default, direct slots are transactional memory (implemented by TVARs)

Package

stmx.

Source

tstruct.lisp.

Macro: when-bind (var test &body body)
Package

stmx.lang.

Source

macro.lisp.

Macro: with-gensym (name &body body)
Package

stmx.lang.

Source

macro.lisp.

Macro: with-gensyms ((&rest names) &body body)
Package

stmx.lang.

Source

macro.lisp.

Macro: with-lock ((lock) &body body)

Faster replacement for BORDEAUX-THREADS:WITH-LOCK-HELD.

Package

stmx.lang.

Source

mutex.lisp.


6.1.4 Compiler macros

Compiler Macro: tlast (list &optional n)
Package

stmx.util.

Source

tcons-list.lisp.

Compiler Macro: tlist (&rest list)
Package

stmx.util.

Source

tcons.lisp.

Compiler Macro: tlist* (arg0 &rest args)
Package

stmx.util.

Source

tcons.lisp.


6.1.5 Setf expanders

Setf Expander: (setf $) (var)
Package

stmx.

Source

tvar.lisp.

Reader

$ (function).

Writer

set-$ (function).

Setf Expander: (setf $-slot) (var)
Package

stmx.

Source

tvar-slot.lisp.

Reader

$-slot (function).

Setf Expander: (setf get-ghash) (hash key)
Package

stmx.util.

Source

ghash-table.lisp.

Reader

get-ghash (function).

Writer

set-ghash (function).

Setf Expander: (setf tcar) (cons)

Set VALUE as the first element in a TCONS or non-null TLIST. This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons.lisp.

Reader

tcar (function).

Setf Expander: (setf tcdr) (cons)

Set VALUE as the rest element in a TCONS or non-null TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons.lisp.

Reader

tcdr (function).

Setf Expander: (setf tfirst) (cons)

Set VALUE as the first element in a TCONS or non-null TLIST.

This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons.lisp.

Reader

tfirst (function).

Setf Expander: (setf trest) (cons)

Set VALUE as the rest element in a TCONS or non-null TLIST.

This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons.lisp.

Reader

trest (function).

Setf Expander: (setf tsvref) (tvec index)
Package

stmx.util.

Source

simple-tvector.lisp.

Reader

tsvref (function).

Writer

set-tsvref (function).


6.1.6 Ordinary functions

Function: $ (var)

Get the value from the transactional variable VAR and return it. Return +unbound-tvar+ if VAR is not bound to a value.

Works both inside and outside transactions.
During transactions, it uses transaction log to record the read and to check for any value stored in the log.

Package

stmx.

Source

tvar.lisp.

Setf expander for this function

(setf $).

Function: $-slot (var)

Get the value from the transactional variable VAR and return it. Signal an error if VAR is not bound to a value.

Works both inside and outside transactions.
During transactions, it uses transaction log to record the read and to check for any value stored in the log.

Package

stmx.

Source

tvar-slot.lisp.

Setf expander for this function

(setf $-slot).

Function: add-to-gmap (m &rest keys-and-values)

N-ary version of SET-GMAP and (SETF (GET-GMAP ...) ...): Given a list of alternating keys and values,
add or replace each of them into M. Return M.

Package

stmx.util.

Source

gmap.lisp.

Function: all-features (&rest list)

Return T if all features from LIST are present in *FEATURE-LIST* and have non-NIL value.

Package

stmx.lang.

Source

features.lisp.

Function: assoc-feature (f)

Return (list F VALUE) if F is present in *FEATURE-LIST*

Package

stmx.lang.

Source

features.lisp.

Function: bound-$? (var)

Return true if transactional variable VAR is bound to a value. Works both outside and inside transactions.

During transactions, it uses transaction log to record the read and to check for any value stored in the log.

Package

stmx.

Source

tvar-slot.lisp.

Function: call-after-commit (func &optional log)

Register FUNC function to be invoked after the current transaction commits.

IMPORTANT: See AFTER-COMMIT for what FUNC must not do.

Package

stmx.

Source

commit.lisp.

Function: call-before-commit (func &optional log)

Register FUNC function to be invoked immediately before the current transaction commits.

IMPORTANT: See BEFORE-COMMIT for what FUNC must not do.

Package

stmx.

Source

commit.lisp.

Function: clear-ghash (hash)

Remove all keys and values from HASH. Return HASH.

Package

stmx.util.

Source

ghash-table.lisp.

Function: clear-gmap (m)

Remove all keys and values from M. Return M.

Package

stmx.util.

Source

gmap.lisp.

Function: clear-hash (hash)

Same as (clrhash hash).

Package

stmx.lang.

Source

hash-table.lisp.

Function: clos-compute-class-precedence-list (class-name direct-superclasses-names)
Package

stmx.lang.

Source

class-precedence-list.lisp.

Function: compile-if (flag)
Package

stmx.asm.

Source

compiler.lisp.

Function: compile-if-package (package-name)
Package

stmx.asm.

Source

compiler.lisp.

Function: compile-if-symbol (package-name symbol-name)
Package

stmx.asm.

Source

compiler.lisp.

Function: concat-symbols (&rest things)

Print the things to a string, the convert the string into a symbol interned in current package. Return the symbol

Package

stmx.lang.

Source

macro.lisp.

Function: cons^ (&optional a b)

Get a CONS from free cons pool, otherwise allocate it. Return the CONS.

Package

stmx.lang.

Source

cons.lisp.

Function: copy-gmap (m)

Create and return a copy of binary tree M. Keys and values in M are shallow copied.

Package

stmx.util.

Source

gmap.lisp.

Function: copy-gmap-into (mcopy m)

Fill MCOPY with a copy of gmap M and return MCOPY. Copies all keys and values from M into MCOPY
and removes any other key/value already present in MCOPY.

Package

stmx.util.

Source

gmap.lisp.

Function: copy-hash-table (dst src)

Copy all key/value pairs from hash-table SRC into hash-table DST. Other keys (and their values) present in DST but not in SRC are not modified. Return DST.

Package

stmx.lang.

Source

hash-table.lisp.

Function: copy-talist (talist)

Return a new association list which is EQUAL to TALIST.

Package

stmx.util.

Source

tcons-alist.lisp.

Function: cpuid (eax &optional ecx)
Package

stmx.asm.

Source

cpuid.lisp.

Function: default-feature (f &optional value)

Add feature F and its VALUE into *FEATURE-LIST*, unless F is already present. Return (values T VALUE) if F was actually inserted in *FEATURE-LIST*, otherwise return NIL and the value already present in *FEATURE-LIST*.

Package

stmx.lang.

Source

features.lisp.

Function: default-features (&rest alist)

Set the value of each feature in ALIST, unless the feature is already present in *FEATURE-LIST*. Each element in ALIST must be either
a pair (FEATURE VALUE) or a simple atom FEATURE.
In the latter case, the FEATURE value will default to T.

Package

stmx.lang.

Source

features.lisp.

Function: ensure-thread-initial-binding (sym form)
Package

stmx.lang.

Source

thread.lisp.

Function: ensure-thread-initial-bindings (&rest syms-and-forms)
Package

stmx.lang.

Source

thread.lisp.

Function: fast-vector-capacity (fast-vector)

Return current capacity of FAST-VECTOR.

Package

stmx.lang.

Source

fast-vector.lisp.

Function: fast-vector-clear (fast-vector)

Remove all elements from FAST-VECTOR. Return FAST-VECTOR.

Package

stmx.lang.

Source

fast-vector.lisp.

Function: fast-vector-length (fast-vector)

Return current length of FAST-VECTOR.

Package

stmx.lang.

Source

fast-vector.lisp.

Function: fast-vector-pop (fast-vector &optional default)

If FAST-VECTOR is not empty, remove its last element and return it and t as multiple values. Otherwise return (values DEFAULT NIL).

Package

stmx.lang.

Source

fast-vector.lisp.

Function: fast-vector-push (new-element fast-vector)

If FAST-VECTOR is not full, append NEW-ELEMENT to FAST-VECTOR and return the index of the pushed element.
Otherwise return NIL.

Package

stmx.lang.

Source

fast-vector.lisp.

Function: fast-vector-push-extend (new-element fast-vector)

If FAST-VECTOR is full, resize it. Then append NEW-ELEMENT to FAST-VECTOR and return the index of the pushed element.

Package

stmx.lang.

Source

fast-vector.lisp.

Function: find-symbol* (symbol-name &optional package-name)

Find and return the symbol named SYMBOL-NAME in PACKAGE

Package

stmx.asm.

Source

compiler.lisp.

Function: fixnum/= (x y)

Optimized version of (/= x y) for FIXNUM arguments

Package

stmx.util.

Source

misc.lisp.

Function: fixnum< (x y)

Optimized version of (< x y) for FIXNUM arguments

Package

stmx.util.

Source

misc.lisp.

Function: fixnum= (x y)

Optimized version of (= x y) for FIXNUM arguments

Package

stmx.util.

Source

misc.lisp.

Function: fixnum> (x y)

Optimized version of (> x y) for FIXNUM arguments

Package

stmx.util.

Source

misc.lisp.

Function: free-cons^ (cell)

Add a CONS cell to free cons pool.

Package

stmx.lang.

Source

cons.lisp.

Function: free-list^ (list)

Add a list of CONS cells to free cons pool.

Package

stmx.lang.

Source

cons.lisp.

Function: get-atomic-counter (counter)

Return current value of atomic COUNTER.

Package

stmx.lang.

Source

atomic-counter.lisp.

Function: get-atomic-counter-plus-delta (counter delta)

Return DELTA plus current value of atomic COUNTER.

Package

stmx.lang.

Source

atomic-counter.lisp.

Function: get-feature (f &optional default)

Return value of F in *FEATURE-LIST* and T, or (values DEFAULT NIL) if not present or has NIL value.

Package

stmx.lang.

Source

features.lisp.

Function: get-ghash (hash key &optional default)

If KEY is associated to VALUE in HASH, return (values VALUE t) Otherwise return (values DEFAULT nil).

Package

stmx.util.

Source

ghash-table.lisp.

Setf expander for this function

(setf get-ghash).

Function: get-gmap (m key &optional default)

Find KEY in binary tree M and return its value and T as multiple values. If M does not contain KEY, return (values DEFAULT NIL).

Package

stmx.util.

Source

gmap.lisp.

Function: (setf get-gmap) (m key)

Add KEY to binary tree M if not present, and associate VALUE to KEY in M. Return VALUE.

Package

stmx.util.

Source

gmap.lisp.

Function: get-hash (hash key)

Same as (gethash key hash), only with reversed arguments.

Package

stmx.lang.

Source

hash-table.lisp.

Function: (setf get-hash) (hash key)

Same as (setf (gethash key hash) value), only with reversed key and hash arguments.

Package

stmx.lang.

Source

hash-table.lisp.

Function: ghash-keys (src &optional to-list)

Return a list containing the keys in ghash-table SRC.
If TO-LIST is not nil, it will be appended to the returned list. TO-LIST contents is not destructively modified.

Package

stmx.util.

Source

ghash-table.lisp.

Function: ghash-pairs (src &optional to-alist)

Return an alist containing a (key . value) pair for each entry in ghash-table SRC.
If TO-ALIST is not nil, it will be appended to the returned alist. TO-ALIST contents is not destructively modified.

Package

stmx.util.

Source

ghash-table.lisp.

Function: ghash-table-count (hash)

Return the number of KEY/VALUE entries in ghash-table HASH.

Package

stmx.util.

Source

ghash-table.lisp.

Function: ghash-table-empty? (hash)

Return T if GHASH-TABLE is empty, i.e. if it contains no entries.

Package

stmx.util.

Source

ghash-table.lisp.

Function: ghash-table-hash (hash)

Return the symbol used by ghash-table HASH to hash keys.

Package

stmx.util.

Source

ghash-table.lisp.

Function: ghash-table-test (hash)

Return the symbol used by ghash-table HASH to compare keys.

Package

stmx.util.

Source

ghash-table.lisp.

Function: ghash-values (src &optional to-list)

Return a list containing the values in ghash-table SRC.
If TO-LIST is not nil, it will be appended to the returned list. TO-LIST contents is not destructively modified.

Package

stmx.util.

Source

ghash-table.lisp.

Function: gmap-count (m)

Return number of elements in binary tree M.

Package

stmx.util.

Source

gmap.lisp.

Function: gmap-empty? (m)

Return t if binary tree M is empty, otherwise return nil.

Package

stmx.util.

Source

gmap.lisp.

Function: gmap-keys (m &optional to-list)

Return an ordered list of all keys contained in M.

Package

stmx.util.

Source

gmap.lisp.

Function: gmap-pairs (m &optional to-alist)

Return an ordered list of pairs (key . value) containing all entries in M.

Package

stmx.util.

Source

gmap.lisp.

Function: gmap-pred (m)

Return the predicate symbol used by binary tree M to sort keys.

Package

stmx.util.

Source

gmap.lisp.

Function: gmap-values (m &optional to-list)

Return a list of all values contained in M.
The values are returned in the order given by their keys: first the value associated to the smallest key, and so on.

Package

stmx.util.

Source

gmap.lisp.

Function: hash-table-keys (src &optional to-list)

Return a list containing the keys in hash-table SRC.
If TO-LIST is not nil, it will be appended to the returned list. TO-LIST contents is not destructively modified.

Package

stmx.lang.

Source

hash-table.lisp.

Function: hash-table-pairs (src &optional to-alist)

Return an alist containing a (key . value) pair for each entry in hash-table SRC.
If TO-ALIST is not nil, it will be appended to the returned alist. TO-ALIST contents is not destructively modified.

Package

stmx.lang.

Source

hash-table.lisp.

Function: hash-table-values (src &optional to-list)

Return a list containing the values in hash-table SRC.
If TO-LIST is not nil, it will be appended to the returned list. TO-LIST contents is not destructively modified.

Package

stmx.lang.

Source

hash-table.lisp.

Function: incf-atomic-counter (counter &optional delta)

Increase atomic COUNTER by DELTA and return its new value.

Package

stmx.lang.

Source

atomic-counter.lisp.

Function: lock-elision-supported-p ()

Test for HLE, i.e. hardware lock elision.
HLE is supported if (cpuid 7) returns ebx with bit 4 set. If a processor does not support HLE, it will ignore the assembler instruction prefixes XACQUIRE and XRELEASE.

Package

stmx.asm.

Source

cpuid.lisp.

Function: make-atomic-counter ()

Create and return a new ATOMIC-COUNTER.

Package

stmx.lang.

Source

atomic-counter.lisp.

Function: make-fast-vector (initial-capacity &key element-type initial-element)

Create and return an initially empty FAST-VECTOR with specified maximum length.

Note: initial-element MUST be compatible with type element-type,
i.e. (typep initial-element element-type) must return true.

Package

stmx.lang.

Source

fast-vector.lisp.

Function: make-mutex ()

Create and return a MUTEX.

Package

stmx.lang.

Source

mutex.lisp.

Function: make-tlist (size &key initial-element)

Constructs a tlist with SIZE elements each set to INITIAL-ELEMENT

Package

stmx.util.

Source

tcons.lisp.

Function: map-ghash (hash func)

Invoke FUNC on each key/value pair contained in HASH. Return NIL.
FUNC must be a function accepting two arguments: key and value.

Adding or removing keys from HASH during this call (even from other threads) has undefined consequences. Not even the current key can be removed.

Package

stmx.util.

Source

ghash-table.lisp.

Function: map-gmap (m func)

Invoke FUNC in order on each key/value pair contained in M:
first invoke it on the smallest key, then the second smallest... finally invoke FUNC on the largest key. Return nil.

FUNC must be a function accepting two arguments: key and value.

Adding or removing keys from M during this call (even from other threads) has undefined consequences. Not even the current key can be removed.

Package

stmx.util.

Source

gmap.lisp.

Function: max-gmap (m)

Return the largest key in M, its value, and t as multiple values, or (values nil nil nil) if M is empty

Package

stmx.util.

Source

gmap.lisp.

Function: merge-hash-tables (dst src)

Copy hash-table SRC into hash-table DST.

Return t if SRC and DST are compatible,
i.e. if they contain eq values for the keys common to both, otherwise return nil.
(in the latter case, the merge will not be completed).

Package

stmx.lang.

Source

hash-table.lisp.

Function: min-gmap (m)

Return the smallest key in M, its value, and t as multiple values, or (values nil nil nil) if M is empty.

Package

stmx.util.

Source

gmap.lisp.

Function: mutex-is-free? (mutex)

Return T if MUTEX is free. Return NIL if MUTEX
is currently locked by current thread or some other thread.

Package

stmx.lang.

Source

mutex.lisp.

Function: mutex-is-own-or-free? (mutex)

Return T if MUTEX is free or locked by current thread. Return NIL if MUTEX is currently locked by some other thread.

Package

stmx.lang.

Source

mutex.lisp.

Function: mutex-is-own? (mutex)

Return T if MUTEX is locked by current thread.

Package

stmx.lang.

Source

mutex.lisp.

Reader: mutex-owner (instance)
Writer: (setf mutex-owner) (instance)
Package

stmx.lang.

Source

mutex.lisp.

Target Slot

mutex-owner.

Function: release-mutex (mutex)

Release MUTEX. Return NIL. Consequences are undefined if MUTEX is locked by another thread or is already unlocked.

Package

stmx.lang.

Source

mutex.lisp.

Function: rem-ghash (hash key)

Remove KEY from HASH.
Return T if KEY was present in HASH, otherwise return NIL.

Package

stmx.util.

Source

ghash-table.lisp.

Function: rem-gmap (m key)

Find and remove KEY and its associated value from binary tree M. Return t if KEY was removed, nil if not found.

Package

stmx.util.

Source

gmap.lisp.

Function: rem-hash (hash key)

Same as (remhash key hash), only with reversed arguments.

Package

stmx.lang.

Source

hash-table.lisp.

Function: remove-from-gmap (m &rest keys)

N-ary version of REM-GMAP:
remove a list of keys from M. Return M.

Package

stmx.util.

Source

gmap.lisp.

Function: retry ()

Abort the current transaction and re-run it again from the beginning.

Before re-executing, the transaction will wait on all variables that it read until at least one of them changes.

Package

stmx.

Source

classes.lisp.

Function: run-atomic (tx)

Function equivalent of the ATOMIC macro.

Run the function TX inside a memory transaction.
If the transaction is invalid (conflicts) re-run TX immediately, ignoring any error it may signal.

Otherwise, commit if TX returns normally, or rollback if it signals an error.

Finally, if TX called (retry), re-run it after at least some of the transactional memory it read has changed.

Package

stmx.

Source

atomic.lisp.

Function: run-orelse (&rest funcs)

Function variant of ‘orelse’. Execute the functions in FUNCS list
one by one from left to right in separate, nested transactions until one succeeds (i.e. commits) or signals an error.

If a nested transaction is invalid or wants to retry, run the next one.

Returns the value of the transaction that succeeded,
or signals the error raised by the transaction that failed.

Can only be used inside an ATOMIC block.

Package

stmx.

Source

orelse.lisp.

Function: set-atomic-counter (counter value)

Set and return value of atomic COUNTER.

Package

stmx.lang.

Source

atomic-counter.lisp.

Function: set-feature (f &optional value)

Set feature F to VALUE, even if F is already present in *FEATURE-LIST*. Return VALUE.

Package

stmx.lang.

Source

features.lisp.

Function: set-features (&rest plist)

Set the value of each feature in PLIST, even if the feature is already present in *FEATURE-LIST*. Each element in PLIST must be either
a pair (FEATURE VALUE) or a simple atom FEATURE.
In the latter case, the FEATURE value will default to T.

Package

stmx.lang.

Source

features.lisp.

Function: set-ghash (hash key value)

Add KEY to HASH, associating it to VALUE. Return VALUE.

Package

stmx.util.

Source

ghash-table.lisp.

Setf expanders to this function

(setf get-ghash).

Function: set-gmap (m key value)

Add KEY to binary tree M if not present, and associate KEY to VALUE in M. Return VALUE.

Package

stmx.util.

Source

gmap.lisp.

Function: set-hash (hash key value)

Shortcut for (setf (gethash key hash) value)

Package

stmx.lang.

Source

hash-table.lisp.

Function: simple-tvector (length &key element-type initial-element initial-contents)

Create and return a new SIMPLE-TVECTOR.

Package

stmx.util.

Source

simple-tvector.lisp.

Function: simple-tvector-length (tvec)

Return the length of simple-tvector TVEC.

Package

stmx.util.

Source

simple-tvector.lisp.

Function: start-multithreading ()
Package

stmx.lang.

Source

thread.lisp.

Function: start-thread (function &key name initial-bindings)
Package

stmx.lang.

Source

thread.lisp.

Function: stringify (&rest things)

Print the things to a string and return it

Package

stmx.lang.

Source

macro.lisp.

Function: sxhash-equalp (x)

Variant of SXHASH designed for EQUALP tests, i.e.
(equalp x y) implies (= (sxhash-equalp x) (sxhash-equalp y)).
A common use is for ghash-tables and thash-tables that use :test ’equalp

Package

stmx.util.

Source

misc.lisp.

Function: symbol-name* (symbol-name)
Package

stmx.asm.

Source

compiler.lisp.

Function: tacons (key datum talist)

Construct a new talist by adding the pair (KEY . DATUM) to TALIST.

Package

stmx.util.

Source

tcons-alist.lisp.

Function: tassoc (item talist &key key test test-not)

Return the tcons in TALIST whose tcar is equal (by a given test or EQL) to the ITEM.

Package

stmx.util.

Source

tcons-alist.lisp.

Function: tatom (object)

Return NIL if OBJECT is a TCONS, and T otherwise.

Package

stmx.util.

Source

tcons.lisp.

Function: tcaaaar (tlist)

Return the CAR of the CAAAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcaaaar) (tlist)

Set the CAR of the CAAAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcaaadr (tlist)

Return the CAR of the CAADR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcaaadr) (tlist)

Set the CAR of the CAADR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcaaar (tlist)

Return the CAR of the CAAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcaaar) (tlist)

Set the CAR of the CAAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcaadar (tlist)

Return the CAR of the CADAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcaadar) (tlist)

Set the CAR of the CADAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcaaddr (tlist)

Return the CAR of the CADDR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcaaddr) (tlist)

Set the CAR of the CADDR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcaadr (tlist)

Return the CAR of the CADR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcaadr) (tlist)

Set the CAR of the CADR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcaar (tlist)

Return the CAR of the CAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcaar) (tlist)

Set the CAR of the CAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcadaar (tlist)

Return the CAR of the CDAAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcadaar) (tlist)

Set the CAR of the CDAAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcadadr (tlist)

Return the CAR of the CDADR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcadadr) (tlist)

Set the CAR of the CDADR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcadar (tlist)

Return the CAR of the CDAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcadar) (tlist)

Set the CAR of the CDAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcaddar (tlist)

Return the CAR of the CDDAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcaddar) (tlist)

Set the CAR of the CDDAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcaddr (tlist)

Return the CAR of the CDDR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcaddr) (tlist)

Set the CAR of the CDDR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcadr (tlist)

Return the CAR of the CDR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcadr) (tlist)

Set the CAR of the CDR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcar (list)

Return the 1st object in a TLIST.

Package

stmx.util.

Source

tcons.lisp.

Setf expander for this function

(setf tcar).

Function: tcdaaar (tlist)

Return the CDR of the CAAAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcdaaar) (tlist)

Set the CDR of the CAAAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcdaadr (tlist)

Return the CDR of the CAADR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcdaadr) (tlist)

Set the CDR of the CAADR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcdaar (tlist)

Return the CDR of the CAAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcdaar) (tlist)

Set the CDR of the CAAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcdadar (tlist)

Return the CDR of the CADAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcdadar) (tlist)

Set the CDR of the CADAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcdaddr (tlist)

Return the CDR of the CADDR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcdaddr) (tlist)

Set the CDR of the CADDR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcdadr (tlist)

Return the CDR of the CADR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcdadr) (tlist)

Set the CDR of the CADR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcdar (tlist)

Return the CDR of the CAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcdar) (tlist)

Set the CDR of the CAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcddaar (tlist)

Return the CDR of the CDAAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcddaar) (tlist)

Set the CDR of the CDAAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcddadr (tlist)

Return the CDR of the CDADR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcddadr) (tlist)

Set the CDR of the CDADR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcddar (tlist)

Return the CDR of the CDAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcddar) (tlist)

Set the CDR of the CDAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcdddar (tlist)

Return the CDR of the CDDAR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcdddar) (tlist)

Set the CDR of the CDDAR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcdddr (tlist)

Return the CDR of the CDDR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcdddr) (tlist)

Set the CDR of the CDDR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcddr (tlist)

Return the CDR of the CDR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcddr) (tlist)

Set the CDR of the CDR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcdr (list)

Return all but the first object in a TLIST.

Package

stmx.util.

Source

tcons.lisp.

Setf expander for this function

(setf tcdr).

Function: tcell (&optional value)

Create and return a new TCELL.

Package

stmx.util.

Source

tcell.lisp.

Function: tcons (first rest)

Create and return a new TCONS.

Package

stmx.util.

Source

tcons.lisp.

Function: tconsp (object)
Package

stmx.util.

Source

tcons.lisp.

Function: teighth (tlist)

Return the 8th object in a TLIST or NIL if there is no 8th object.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf teighth) (tlist)

Set the 8th object in a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tendp (object)

This is the recommended way to test for the end of a proper TLIST. It returns true if OBJECT is NIL, false if OBJECT is a TCONS, and an error for any other type of OBJECT.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tfifo ()
Package

stmx.util.

Source

tfifo.lisp.

Function: tfifth (tlist)

Return the 5th object in a TLIST or NIL if there is no 5th object.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tfifth) (tlist)

Set the 5th object in a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tfirst (tlist)

Return the first element in a TCONS or TLIST.

Package

stmx.util.

Source

tcons.lisp.

Setf expander for this function

(setf tfirst).

Function: tfourth (tlist)

Return the 4th object in a TLIST or NIL if there is no 4th object.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tfourth) (tlist)

Set the 4th object in a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tlast (list &optional n)

Return the last N conses (not the last element!) of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tlist (&rest list)

Create and return a new TLIST, whose cells are TCONS.

Package

stmx.util.

Source

tcons.lisp.

Function: tlist* (arg0 &rest args)

Return a TLIST of the arguments with last TCONS a dotted pair.

Package

stmx.util.

Source

tcons.lisp.

Function: tlist-length (tlist)

Return the length of the given TLIST, or NIL if the TLIST is circular.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tninth (tlist)

Return the 9th object in a TLIST or NIL if there is no 9th object.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tninth) (tlist)

Set the 9th object in a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tnth (n tlist)

Return the Nth object in a TLIST where the TCAR is the zero-th element.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tnth) (n tlist)

Set the Nth element of TLIST to NEWVAL.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tnthcdr (n tlist)

Performs the TCDR function N times on a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tpairlis (keys data &optional talist)

Construct an association list from KEYS and DATA (adding to TALIST).

Package

stmx.util.

Source

tcons-alist.lisp.

Function: transaction-abort ()

Voluntarily abort a hardware memory transaction
with an error-code equal to +transaction-user-abort+.

If a transaction is in progress, TRANSACTION-ABORT does not return normally: execution is resumed at the instruction immediately after the outermost TRANSACTION-BEGIN.

If called without an active transaction, TRANSACTION-ABORT returns normally with an implementation-dependent value.

Package

stmx.asm.

Source

transaction.lisp.

Function: transaction-begin ()

Start a hardware memory transaction.
Return +transaction-started+ if transaction started successfully, otherwise return code of the error that caused the transaction to abort.

Invoking TRANSACTION-BEGIN while there is already a running hardware memory transaction has implementation-dependent effects.

Package

stmx.asm.

Source

transaction.lisp.

Function: transaction-end ()

Commit a hardware memory transaction.
Return normally (with an implementation-dependent value) if commit is successful, otherwise abort the transaction.

In case the transaction is aborted, all effects of code between TRANSACTION-BEGIN and TRANSACTION-END are rolled back (undone):
execution resumes at the instruction immediately after TRANSACTION-BEGIN,
in such a way that TRANSACTION-BEGIN will appear to have returned
a non-zero error code (that describes the abort reason).

Invoking TRANSACTION-END without a running hardware memory transaction
has undefined consequences.

Package

stmx.asm.

Source

transaction.lisp.

Function: transaction-rerun-may-succeed-p (err-code)

If ERR-CODE is the result returned by (TRANSACTION-BEGIN) of an *aborted* transaction, return T if re-running the same transaction has a possibility to succeed,
i.e. if the abort reason was temporary (as for example a conflict with another thread). Return NIL if re-running the same transaction has no possibility to succeed.

Package

stmx.asm.

Source

transaction.lisp.

Function: transaction-running-p ()

Return T if a hardware memory transaction is currently in progress, otherwise return NIL.

Package

stmx.asm.

Source

transaction.lisp.

Function: transaction-supported-p ()

Test for RTM, i.e. hardware memory transactions.
RTM is supported if (cpuid 7) returns ebx with bit 11 set. If a processor does not support HLE, trying to execute the assembler instructions XBEGIN, XEND, XABORT and XTEST will generate faults.

Package

stmx.asm.

Source

cpuid.lisp.

Function: transaction? ()

Return true if inside a software or hardware transaction.

Package

stmx.

Source

classes.lisp.

Function: trassoc (item talist &key key test test-not)

Return the cons in TALIST whose tcdr is equal (by a given test or EQL) to the ITEM.

Package

stmx.util.

Source

tcons-alist.lisp.

Function: trest (tlist)

Return the rest element in a TCONS or TLIST.

Package

stmx.util.

Source

tcons.lisp.

Setf expander for this function

(setf trest).

Function: try-acquire-mutex (mutex)

Try to acquire MUTEX. Return T if successful, or NIL if MUTEX was already locked.

Package

stmx.lang.

Source

mutex.lisp.

Function: tsecond (tlist)

Return the 2nd object in a TLIST or NIL if there is no 2nd object.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tsecond) (tlist)

Set the 2nd object in a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tseventh (tlist)

Return the 7th object in a TLIST or NIL if there is no 7th object.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tseventh) (tlist)

Set the 7th object in a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tsixth (tlist)

Return the 6th object in a TLIST or NIL if there is no 6th object.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tsixth) (tlist)

Set the 6th object in a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tstack ()

Create and return a new TSTACK.

Package

stmx.util.

Source

tstack.lisp.

Function: tsvref (tvec index)

Return the INDEX-th element of simple-tvector TVEC. Works both inside and outside transactions

Package

stmx.util.

Source

simple-tvector.lisp.

Setf expander for this function

(setf tsvref).

Function: ttenth (tlist)

Return the 10th object in a TLIST or NIL if there is no 10th object.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf ttenth) (tlist)

Set the 10th object in a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tthird (tlist)

Return the 3rd object in a TLIST or NIL if there is no 3rd object.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tthird) (tlist)

Set the 3rd object in a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: ttree-equal (x y &key test test-not)

Return T if X and Y are isomorphic TLIST trees with identical leaves.

Package

stmx.util.

Source

tcons-tree.lisp.

Function: ttree-equal-test (x y test)
Package

stmx.util.

Source

tcons-tree.lisp.

Function: ttree-equal-test-not (x y test-not)
Package

stmx.util.

Source

tcons-tree.lisp.

Function: tvar (&optional value)
Package

stmx.

Source

tvar.lisp.

Function: unbind-$ (var)

Unbind the value inside transactional variable VAR.
Works both outside and inside transactions.

During transactions, it uses transaction log to record the ’unbound’ value.

Package

stmx.

Source

tvar-slot.lisp.

Function: wait4-thread (th)
Package

stmx.lang.

Source

thread.lisp.

Function: ~ (obj)
Package

stmx.lang.

Source

print.lisp.

Function: (setf ~) (obj)
Package

stmx.lang.

Source

print.lisp.


6.1.7 Generic functions

Generic Function: empty! (place)

Remove all values contained in PLACE. Return PLACE.

Package

stmx.util.

Source

container.lisp.

Methods
Method: empty! ((q bheap))

Remove all values from bheap Q. Return Q.

Source

bheap.lisp.

Method: empty! ((p tport))
Source

tchannel.lisp.

Method: empty! ((f tfifo))
Source

tfifo.lisp.

Method: empty! ((s tstack))
Source

tstack.lisp.

Method: empty! ((cell tcell))

Remove value from CELL. Return CELL.

Source

tcell.lisp.

Method: empty! ((var tvar))

Remove value from tvar.

Source

tvar.lisp.

Generic Function: empty? (place)

Return nil if PLACE contains at least one value, otherwise return t.

Package

stmx.util.

Source

container.lisp.

Methods
Method: empty? ((q bheap))

Return t if bheap Q is empty.

Source

bheap.lisp.

Method: empty? ((p tport))
Source

tchannel.lisp.

Method: empty? ((c tchannel))

Tchannels are write-only: it is never possible to read values from them, so assume they are always empty and return t.

Source

tchannel.lisp.

Method: empty? ((f tfifo))
Source

tfifo.lisp.

Method: empty? ((s tstack))
Source

tstack.lisp.

Method: empty? ((cell tcell))
Source

tcell.lisp.

Method: empty? ((var tvar))
Source

tvar.lisp.

Generic Function: full? (place)

Return t if PLACE cannot contain more values, otherwise return nil.

Package

stmx.util.

Source

container.lisp.

Methods
Method: full? ((q bheap))

A bheap is never full, so this method always returns nil.

Source

bheap.lisp.

Method: full? ((p tport))

Tports are read-only: it is never possible to store values in them, so assume they are always full and return t.

Source

tchannel.lisp.

Method: full? ((c tchannel))

Tchannels can contain unlimited values: they are never full, so always return nil.

Source

tchannel.lisp.

Method: full? ((f tfifo))

A tfifo is never full, so this method always returns nil.

Source

tfifo.lisp.

Method: full? ((s tstack))

A tstack is never full, so this method always returns nil.

Source

tstack.lisp.

Method: full? (place)

Default implementation: assumes that PLACE can contain only one value.

Generic Function: id-of (obj)
Package

stmx.lang.

Source

print.lisp.

Methods
Method: id-of ((log tlog))
Source

classes.lisp.

Method: id-of ((var tvar))
Source

tvar-fwd.lisp.

Method: id-of (obj)
Generic Function: (setf id-of) (obj)
Package

stmx.lang.

Source

print.lisp.

Methods
Method: (setf id-of) (obj)
Generic Function: peek (place &optional default)

Return one value stored in PLACE without removing it, and t as multiple values. If PLACE contains no values, return (values DEFAULT nil).

Package

stmx.util.

Source

container.lisp.

Methods
Method: peek ((q bheap) &optional default)

Return the first value in bheap Q without removing it, and t as multiple values. Return (values DEFAULT nil) if Q contains no values.

Source

bheap.lisp.

Method: peek ((p tport) &optional default)

Return the first value in tport P without removing it, and t as multiple values. Return (values DEFAULT nil) if P contains no value.

Source

tchannel.lisp.

Method: peek ((f tfifo) &optional default)

Return the first value in tfifo F without removing it, and t as multiple values. Return (values DEFAULT nil) if F contains no value.

Source

tfifo.lisp.

Method: peek ((s tstack) &optional default)

Return the first value in tstack S without removing it, and t as multiple values. Return (values DEFAULT nil) if S contains no values.

Source

tstack.lisp.

Method: peek ((cell tcell) &optional default)
Source

tcell.lisp.

Method: peek ((var tvar) &optional default)
Source

tvar.lisp.

Generic Function: put (place value)

Wait until PLACE can contain more values, then store VALUE in it and return VALUE.

Package

stmx.util.

Source

container.lisp.

Methods
Method: put ((q bheap) value)

Store VALUE in bheap Q. Return VALUE.

Source

bheap.lisp.

Method: put ((c tchannel) value)

Append VALUE as last element in tchannel C and return VALUE.
Since tchannel can contain unlimited values, this method never blocks.

Source

tchannel.lisp.

Method: put ((f tfifo) value)

Append VALUE as last element in tfifo F and return VALUE.
Since tfifo can contain unlimited values, this method never blocks.

Source

tfifo.lisp.

Method: put ((s tstack) value)

Insert VALUE as first element in tstack S and return VALUE. Since tstack can contain unlimited values, this method never blocks.

Source

tstack.lisp.

Method: put ((cell tcell) value)
Source

tcell.lisp.

Method: put ((var tvar) value)
Source

tvar.lisp.

Generic Function: take (place)

Wait until PLACE contains at least one value, then remove and return one value.

Package

stmx.util.

Source

container.lisp.

Methods
Method: take ((p tport))

Wait until tport P contains at least one value, then remove and return the first value.

Source

tchannel.lisp.

Method: take ((f tfifo))

Wait until tfifo F contains at least one value, then remove and return the first value.

Source

tfifo.lisp.

Method: take ((s tstack))

Wait until tstack S contains at least one value, then remove and return the first value.

Source

tstack.lisp.

Method: take ((cell tcell))
Source

tcell.lisp.

Method: take ((var tvar))
Source

tvar.lisp.

Generic Function: try-put (place value)

If PLACE can contain more values, store VALUE it and return t and VALUE as multiple values. Otherwise return (values nil nil)

Package

stmx.util.

Source

container.lisp.

Methods
Method: try-put ((q bheap) value)

Store VALUE in bheap Q. Return t and VALUE This method never fails.

Source

bheap.lisp.

Method: try-put ((c tchannel) value)

Append VALUE to tchannel C and return (values t VALUE).
Since tchannel can contain unlimited values, this method never fails.

Source

tchannel.lisp.

Method: try-put ((f tfifo) value)

Append VALUE as last element in tfifo F and return (values t VALUE). Since tfifo can contain unlimited values, this method never fails.

Source

tfifo.lisp.

Method: try-put ((s tstack) value)

Append VALUE to tstack S and return (values t VALUE).
Since fifo can contain unlimited values, this method never fails.

Source

tstack.lisp.

Method: try-put ((cell tcell) value)

hand-made, nonblocking version of (put place) for tcells. less general but approx. 3 times faster (on SBCL 1.0.57.0.debian, Linux amd64) than the unspecialized (try-put place) which calls (atomic (nonblocking (put place value)))

Source

tcell.lisp.

Method: try-put ((var tvar) value)

hand-made, nonblocking version of (put place) for TVARs.
Less general but approx. 3 times faster (on SBCL 1.0.57.0.debian, Linux amd64) than the unspecialized (try-put place) which calls (atomic (nonblocking (put place value)))

Source

tvar.lisp.

Method: try-put (place value)

this method shows a general technique to convert a blocking, atomic operation into a nonblocking, atomic one: simply wrap it in (atomic (nonblocking ...))

Generic Function: try-take (place)

If PLACE contains at least one value, remove one value and return t and it as multiple values. Otherwise return (values nil nil)

Package

stmx.util.

Source

container.lisp.

Methods
Method: try-take ((q bheap))

If bheap S contains at least one value, remove the first value and return t and the first value as multiple values. Otherwise return (values nil nil)

Source

bheap.lisp.

Method: try-take ((p tport))

If tport P contains at least one value, remove the first value and return t and the first value as multiple values. Otherwise return (values nil nil)

Source

tchannel.lisp.

Method: try-take ((f tfifo))

If tfifo F contains at least one value, remove the first value and return t and the first value as multiple values. Otherwise return (values nil nil)

Source

tfifo.lisp.

Method: try-take ((s tstack))

If tstack S contains at least one value, remove the first value and return t and the first value as multiple values. Otherwise return (values nil nil)

Source

tstack.lisp.

Method: try-take ((cell tcell))

hand-made, nonblocking version of (take place) for cells. less general but approx. 3 times faster (on SBCL 1.0.57.0.debian, Linux amd64) than the unspecialized (try-take place) which calls (atomic (nonblocking (take place)))

Source

tcell.lisp.

Method: try-take ((var tvar))

hand-made, nonblocking version of (take place) for TVARs. Less general but approx. 3 times faster (on SBCL 1.0.57.0.debian, Linux amd64) than the unspecialized (try-take place) which calls (atomic (nonblocking (take place)))

Source

tvar.lisp.

Method: try-take (place)

this method shows a general technique to convert a blocking, atomic operation into a nonblocking, atomic one: simply wrap it in (atomic (nonblocking ...))


6.1.8 Standalone methods

Method: compute-effective-slot-definition ((class transactional-class) slot-name direct-slots)

Compose DIRECT-SLOTS coming from CLASS and all is superclasses into a single EFFECTIVE-SLOT.

If more than one transactional-direct-slot with the same name is present,
ensure that all of them have the same :transactional flag value (all T or all NIL), otherwise signal an error.

Package

sb-mop.

Source

tclass.lisp.

Method: direct-slot-definition-class ((class transactional-class) &rest initargs)
Package

sb-mop.

Source

tclass.lisp.

Method: effective-slot-definition-class ((class transactional-class) &rest initargs)
Package

sb-mop.

Source

tclass.lisp.

Method: initialize-instance :after ((f tfifo) &key &allow-other-keys)

Initialize tfifo F.

Source

tfifo.lisp.

Method: initialize-instance :before ((obj-0 tfifo) &key &allow-other-keys)

Put a TVAR into every transactional direct slot of TFIFO *before* the normal slots initialization.

Source

tfifo.lisp.

Method: initialize-instance :before ((obj-6 tchannel) &key &allow-other-keys)

Put a TVAR into every transactional direct slot of TCHANNEL *before* the normal slots initialization.

Source

tchannel.lisp.

Method: initialize-instance :before ((obj-0 tmap) &key &allow-other-keys)

Put a TVAR into every transactional direct slot of TMAP *before* the normal slots initialization.

Source

tmap.lisp.

Method: initialize-instance :after ((hash thash-table) &rest other-keys)
Source

thash-table.lisp.

Method: initialize-instance :before ((obj-0 thash-table) &key &allow-other-keys)

Put a TVAR into every transactional direct slot of THASH-TABLE *before* the normal slots initialization.

Source

thash-table.lisp.

Method: initialize-instance :after ((hash ghash-table) &rest other-keys &key initial-capacity)
Source

ghash-table.lisp.

Method: initialize-instance :after ((m gmap) &key &allow-other-keys)
Source

gmap.lisp.

Method: initialize-instance :before ((obj-0 tstack) &key &allow-other-keys)

Put a TVAR into every transactional direct slot of TSTACK *before* the normal slots initialization.

Source

tstack.lisp.

Method: initialize-instance :before ((obj-6 tcell) &key &allow-other-keys)

Put a TVAR into every transactional direct slot of TCELL *before* the normal slots initialization.

Source

tcell.lisp.

Method: initialize-instance :after ((p tport) &key &allow-other-keys)

Initialize the reading tport P for a multicast tchannel.

Source

tchannel.lisp.

Method: initialize-instance :before ((obj-2 tport) &key &allow-other-keys)

Put a TVAR into every transactional direct slot of TPORT *before* the normal slots initialization.

Source

tchannel.lisp.

Method: initialize-instance :after ((q bheap) &key &allow-other-keys)

Initialize bheap Q.

Source

bheap.lisp.

Method: initialize-instance :before ((obj-0 thash-pair) &key &allow-other-keys)

Put a TVAR into every transactional direct slot of THASH-PAIR *before* the normal slots initialization.

Source

thash-table.lisp.

Method: initialize-instance :before ((obj-0 tnode) &key &allow-other-keys)

Put a TVAR into every transactional direct slot of TNODE *before* the normal slots initialization.

Source

tmap.lisp.

Method: make-load-form ((obj gv156) &optional environment)
Source

global-clock.lisp.

Method: print-object ((obj tfifo) stream-0)
Source

tfifo.lisp.

Method: print-object ((obj ghash-table) stream-0)
Source

ghash-table.lisp.

Method: print-object ((obj gmap) stream-0)
Source

gmap.lisp.

Method: print-object ((obj tstack) stream-0)
Source

tstack.lisp.

Method: print-object ((obj tcell) stream-0)
Source

tcell.lisp.

Method: print-object ((obj tcons) stream-0)
Source

tcons.lisp.

Method: print-object ((q bheap) stream-0)
Source

bheap.lisp.

Method: print-object ((obj ghash-pair) stream-0)
Source

ghash-table.lisp.

Method: print-object ((var tvar) stream-0)
Source

tvar.lisp.

Method: print-object ((obj txpair) stream)
Source

txhash.lisp.

Method: print-object ((obj tlog) stream-0)
Source

tlog.lisp.

Method: slot-boundp-using-class ((class transactional-class) instance (slot transactional-effective-slot))
Package

sb-mop.

Source

tslot.lisp.

Method: slot-makunbound-using-class ((class transactional-class) instance (slot transactional-effective-slot))
Package

sb-mop.

Source

tslot.lisp.

Method: (setf slot-value-using-class) ((class transactional-class) instance (slot transactional-effective-slot))
Package

sb-mop.

Source

tslot.lisp.

Method: slot-value-using-class ((class transactional-class) instance (slot transactional-effective-slot))
Package

sb-mop.

Source

tslot.lisp.

Method: update-instance-for-redefined-class :before ((instance transactional-object) added-slots discarded-slots property-list &key &allow-other-keys)

Put TVARs into all newly-added transactional slots of INSTANCE

Source

tslot.lisp.

Method: validate-superclass ((class transactional-class) (superclass standard-class))
Package

sb-mop.

Source

tclass.lisp.


6.1.9 Structures

Structure: atomic-counter
Package

stmx.lang.

Source

atomic-counter.lisp.

Direct superclasses

structure-object.

Direct subclasses

gv156.

Direct slots
Slot: version
Type

stmx.lang:atomic-counter-slot-type

Initform

0

Readers

atomic-counter-version.

Writers

(setf atomic-counter-version).

Structure: fast-vector
Package

stmx.lang.

Source

fast-vector.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: len
Type

fixnum

Initform

0

Readers

fast-vector-len.

Writers

(setf fast-vector-len).

Slot: vec
Type

simple-vector

Initform

stmx.lang::+empty-vector+

Readers

fast-vector-vec.

Writers

(setf fast-vector-vec).

Slot: initial-element
Initform

0

Readers

fast-vector-initial-element.

Writers

(setf fast-vector-initial-element).

Structure: mutex
Package

stmx.lang.

Source

mutex.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: mutex-owner
Type

stmx.lang::atomic-t

Readers

mutex-owner.

Writers

(setf mutex-owner).

Structure: tcons

Transactional cell holding two values. It is the STM equivalent of CONS cells.
To use TCONS cells, prepend T to the name of most list-manipulating functions. Examples: (CONS a b) -> (TCONS a b)
(LIST ...) -> (TLIST ...)
(FIRST c) -> (TFIRST c)
(REST c) -> (TREST c) and so on

Package

stmx.util.

Source

tcons.lisp.

Direct superclasses

structure-object.

Direct methods

print-object.

Direct slots
Slot: first
Package

common-lisp.

Type

(stmx:transactional t)

Initform

(stmx::tstruct-slot-initialize (quote stmx.util:tcons) (quote first) (quote nil))

Readers

%stmx-impl/tstruct/tcons-first.

Writers

(setf %stmx-impl/tstruct/tcons-first).

Slot: rest
Package

common-lisp.

Type

(stmx:transactional t)

Initform

(stmx::tstruct-slot-initialize (quote stmx.util:tcons) (quote rest) (quote nil))

Readers

%stmx-impl/tstruct/tcons-rest.

Writers

(setf %stmx-impl/tstruct/tcons-rest).

Structure: tvar

a transactional variable (tvar) is the smallest unit of transactional memory. it contains a single value that can be read or written during a transaction using ($-slot var) and (setf ($-slot var) value).

tvars are seldom used directly, since transactional objects (tobjs) wrap them with a more convenient interface: you can read and write normally the slots of a transactional object (with slot-value, accessors ...), and behind
the scenes the slots will be stored in transactional memory implemented by tvars.

Package

stmx.

Source

tvar-fwd.lisp.

Direct superclasses

structure-object.

Direct methods
Direct slots
Slot: version
Type

stmx::version-type

Initform

stmx::+invalid-version+

Readers

tvar-version.

Writers

(setf tvar-version).

Slot: value
Initform

stmx:+unbound-tvar+

Readers

tvar-value.

Writers

(setf tvar-value).

Slot: id
Type

fixnum

Initform

stmx::+invalid-version+

Readers

tvar-id.

Writers

This slot is read-only.

Slot: waiting-for
Type

(or null hash-table)

Readers

tvar-waiting-for.

Writers

(setf tvar-waiting-for).

Slot: waiting-lock
Initform

(bordeaux-threads:make-lock "tvar-waiting")

Readers

tvar-waiting-lock.

Writers

This slot is read-only.


6.1.10 Classes

Class: ghash-table

Generic hash-table. Allows custom :test argument at creation - default is ’eql. If :test is not one of ’eq ’eql or ’equal, also requires explicit :hash argument at creation.

Not so useful by itself (standard CL:HASH-TABLE is usually faster),
it is the base for transactional hash-table implementation THASH-TABLE.

Package

stmx.util.

Source

ghash-table.lisp.

Direct subclasses

thash-table.

Direct methods
Direct slots
Slot: vec
Type

(or stmx.util::ghash-vector stmx:tvar)

Slot: test-fun
Type

stmx.util::ghash-test-fun

Slot: hash-fun
Type

stmx.util::ghash-hash-fun

Slot: aref-fun
Type

stmx.util::ghash-aref-fun

Initform

(function svref)

Slot: set-aref-fun
Type

stmx.util::ghash-set-aref-fun

Initform

(function stmx.util::set-svref)

Slot: count
Package

common-lisp.

Type

(or null fixnum stmx:tvar)

Initform

0

Slot: test-sym
Type

symbol

Initform

(quote eql)

Initargs

:test

Slot: hash-sym
Type

symbol

Initargs

:hash

Class: gmap

Generic binary tree

Package

stmx.util.

Source

gmap.lisp.

Direct subclasses

rbmap.

Direct methods
Direct slots
Slot: root
Type

(or null stmx.util::gmap-node stmx:tvar)

Slot: pred-func
Type

function

Readers

pred-function-of.

Writers

This slot is read-only.

Slot: count
Package

common-lisp.

Type

(or null fixnum stmx:tvar)

Initform

0

Readers

count-of.

Writers

This slot is read-only.

Slot: pred-sym
Type

symbol

Initargs

:pred

Readers

pred-of.

Writers

This slot is read-only.

Class: rbmap

Red-black tree implementation of sorted binary map

Package

stmx.util.

Source

rbmap.lisp.

Direct superclasses

gmap.

Direct subclasses

tmap.

Direct methods
Class: tcell
Package

stmx.util.

Source

tcell.lisp.

Direct superclasses

transactional-object.

Direct methods
Direct slots
Slot: value
Initform

stmx.util::+empty-tcell+

Initargs

:value

Class: tchannel

Transactional multicast channel supporting unlimited reading ports.
Values written into the tchannel are available to all reading ports in the same order.

References to values written into the tchannel are kept only as long as
one or more ports still need to read them.

Package

stmx.util.

Source

tchannel.lisp.

Direct superclasses

transactional-object.

Direct methods
Direct slots
Slot: back
Type

(or stmx.util:tcons stmx:tvar)

Initform

(stmx.util:tcons nil nil)

Readers

back-of.

Writers

(setf back-of).

Class: tfifo
Package

stmx.util.

Source

tfifo.lisp.

Direct superclasses

transactional-object.

Direct methods
Direct slots
Slot: front
Type

(or stmx.util:tcons stmx:tvar)

Readers

front-of.

Writers

(setf front-of).

Slot: back
Type

(or stmx.util:tcons stmx:tvar)

Readers

back-of.

Writers

(setf back-of).

Class: thash-table

Transactional hash table.

Package

stmx.util.

Source

thash-table.lisp.

Direct superclasses
Direct methods
Direct slots
Slot: vec
Slot: count
Package

common-lisp.

Class: tmap

Transactional sorted map, implemented with red-black tree

Package

stmx.util.

Source

tmap.lisp.

Direct superclasses
Direct methods
Direct slots
Slot: root
Type

(or (or null stmx.util::tnode) stmx:tvar)

Slot: count
Package

common-lisp.

Slot: foo
Class: tport

Transactional reading port for a multicast tchannel.
Values written into the tchannel are available to all reading ports in the same order.

Package

stmx.util.

Source

tchannel.lisp.

Direct superclasses

transactional-object.

Direct methods
Direct slots
Slot: front
Type

(or cons stmx:tvar)

Readers

front-of.

Writers

(setf front-of).

Slot: channel
Type

stmx.util:tchannel

Initform

(error "missing :channel argument instantiating ~a or a subclass" (quote stmx.util:tport))

Initargs

:channel

Readers

channel-of.

Writers

This slot is read-only.

Class: transactional-class

The metaclass for transactional classes.

Classes defined with this metaclass have extra slot options, see the class TRANSACTIONAL-DIRECT-SLOT for details.

Package

stmx.

Source

tclass.lisp.

Direct superclasses

standard-class.

Direct methods
Class: transactional-object

Superclass of all transactional objects.

Package

stmx.

Source

tclass.lisp.

Direct subclasses
Direct methods

update-instance-for-redefined-class.

Class: tstack
Package

stmx.util.

Source

tstack.lisp.

Direct superclasses

transactional-object.

Direct methods
Direct slots
Slot: top
Type

(or list stmx:tvar)

Initargs

stmx.util::top

Readers

top-of.

Writers

(setf top-of).


6.1.11 Types

Type: atomic-counter-num ()
Package

stmx.lang.

Source

atomic-counter.lisp.

Type: atomic-counter-slot-type ()
Package

stmx.lang.

Source

atomic-counter.lisp.

Type: atomic-num ()

ATOMIC-NUM must be a type suitable for ATOMIC-INCF and ATOMIC-DECF. STMX also assumes it is the same or wider than fixnum.

Package

stmx.lang.

Source

atomic-ops.lisp.

Type: simple-tvector (&optional length)

SIMPLE-TVECTOR is a transactional, one dimensional array. It is currently a deftype, not a class or struct: methods cannot be specialized on it.

Package

stmx.util.

Source

simple-tvector.lisp.

Type: tlist ()
Package

stmx.util.

Source

tcons.lisp.

Type: transactional (type)

Transactional memory containing TYPE

Package

stmx.

Source

tvar-fwd.lisp.


6.2 Internals


6.2.1 Constants

Constant: +black+
Package

stmx.util.

Source

rbmap.lisp.

Constant: +defknown-has-overwrite-fndb-silently+
Package

stmx.asm.

Source

compiler.lisp.

Constant: +empty-tcell+

Empty TCELL objects actually contain this symbol in their VALUE slot. Use with care.

Package

stmx.util.

Source

tcell.lisp.

Constant: +ghash-default-capacity+

Default initial capacity of a GHASH-TABLE.

Package

stmx.util.

Source

ghash-table.lisp.

Constant: +ghash-max-capacity+

Maximum capacity of a GHASH-TABLE.
Equal to MOST-POSITIVE-FIXNUM rounded down to nearest power of 2.

Package

stmx.util.

Source

ghash-table.lisp.

Constant: +ghash-threshold-capacity+
Package

stmx.util.

Source

ghash-table.lisp.

Constant: +global-clock-delta+

+global-clock+ VERSION is incremented by 2 each time: the lowest bit is reserved as "locked" flag in TVARs versioning - used if TVAR-LOCK feature is equal to :BIT.

Package

stmx.

Source

global-clock.lisp.

Constant: +global-clock-nohw-delta+

+global-clock+ NOHW-COUNTER incremented by 2 each time: the lowest bit is reserved as "prevent HW transactions"

Package

stmx.

Source

global-clock.lisp.

Constant: +gv+
Package

stmx.

Source

global-clock.lisp.

Constant: +gv-max-stat+
Package

stmx.

Source

global-clock.lisp.

Constant: +hw-atomic-max-attempts+
Package

stmx.

Source

hw-atomic.lisp.

Constant: +invalid-version+
Package

stmx.

Source

tvar-fwd.lisp.

Constant: +red+
Package

stmx.util.

Source

rbmap.lisp.

Constant: +txhash-default-capacity+
Package

stmx.

Source

classes.lisp.

Constant: +txhash-threshold-capacity+
Package

stmx.

Source

txhash.lisp.

Constant: k<
Package

stmx.util.

Source

misc.lisp.

Constant: k=
Package

stmx.util.

Source

misc.lisp.

Constant: k>
Package

stmx.util.

Source

misc.lisp.


6.2.2 Special variables

Special Variable: *cons-pool*
Package

stmx.lang.

Source

cons.lisp.

Special Variable: *empty-vector*
Package

stmx.util.

Source

bheap.lisp.

Special Variable: *feature-list*
Package

stmx.lang.

Source

features.lisp.

Special Variable: *hide-tvars*

A boolean controlling the behaviour of the function (slot-value)
and of slot accessors for TOBJs slots:
- if false, (slot-value) and accessors will get or set the actual TVAR stored inside the slot.
- if true, (slot-value) and accessors will get or set the value stored inside the slot’s TVAR.

This flag is almost always true; it is temporarily set to false during some MOP calls (slot-value-using-class ...) that implement access to TOBJs slots.

Package

stmx.

Source

classes.lisp.

Special Variable: *hw-tlog-write-version*
Package

stmx.

Source

classes.lisp.

Special Variable: *lv*
Package

stmx.

Source

global-clock.lisp.

Special Variable: *optimized-funs*
Package

stmx.

Source

optimize-for.lisp.

Special Variable: *print-ids*
Package

stmx.lang.

Source

print.lisp.

Special Variable: *record-to-tlogs*

A flag indicating if transactions are being recorded to TLOGs or not.

Recording is normally enabled during transactions,
while it is normally disabled in these cases:
- outside transactions
- when initializing TOBJs slots
- during some MOP calls (slot-value-using-class etc.) that implement access to TOBJs slots.

Package

stmx.

Source

classes.lisp.

Special Variable: *recursive-call-compute-effective-slot-definition*
Package

stmx.

Source

tclass.lisp.

Special Variable: *recursive-call-list-classes-containing-direct-slots*
Package

stmx.

Source

tclass.lisp.

Special Variable: *tlog*

The current transaction log.

Package

stmx.

Source

classes.lisp.

Special Variable: *tlog-pool*
Package

stmx.

Source

tlog.lisp.

Special Variable: *tvar-id*
Package

stmx.

Source

tvar-fwd.lisp.

Special Variable: +dummy-tvar+
Package

stmx.

Source

txhash.lisp.

Special Variable: +empty-vector+
Package

stmx.lang.

Source

fast-vector.lisp.

Special Variable: +it+
Package

stmx.lang.

Source

macro.lisp.


6.2.3 Macros

Macro: %copy-tlist-consing (list-or-tlist &key car cdr consp)
Package

stmx.util.

Source

tcons-list.lisp.

Macro: %copy-tlist-setf-tvar (list-or-tlist &key car cdr consp)
Package

stmx.util.

Source

tcons-list.lisp.

Macro: %gv-expand (name &rest args)
Package

stmx.

Source

global-clock.lisp.

Macro: %gv-nohw-flag ()
Package

stmx.

Source

global-clock.lisp.

Macro: %gvx-expand (gvx name &rest args)
Package

stmx.

Source

global-clock.lisp.

Macro: %hw-atomic2 ((&key hw-write-version err test-for-running-tx? update-stat) body fallback)

Run BODY in a hardware memory transaction.
If the transaction aborts, retry it as long as it has chances to succeed. If it has no chances to succeed, execute FALLBACK.
Warning: if a transaction is already running, execute BODY inside it

Package

stmx.

Source

hw-atomic.lisp.

Macro: %sxhash-equalp (x)
Package

stmx.util.

Source

misc.lisp.

Macro: %t-assoc (item talist key test test-not tcar)
Package

stmx.util.

Source

tcons-alist.lisp.

Macro: %tappend-consing (lists &key do-outer-list do-inner-list)
Package

stmx.util.

Source

tcons-list.lisp.

Macro: %tappend-setf-tvar (lists &key do-outer-list do-inner-list)
Package

stmx.util.

Source

tcons-list.lisp.

Macro: %tassoc (item talist key test test-not)
Package

stmx.util.

Source

tcons-alist.lisp.

Macro: %tlist-get (tlist op &rest next-ops)
Package

stmx.util.

Source

tcons-list.lisp.

Macro: %tlist-set (value tcons op &rest next-ops)
Package

stmx.util.

Source

tcons-list.lisp.

Macro: %trassoc (item talist key test test-not)
Package

stmx.util.

Source

tcons-alist.lisp.

Macro: _ (obj slot)
Package

stmx.util.

Source

misc.lisp.

Macro: atomic-push (obj place)

Like PUSH, but atomic. PLACE may be read multiple times before the operation completes – the write does not occur until such time that no other thread modified PLACE between the read and the write.

Works only on places supported by ATOMIC-COMPARE-AND-SWAP.

Package

stmx.lang.

Source

atomic-ops.lisp.

Macro: compile-cerror (cont-string format &rest args)
Package

stmx.

Source

classes.lisp.

Macro: compile-error (format &rest args)
Package

stmx.

Source

classes.lisp.

Macro: compile-log-warn (&rest args)
Package

stmx.lang.

Source

thread.lisp.

Macro: current-tlog ()

Return the current software transaction log

Package

stmx.

Source

classes.lisp.

Macro: define-method-initialize-instance (class-name direct-slot-forms)
Package

stmx.

Source

tclass.lisp.

Macro: define-tstruct-slot-accessor (reader writer accessor-impl &key type struct-type read-only tx instance value)
Package

stmx.

Source

tstruct.lisp.

Macro: defknown (&rest args)
Package

stmx.asm.

Source

compiler.lisp.

Macro: do-class-transactional-direct-slots ((slot class) &body body)

Execute BODY on every transactional direct slot (not inherited) of CLASS.

Package

stmx.

Source

tclass.lisp.

Macro: do-class-transactional-effective-slots ((slot class) &body body)

Execute BODY on every transactional slot (direct or inherited) of CLASS.

Package

stmx.

Source

tclass.lisp.

Macro: do-filter-txfifo ((key &optional value) fifo &body body)

Execute BODY on each KEY/VALUE contained in FIFO. Return NIL.

Package

stmx.

Source

txhash.lisp.

Macro: do-filter-txfifo-entries ((pair) fifo &body body)

Execute BODY on each TXPAIR contained in FIFO. Return NIL.

Package

stmx.

Source

txhash.lisp.

Macro: do-ghash-pairs ((pair &optional index) hash &body body)

Execute BODY on each GHASH-PAIR pair contained in HASH. Return NIL.

Package

stmx.util.

Source

ghash-table.lisp.

Macro: do-gmap* ((&key key value index from-end) m &body body)

Execute BODY in order on each key/value pair contained in M:
first execute it on the smallest key, then the second smallest... finally execute BODY on the largest key. Return nil.

If :FROM-END is true, BODY will be executed first on the largest key, then on the second largest key... and finally on the smallest key.

Adding or removing keys from M during this call (even from other threads) has undefined consequences. Not even the current key can be removed.

Package

stmx.util.

Source

gmap.lisp.

Macro: do-loop-tstruct-defs ((struct-def-var struct-def) &body body)

Execute BODY inside a loop, iterating on tstruct-def STRUCT-DEF and all its superclasses

Package

stmx.

Source

tstruct.lisp.

Macro: do-tlist ((var tlist &optional result) &body body)

Analogous to DOLIST, iterates on transactional list TLIST.
On each iteration, sets VAR to the element and executes BODY inside a tagbody. Returns RESULT. Note: when RESULT is executed, VAR is set to NIL.

An implicit block named NIL surrounds DO-TLIST, so RETURN can be used
to terminate immediately the iterations and return zero or more values.

Package

stmx.util.

Source

tcons.lisp.

Macro: do-tstruct-defs ((struct-def-var struct-def) &body body)

Execute BODY on tstruct-def STRUCT-DEF and all its superclasses

Package

stmx.

Source

tstruct.lisp.

Macro: do-txfifo ((key &optional value) fifo &body body)

Execute BODY on each KEY/VALUE contained in FIFO. Return NIL.

Package

stmx.

Source

txhash.lisp.

Macro: do-txfifo-entries ((pair) fifo &body body)

Execute BODY on each TXPAIR contained in FIFO. Return NIL.

Package

stmx.

Source

txhash.lisp.

Macro: do-txhash ((key &optional value) hash &body body)

Execute BODY on each KEY/VALUE contained in HASH. Return NIL.

Package

stmx.

Source

txhash.lisp.

Macro: do-txhash-entries ((pair) hash &body body)

Execute BODY on each TXPAIR pair contained in HASH. Return NIL.

Package

stmx.

Source

txhash.lisp.

Macro: fast-sw-atomic (&rest body)
Package

stmx.

Source

sw-atomic.lisp.

Macro: global-clock/decf-nohw-counter ()

Decrement by one the number of software-only transaction commits currently running.

This function must be called at the end of each software-only transaction commit, (retry), or any other operation incompatible with hardware transactions, in order to let the latter run, since their current implementations are mutually incompatible.

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/features ()

Return the features of the GLOBAL-CLOCK algorithm, i.e. a list containing zero or more of :SUITABLE-FOR-HW-TRANSACTIONS and :SPURIOUS-FAILURES-IN-SINGLE-THREAD. The list of possible features will be expanded as more GLOBAL-CLOCK algorithms are implemented.

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/get-nohw-counter ()

Return the number of operations currently running that are incompatible with hardware transactions. Example of operations that AT THE MOMENT are incompatible with hardware transactions include:
1) software-only transaction commits
2) (retry)

This function must be called at the beginning of each hardware transaction
in order to detect if an incompatible operation is started during the hardware transaction, and abort the transaction in such case.

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/hw/after-abort ()

Return the value to use as new transaction "read version",

This function must be called after a hardware transaction failed/aborted and before rerunning it.

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/hw/start-read ()

Return the value to use as hardware transaction "read version".

This function must be invoked once upon starting a hardware transaction for the first time. In case the transaction just aborted and is being re-executed, invoke instead (GLOBAL-CLOCK/HW/AFTER-ABORT).

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/hw/start-write (read-version)

Return the value to use as hardware transaction "write version",
given the transaction current READ-VERSION that was assigned at transaction start.

During hardware transactions - and also during hardware-based commits of software transactions - this function must be called once before writing the first TVAR.

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/hw/stat-aborted ()
Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/hw/stat-committed ()
Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/hw/write (write-version)

Return the value to use as TVAR "write version", given the hardware transaction current WRITE-VERSION that was assigned by GLOBAL-CLOCK/HW/START-WRITE before the transaction started writing to TVARs.

This function must be called for **each** TVAR being written during hardware-assisted commit phase of software transactions
and during pure hardware transactions.

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/incf-nohw-counter ()

Increment by one the number of operations currently running that are incompatible with hardware transactions.

This function must be called at the beginning of each software-only transaction commit, (retry), or any other operation incompatible with hardware transactions, in order to abort the latter, since their current implementations are mutually incompatible.

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/sw/after-abort ()

Return the value to use as new transaction "read version",

This function must be called after a software transaction failed/aborted and before rerunning it.

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/sw/start-read ()

Return the value to use as software transaction "read version".

This function must be invoked once upon starting a software transaction for the first time. In case the transaction just aborted and is being re-executed, invoke instead (GLOBAL-CLOCK/SW/AFTER-ABORT).

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/sw/start-write (read-version)

Return the value to use as softarw transaction "write version", given the software transaction current READ-VERSION that was assigned at transaction start.

During software-only commits, this function must be called once before committing the first TVAR write.

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/sw/stat-aborted ()
Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/sw/stat-committed ()
Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/sw/write (write-version)

Return the value to use as TVAR "write version", given the software transaction current WRITE-VERSION that was assigned by GLOBAL-CLOCK/SW/START-WRITE before the transaction started writing to TVARs.

Fhis function must be called for **each** TVAR being written
during software-only commit phase of software transactions.

Package

stmx.

Source

global-clock.lisp.

Macro: global-clock/valid-read? (tvar-version read-version)

Return T if TVAR-VERSION is compatible with transaction "read version". If this function returns NIL, the transaction must be aborted.

During software transactions, this function must be invoked after every TVAR read and before returning the TVAR value to the application code. During hardware transactions, this function is not used.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/after-abort ()

This is GV1 implementation of GLOBAL-CLOCK/AFTER-ABORT. Return the current +gv+ value.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/decf-nohw-counter ()

This is GV1 implementation of GV1/DECF-NOHW-COUNTER. It does nothing and returns zero.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/features ()

This is GV1 implementation of GLOBAL-CLOCK/FEATURES.

Return nil, i.e. not ’(:suitable-for-hw-transactions) because (GV1/START-WRITE ...) increments the global clock, which causes conflicts and aborts when multiple hardware transactions are running simultaneously.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/get-nohw-counter ()

This is GV1 implementation of GV1/GET-NOHW-COUNTER. It does nothing and returns zero.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/hw/after-abort ()

This is GV1 implementation of GLOBAL-CLOCK/HW/AFTER-ABORT. Calls GV1/AFTER-ABORT.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/hw/start-read ()

This is GV1 implementation of GLOBAL-CLOCK/HW/START-READ. Calls GV1/START-READ.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/hw/start-write (write-version)

This is GV1 implementation of GLOBAL-CLOCK/HW/START-WRITE. Calls GV1/START-WRITE.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/hw/stat-aborted ()

This is GV1 implementation of GLOBAL-CLOCK/HW/STAT-ABORTED. Calls GV1/STAT-ABORTED.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/hw/stat-committed ()

This is GV1 implementation of GLOBAL-CLOCK/HW/STAT-COMMITTED. Calls GV1/STAT-COMMITTED.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/hw/write (write-version)

This is GV1 implementation of GLOBAL-CLOCK/HW/WRITE. Calls GV1/WRITE.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/incf-nohw-counter ()

This is GV1 implementation of GV1/INCF-NOHW-COUNTER. It does nothing and returns zero.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/start-read ()

This is GV1 implementation of GLOBAL-CLOCK/START-READ. Return the current +gv+ value.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/start-write (read-version)

This is GV1 implementation of GLOBAL-CLOCK/START-WRITE. Atomically increment +gv+ and return its new value.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/stat-aborted ()

This is GV1 implementation of GV1/STAT-ABORTED. It does nothing and returns zero.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/stat-committed ()

This is GV1 implementation of GV1/STAT-COMMITTED. It does nothing and returns zero.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/sw/after-abort ()

This is GV1 implementation of GLOBAL-CLOCK/SW/AFTER-ABORT. Calls GV1/AFTER-ABORT.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/sw/start-read ()

This is GV1 implementation of GLOBAL-CLOCK/SW/START-READ. Calls GV1/START-READ.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/sw/start-write (write-version)

This is GV1 implementation of GLOBAL-CLOCK/SW/START-WRITE. Calls GV1/START-WRITE.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/sw/stat-aborted ()

This is GV1 implementation of GLOBAL-CLOCK/SW/STAT-ABORTED. Calls GV1/STAT-ABORTED.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/sw/stat-committed ()

This is GV1 implementation of GLOBAL-CLOCK/SW/STAT-COMMITTED. Calls GV1/STAT-COMMITTED.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/sw/write (write-version)

This is GV1 implementation of GLOBAL-CLOCK/SW/WRITE. Calls GV1/WRITE.

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/valid-read? (tvar-version read-version)

This is GV1 implementation of GLOBAL-CLOCK/VALID-READ? Return (<= tvar-version read-version)

Package

stmx.

Source

global-clock.lisp.

Macro: gv1/write (write-version)

This is GV1 implementation of GLOBAL-CLOCK/WRITE. Return WRITE-VERSION.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/after-abort ()

This is GV5 implementation of GLOBAL-CLOCK/AFTER-ABORT. Increment +gv+ and return its new value.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/decf-nohw-counter (&optional delta)

This is GV5 implementation of GLOBAL-CLOCK/DECF-NOHW-COUNTER. Decrement by DELTA the slot NOHW-COUNTER of +gv+ and return its new value.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/features ()

This is GV5 implementation of GLOBAL-CLOCK/FEATURES.

Return ’(:SUITABLE-FOR-HW-TRANSACTIONS :SPURIOUS-FAILURES-IN-SINGLE-THREAD) because the global clock is incremented only by GV5/AFTER-ABORT, which avoids incrementing it in GV5/START-WRITE (it would cause hardware transactions
to conflict with each other and abort) but also causes a 50% abort rate (!) even in a single, isolated thread reading and writing its own transactional memory.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/get-nohw-counter ()

This is GV5 implementation of GLOBAL-CLOCK/GET-NOHW-COUNTER.
Return the number of software-only transaction commits currently running.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/hw/after-abort ()

This is GV5 implementation of GLOBAL-CLOCK/HW/AFTER-ABORT. Calls GV5/AFTER-ABORT.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/hw/start-read ()

This is GV5 implementation of GLOBAL-CLOCK/HW/START-READ. Calls GV5/START-READ.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/hw/start-write (write-version)

This is GV5 implementation of GLOBAL-CLOCK/HW/START-WRITE. Calls GV5/START-WRITE.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/hw/stat-aborted ()

This is GV5 implementation of GLOBAL-CLOCK/HW/STAT-ABORTED. Calls GV5/STAT-ABORTED.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/hw/stat-committed ()

This is GV5 implementation of GLOBAL-CLOCK/HW/STAT-COMMITTED. Calls GV5/STAT-COMMITTED.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/hw/write (write-version)

This is GV5 implementation of GLOBAL-CLOCK/HW/WRITE. Calls GV5/WRITE.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/incf-nohw-counter (&optional delta)

This is GV5 implementation of GLOBAL-CLOCK/INCF-NOHW-COUNTER. Increment by DELTA the slot NOHW-COUNTER of +gv+ and return its new value.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/start-read ()

This is GV5 implementation of GLOBAL-CLOCK/START-READ. Return the current +gv+ value.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/start-write (read-version)

This is GV5 implementation of GLOBAL-CLOCK/START-WRITE. Return (1+ +gv+) without incrementing it.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/stat-aborted ()

This is GV5 implementation of GV5/STAT-ABORTED. It does nothing and returns zero.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/stat-committed ()

This is GV5 implementation of GV5/STAT-COMMITTED. It does nothing and returns zero.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/sw/after-abort ()

This is GV5 implementation of GLOBAL-CLOCK/SW/AFTER-ABORT. Calls GV5/AFTER-ABORT.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/sw/start-read ()

This is GV5 implementation of GLOBAL-CLOCK/SW/START-READ. Calls GV5/START-READ.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/sw/start-write (write-version)

This is GV5 implementation of GLOBAL-CLOCK/SW/START-WRITE. Calls GV5/START-WRITE.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/sw/stat-aborted ()

This is GV5 implementation of GLOBAL-CLOCK/SW/STAT-ABORTED. Calls GV5/STAT-ABORTED.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/sw/stat-committed ()

This is GV5 implementation of GLOBAL-CLOCK/SW/STAT-COMMITTED. Calls GV5/STAT-COMMITTED.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/sw/write (write-version)

This is GV5 implementation of GLOBAL-CLOCK/SW/WRITE. Calls GV5/WRITE.

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/valid-read? (tvar-version read-version)

This is GV5 implementation of GLOBAL-CLOCK/VALID-READ? Return (<= tvar-version read-version)

Package

stmx.

Source

global-clock.lisp.

Macro: gv5/write (write-version)

This is GV5 implementation of GLOBAL-CLOCK/{HW,SW}/WRITE. Return WRITE-VERSION.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/%is-gv5-mode? ()

Return T if GV6 is currently in GV5 mode, i.e. it allows HW transactions. Return NIL if GV6 is currently in GV1 mode, i.e. it forbids HW transactions.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/%update-lv-stat (which &optional delta)
Package

stmx.

Source

global-clock.lisp.

Macro: gv6/decf-nohw-counter (&optional delta)

This is GV6 implementation of GLOBAL-CLOCK/DECF-NOHW-COUNTER. Calls (GV5/DECF-NOHW-COUNTER).

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/features ()

This is GV6 implementation of GLOBAL-CLOCK/FEATURES.

Return ’(:SUITABLE-FOR-HW-TRANSACTIONS :SPURIOUS-FAILURES-IN-SINGLE-THREAD) just like GV5 because the global clock is based on GV5: it is usually not incremented by GV6/START-WRITE, to prevent hardware transactions from conflicting with each other.
This can cause very high abort rates of software transactions, so
GV6 adaptively switches to GV1 algorithm in the following cases:
a) software-only commits are in progress
b) abort rate is very high
in order to try to reduce the abort rates.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/get-nohw-counter ()

This is GV6 implementation of GLOBAL-CLOCK/GET-NOHW-COUNTER. Return LOGIOR of two quantities:
1. (GV5/GET-NOHW-COUNTER)
2. the global-clock slot NOHW-FLAG

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/hw/after-abort ()

This is GV6 implementation of GLOBAL-CLOCK/HW/AFTER-ABORT.
Calls (GV5/AFTER-ABORT), since GV1 mode forbids hardware transactions.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/hw/start-read ()

This is GV6 implementation of GLOBAL-CLOCK/HW/START-READ.
Calls (GV5/HW/START-READ), since GV1 mode forbids hardware transactions.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/hw/start-write (read-version)

This is GV6 implementation of GLOBAL-CLOCK/HW/START-WRITE.
Calls (GV5/HW/START-WRITE), since GV1 mode forbids hardware transactions.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/hw/stat-aborted ()

This is GV5 implementation of GLOBAL-CLOCK/HW/STAT-ABORTED.
It increases local-clock slot ABORTS and may decide to switch between GV1 and GV5 modes.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/hw/stat-committed ()

This is GV6 implementation of GLOBAL-CLOCK/HW/STAT-COMMITTED.
It increases local-clock slot COMMITS and may decide to switch between GV1 and GV5 modes.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/hw/write (write-version)

This is GV6 implementation of GLOBAL-CLOCK/SW/WRITE.
Calls (GV5/HW/START-WRITE), since GV1 mode forbids hardware transactions.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/incf-nohw-counter (&optional delta)

This is GV6 implementation of GLOBAL-CLOCK/INCF-NOHW-COUNTER. Calls (GV5/INCF-NOHW-COUNTER).

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/stat-aborted ()

This is GV6 implementation of GV6/STAT-ABORTED. It does nothing and returns zero.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/stat-committed ()

This is GV6 implementation of GV6/STAT-COMMITTED. It does nothing and returns zero.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/sw/after-abort ()

This is GV6 implementation of GLOBAL-CLOCK/SW/AFTER-ABORT.
Calls either (GV5/AFTER-ABORT) or (GV1/AFTER-ABORT), depending on the current mode.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/sw/start-read ()

This is GV6 implementation of GLOBAL-CLOCK/SW/START-READ.
Calls either (GV5/SW/START-READ) or (GV1/SW/START-READ), depending on the current mode.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/sw/start-write (read-version)

This is GV6 implementation of GLOBAL-CLOCK/SW/START-WRITE.
Calls either (GV5/START-WRITE) or (GV1/START-WRITE), depending on the current mode.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/sw/stat-aborted ()

This is GV5 implementation of GLOBAL-CLOCK/SW/STAT-ABORTED.
It increases local-clock slot ABORTS and may decide to switch between GV1 and GV5 modes.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/sw/stat-committed ()

This is GV6 implementation of GLOBAL-CLOCK/SW/STAT-COMMITTED.
It increases local-clock slot COMMITS and may decide to switch between GV1 and GV5 modes.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/sw/write (write-version)

This is GV6 implementation of GLOBAL-CLOCK/HW/WRITE.
Calls either (GV5/SW/WRITE) or (GV1/WRITE), depending on the current mode.

Package

stmx.

Source

global-clock.lisp.

Macro: gv6/valid-read? (tvar-version read-version)

This is GV6 implementation of GLOBAL-CLOCK/VALID-READ? Return (<= tvar-version read-version)

Package

stmx.

Source

global-clock.lisp.

Macro: gvx-add-missing (gvx)
Package

stmx.

Source

global-clock.lisp.

Macro: hw-tlog-write-version ()

Return the WRITE-VERSION for the current hardware transaction

Package

stmx.

Source

classes.lisp.

Macro: incf-hash-counter (which)
Package

stmx.lang.

Source

hash-table.lisp.

Macro: log.debug-gmap (&rest args &key &allow-other-keys)
Package

stmx.util.

Source

gmap.lisp.

Macro: maybe-yield-before-rerun ()
Package

stmx.

Source

classes.lisp.

Macro: options-for-defun ((&key inline block-name defsetf-name) (defun name args &body body))
Package

stmx.

Source

optimize-for.lisp.

Macro: slot-raw-tvar (class instance slot)

Return the raw tvar stored in a transactional slot.

Package

stmx.

Source

tslot.lisp.

Macro: sw-atomic (&rest body)

Run BODY in a software memory transaction. All changes to transactional memory will be visible to other threads only after BODY returns normally (commits). If BODY signals an error, its effects on transactional memory are rolled back and the error is propagated normally.
Also, no work-in-progress transactional memory will ever be visible to other threads.

Package

stmx.

Source

sw-atomic.lisp.

Macro: transaction-abort-macro (&optional err-code)

Immediately abort a hardware memory transaction with a user-specified ERR-CODE, which must be a constant between 0 and 255 (default: 1).
Note: the value returned by (transaction-begin) will also contain "somewhere" the bits of ERR-CODE, but will have a different value.
See Intel x86-64 CPU instruction reference manual, section TSX, for details.

If a transaction is in progress, TRANSACTION-ABORT-MACRO does not return normally: execution is resumed at the instruction immediately after the outermost TRANSACTION-BEGIN.

If called without a running transaction, TRANSACTION-ABORT-MACRO returns normally with an implementation-dependent value.

Package

stmx.asm.

Source

transaction.lisp.

Macro: tvar-id/next ()
Package

stmx.

Source

tvar-fwd.lisp.

Macro: tvar-unwrap-slot-macro (object slot-name)
Package

stmx.

Source

tclass.lisp.

Macro: tvar-wrap-slot-macro (object slot-name)
Package

stmx.

Source

tclass.lisp.

Macro: use-$-hwtx? ()

Return T if $-hwtx and (setf $-hwtx) should be used, otherwise return NIL.

Package

stmx.

Source

tvar.lisp.

Macro: use-$-swtx? ()

Return T if $-swtx and (setf $-swtx) should be used, otherwise return NIL.

Package

stmx.

Source

tvar.lisp.

Macro: validate-tlog-pool ()
Package

stmx.

Source

tlog.lisp.

Macro: with-declares ((declares &optional var-body) func-body &body body)
Package

stmx.

Source

optimize-for.lisp.

Macro: with-docstrings ((docstrings &optional var-body) func-body &body body)
Package

stmx.

Source

optimize-for.lisp.

Macro: with-docstrings-declares ((docstrings declares &optional var-body) func-body &body body)
Package

stmx.

Source

optimize-for.lisp.

Macro: with-hwtx (&body body)
Package

stmx.

Source

optimize-for.lisp.

Macro: with-notx (&body body)
Package

stmx.

Source

optimize-for.lisp.

Macro: with-recording (&body body)

Enable recording of reads and writes to TLOGs while executing BODY.

Package

stmx.

Source

classes.lisp.

Macro: with-recording-to-tlog (log &body body)

Use LOG as the current transaction log and enable recording of transactions to TLOGs while executing BODY.

Package

stmx.

Source

classes.lisp.

Macro: with-ro-slots ((&rest slots) instance &body body)
Package

stmx.util.

Source

misc.lisp.

Macro: with-rw-slots ((&rest slots) instance &body body)
Package

stmx.util.

Source

misc.lisp.

Macro: with-swtx (&body body)
Package

stmx.

Source

optimize-for.lisp.

Macro: with-tlog (log &body body)

Use LOG as the current software transaction log while executing BODY.

Package

stmx.

Source

classes.lisp.

Macro: with-tx ((kind) &body body)
Package

stmx.

Source

optimize-for.lisp.

Macro: without-recording-with-show-tvars (&body body)

Disable recording of transactions to TLOGs and disable hiding TVARs inside TOBJs slots while executing BODY.

Package

stmx.

Source

classes.lisp.


6.2.4 Setf expanders

Setf Expander: (setf $-notx) (var)
Package

stmx.

Source

tvar.lisp.

Reader

$-notx (function).

Writer

set-$-notx (function).

Setf Expander: (setf $-swtx) (var &optional log)
Package

stmx.

Source

tvar.lisp.

Reader

$-swtx (function).


6.2.5 Ordinary functions

Function: $-notx (var)

Get the value from the transactional variable VAR and return it. Return +unbound-tvar+ if VAR is not bound to a value.
Works ONLY outside memory transactions.

Package

stmx.

Source

tvar.lisp.

Setf expander for this function

(setf $-notx).

Function: $-swtx (var &optional log)

Get the value from the transactional variable VAR and return it. Return +unbound-tvar+ if VAR is not bound to a value.
Works ONLY inside software memory transactions.

Package

stmx.

Source

tvar.lisp.

Setf expander for this function

(setf $-swtx).

Function: %coerce-to-fun (thing)
Package

stmx.util.

Source

tcons-alist.lisp.

Function: %enable-#?-syntax ()
Package

stmx.lang.

Source

features-reader.lisp.

Function: %gv-expand0-f (name)
Package

stmx.

Source

global-clock.lisp.

Function: %gvx-expand0-f (prefix suffix)
Package

stmx.

Source

global-clock.lisp.

Function: %impl/names-to-symbol (package &rest names)
Package

stmx.

Source

tstruct.lisp.

Function: %make-atomic-counter (&key version)
Package

stmx.lang.

Source

atomic-counter.lisp.

Function: %make-fast-vector (&key len vec initial-element)
Package

stmx.lang.

Source

fast-vector.lisp.

Function: %make-mutex (&key mutex-owner)
Package

stmx.lang.

Source

mutex.lisp.

Function: %make-txfifo (&key front back)
Package

stmx.

Source

classes.lisp.

Function: %make-txhash-table (&key vec count pool)
Package

stmx.

Source

classes.lisp.

Function: %rbmap-rebalance-after-insert (m stack)

Rebalance red-black tree after adding a child to (first stack).
Return (values node stack) for some rebalanced node and its path from root. If stack is nil, returned node is the new root to set.

Package

stmx.util.

Source

rbmap.lisp.

Function: %rbmap-remove-at (m stack)

Remove (first stack) from red-black tree M and return (values some-node that-node-stack) from rebalanced tree. Some-node will be nil only if the tree is empty after removal.

Package

stmx.util.

Source

rbmap.lisp.

Function: %rbmap-remove-black-node-at (m node stack)

Remove from red-black tree M black leaf NODE, whose path is STACK. Return some node in rebalanced tree and its stack as multiple values

Package

stmx.util.

Source

rbmap.lisp.

Function: %run-sw-atomic (tx)

Function equivalent of the SW-ATOMIC macro.

Run the function TX inside a transaction.
If the transaction is invalid (conflicts) re-run TX immediately, ignoring any error it may signal.

Otherwise, commit if TX returns normally, or rollback if it signals an error.

Finally, if TX called (retry), re-run it after at least some of the transactional memory it read has changed.

Package

stmx.

Source

sw-atomic.lisp.

Function: %stmx-impl/notx-set/$-slot (value var)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/notx-set/tcar (value cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx-set/tcdr (value cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx-set/tcons-first (value instance)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx-set/tcons-rest (value instance)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx-set/tfirst (value cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx-set/trest (value cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx/$-slot (var)
Setf Expander: (setf %stmx-impl/notx/$-slot) (var)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/notx/bound-$? (var)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/notx/peek-$ (var default)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/notx/set-tsvref (tvec index value)
Package

stmx.util.

Source

simple-tvector.lisp.

Function: %stmx-impl/notx/tcar (list)
Setf Expander: (setf %stmx-impl/notx/tcar) (cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx/tcdr (list)
Setf Expander: (setf %stmx-impl/notx/tcdr) (cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx/tcons-first (instance)
Setf Expander: (setf %stmx-impl/notx/tcons-first) (instance)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx/tcons-rest (instance)
Setf Expander: (setf %stmx-impl/notx/tcons-rest) (instance)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx/tfirst (tlist)
Setf Expander: (setf %stmx-impl/notx/tfirst) (cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx/trest (tlist)
Setf Expander: (setf %stmx-impl/notx/trest) (cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx/trplaca (tcons x)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx/trplacd (tcons x)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/notx/try-put-$ (var value default)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/notx/try-take-$ (var default)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/notx/tsvref (tvec index)
Package

stmx.util.

Source

simple-tvector.lisp.

Function: %stmx-impl/notx/unbind-$ (var)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/swtx-set/$-slot (value var)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/swtx-set/tcar (value cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx-set/tcdr (value cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx-set/tcons-first (value instance)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx-set/tcons-rest (value instance)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx-set/tfirst (value cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx-set/trest (value cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx/$-slot (var)
Setf Expander: (setf %stmx-impl/swtx/$-slot) (var)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/swtx/bound-$? (var)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/swtx/peek-$ (var default)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/swtx/set-tsvref (tvec index value)
Package

stmx.util.

Source

simple-tvector.lisp.

Function: %stmx-impl/swtx/tcar (list)
Setf Expander: (setf %stmx-impl/swtx/tcar) (cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx/tcdr (list)
Setf Expander: (setf %stmx-impl/swtx/tcdr) (cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx/tcons-first (instance)
Setf Expander: (setf %stmx-impl/swtx/tcons-first) (instance)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx/tcons-rest (instance)
Setf Expander: (setf %stmx-impl/swtx/tcons-rest) (instance)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx/tfirst (tlist)
Setf Expander: (setf %stmx-impl/swtx/tfirst) (cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx/trest (tlist)
Setf Expander: (setf %stmx-impl/swtx/trest) (cons)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx/trplaca (tcons x)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx/trplacd (tcons x)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/swtx/try-put-$ (var value default)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/swtx/try-take-$ (var default)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/swtx/tsvref (tvec index)
Package

stmx.util.

Source

simple-tvector.lisp.

Function: %stmx-impl/swtx/unbind-$ (var)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/tstruct/make-tcons (&key first rest)
Package

stmx.util.

Source

tcons.lisp.

Reader: %stmx-impl/tstruct/tcons-first (instance)
Writer: (setf %stmx-impl/tstruct/tcons-first) (instance)
Package

stmx.util.

Source

tcons.lisp.

Target Slot

first.

Reader: %stmx-impl/tstruct/tcons-rest (instance)
Writer: (setf %stmx-impl/tstruct/tcons-rest) (instance)
Package

stmx.util.

Source

tcons.lisp.

Target Slot

rest.

Function: %stmx-impl/tx-set/$-slot (value var)
Package

stmx.

Source

tvar-slot.lisp.

Function: %stmx-impl/tx-set/tcar (value cons)

Set VALUE as the first element in a TCONS or non-null TLIST. This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/tx-set/tcdr (value cons)

Set VALUE as the rest element in a TCONS or non-null TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/tx-set/tcons-first (value instance)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/tx-set/tcons-rest (value instance)
Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/tx-set/tfirst (value cons)

Set VALUE as the first element in a TCONS or non-null TLIST.

This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons.lisp.

Function: %stmx-impl/tx-set/trest (value cons)

Set VALUE as the rest element in a TCONS or non-null TLIST.

This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons.lisp.

Function: %tlast0 (list)
Package

stmx.util.

Source

tcons-list.lisp.

Function: %tlast1 (list)
Package

stmx.util.

Source

tcons-list.lisp.

Function: %tvar-version-and-value (var)

Internal function used only by TVAR-VALUE-AND-VERSION-OR-FAIL.

Package

stmx.

Source

tvar-fwd.lisp.

Function: %validate-tlog-pool (&optional pool)
Package

stmx.

Source

tlog.lisp.

Function: add-bheap (q value)

Add VALUE to bheap Q. Return VALUE.

Package

stmx.util.

Source

bheap.lisp.

Function: add-optimized-fun (fun fun-hwtx fun-swtx fun-notx lambda-list)
Package

stmx.

Source

optimize-for.lisp.

Function: add-optimized-fun* (fun simple-vector)
Package

stmx.

Source

optimize-for.lisp.

Function: add-txpair-to-pool (hash txpair)
Package

stmx.

Source

txhash.lisp.

Function: adjust-transactional-slot-form (class-name class-precedence-list slot-form old-effective-slot errors)

Adjust a single slot definition for a transactional class.
Unless the slot is defined as :transactional NIL,
wrap its :initform with a TVAR and alter its :type to also accept TVARs

Package

stmx.

Source

tclass.lisp.

Function: adjust-transactional-slot-forms (class-name direct-superclasses-names slot-forms errors)

Adjust each slot definition for a transactional class:
unless a slot is defined as :transactional NIL, wrap its :initform with a TVAR and alter its :type to also accept TVARs

Package

stmx.

Source

tclass.lisp.

Function: atomic-counter-p (object)
Package

stmx.lang.

Source

atomic-counter.lisp.

Reader: atomic-counter-version (instance)
Writer: (setf atomic-counter-version) (instance)
Package

stmx.lang.

Source

atomic-counter.lisp.

Target Slot

version.

Function: bind-optimized-fun (fun fun-tx lambda-list)

Return a form suitable for MACROLET

Package

stmx.

Source

optimize-for.lisp.

Function: black? (node)

Return t if NODE is black. Nil nodes are assumed to be black

Package

stmx.util.

Source

rbmap.lisp.

Function: cerror-tclass-slot-change (class-name slot-name option old-value new-value)
Package

stmx.

Source

tclass.lisp.

Function: check-tclass-slot-change (class-name slot-name option old-value new-value errors)
Package

stmx.

Source

tclass.lisp.

Function: check-tclass-slot-name (class-name slot-name errors)
Package

stmx.

Source

tclass.lisp.

Function: clear-bheap (q)

Remove all values from bheap Q. Return Q.

Package

stmx.util.

Source

bheap.lisp.

Function: clear-features ()

Remove all features from *FEATURE-LIST*.

Package

stmx.lang.

Source

features.lisp.

Function: clear-tlog (log)

Remove all transactional reads and writes stored in LOG,
as well as functions registered with BEFORE-COMMIT and AFTER-COMMIT; return LOG itself.

Package

stmx.

Source

tlog.lisp.

Function: clear-txfifo (fifo)
Package

stmx.

Source

txhash.lisp.

Function: clear-txhash (hash)

Remove all keys and values from HASH. Return HASH.

Package

stmx.

Source

txhash.lisp.

Function: clos-tie-breaker-rule (minimal-elements reverse-precedence-list)
Package

stmx.lang.

Source

class-precedence-list.lisp.

Function: collect-all-superclasses (classes-names)
Package

stmx.lang.

Source

class-precedence-list.lisp.

Function: collect-superclasses (class)
Package

stmx.lang.

Source

class-precedence-list.lisp.

Function: commit (log)

Commit a TLOG to memory.

It returns a boolean specifying whether or not the transaction
log was committed. If the transaction log cannot be committed
it either means that:
a) the TLOG is invalid - then the whole transaction must be re-executed b) another TLOG is writing the same TVARs being committed
so that TVARs locks could not be aquired - also in this case
the whole transaction will be re-executed, as there is little hope that the TLOG will still be valid.

Note: internally invokes GLOBAL-CLOCK/{HW,SW}/STAT-{COMMITTED,ABORTED}

Package

stmx.

Source

commit.lisp.

Function: commit-nested (log)

Commit LOG into its parent log; return LOG.

Unlike (commit log), this function is guaranteed to always succeed.

Implementation note: copy tlog-reads, tlog-writes, tlog-before-commit and tlog-after-commit into parent, or swap them with parent

Package

stmx.

Source

commit.lisp.

Function: commit-sw-update-tvars (locked log)

Actually COMMIT, i.e. write new values into TVARs. Also unlock all TVARs.

Package

stmx.

Source

commit.lisp.

Function: compare-bheap-entries (q n1 n2)

Compare entries at positions N1 and N2 in bqueue Q.

Package

stmx.util.

Source

bheap.lisp.

Function: compare-keys (pred key1 key2)

Compare KEY1 agains KEY2 using the comparison function PRED. Return K< if KEY1 compares as lesser than KEY2,
return K> if KEY1 compares as greater than KEY2,
return K= if KEY1 and KEY2 compare as equal.

Package

stmx.util.

Source

misc.lisp.

Function: compile-ensure-1-arg (ch args)
Package

stmx.lang.

Source

features-reader.lisp.

Function: compile-ensure-2-args (ch args)
Package

stmx.lang.

Source

features-reader.lisp.

Function: compile-if-and (ch args)

Return T if all the features in ARGS are present in *FEATURE-LIST*, otherwise return NIL.

Package

stmx.lang.

Source

features-reader.lisp.

Function: compile-if-eql (ch args)

Return T if feature has the specified value, otherwise return NIL.

Package

stmx.lang.

Source

features-reader.lisp.

Function: compile-if-error (ch args)
Package

stmx.lang.

Source

features-reader.lisp.

Function: compile-if-eval (ch args)
Package

stmx.lang.

Source

features-reader.lisp.

Function: compile-if-not (ch args)

Return NIL if the feature in ARGS is present in *FEATURE-LIST*, otherwise return T.

Package

stmx.lang.

Source

features-reader.lisp.

Function: compile-if-or (ch args)

Return T if at least one feature in ARGS is present in *FEATURE-LIST*, otherwise return NIL.

Package

stmx.lang.

Source

features-reader.lisp.

Function: compile-if-sbcl-disassem<=32-bit ()
Package

stmx.asm.

Source

compiler.lisp.

Function: compile-if-sbcl-lacks-rtm-instructions ()
Package

stmx.asm.

Source

compiler.lisp.

Function: compile-if-symbol (ch args)

Return T if symbol exists in specified package, otherwise return NIL. Arguments are: package-name symbol-name.

Package

stmx.lang.

Source

features-reader.lisp.

Function: compile-if-transformer (stream subchar arg)
Package

stmx.lang.

Source

features-reader.lisp.

Function: compute-id-of (obj)
Package

stmx.lang.

Source

print.lisp.

Function: copy-atomic-counter (instance)
Package

stmx.lang.

Source

atomic-counter.lisp.

Function: copy-fast-vector (instance)
Package

stmx.lang.

Source

fast-vector.lisp.

Function: copy-ghash (hash)

Return a copy of ghash-table HASH.
The copy will have the same class, test and hash functions, and elements.

Package

stmx.util.

Source

ghash-table.lisp.

Function: copy-gv156 (instance)
Package

stmx.

Source

global-clock.lisp.

Function: copy-lv156 (instance)
Package

stmx.

Source

global-clock.lisp.

Function: copy-mutex (instance)
Package

stmx.lang.

Source

mutex.lisp.

Function: copy-orelse-tx (instance)
Package

stmx.

Source

orelse.lisp.

Function: copy-slot-form (slot-form)
Package

stmx.

Source

tclass.lisp.

Function: copy-tcons (old-instance-16)
Package

stmx.util.

Source

tcons.lisp.

Function: copy-tlist (tlist)

Return a new tlist which has the same elements as TLIST. TLIST may be improper.

Package

stmx.util.

Source

tcons-list.lisp.

Function: copy-tlog (instance)
Package

stmx.

Source

classes.lisp.

Function: copy-tstruct-def (instance)
Package

stmx.

Source

tstruct.lisp.

Function: copy-tstruct-slot (instance)
Package

stmx.

Source

tstruct.lisp.

Function: copy-ttree (tree)

Recursively copy trees of TCONSes.

Package

stmx.util.

Source

tcons-tree.lisp.

Function: copy-tvar (instance)
Package

stmx.

Source

tvar-fwd.lisp.

Function: copy-txfifo (instance)
Package

stmx.

Source

classes.lisp.

Function: copy-txhash-table (instance)
Package

stmx.

Source

classes.lisp.

Function: copy-txhash-table-into (dst src)

Clear DST, then copy SRC contents into it. Return NIL.

Package

stmx.

Source

txhash.lisp.

Function: copy-txpair (instance)
Package

stmx.

Source

classes.lisp.

Function: detect-thread-support ()

test for multi-threading support: :STMX/DISABLE-THREADS most not be present CL:*FEATURES*, BORDEAUX-THREADS:*SUPPORTS-THREADS-P* must be non-NIL, and (BT:MAKE-THREAD) and (BT:JOIN-THREAD) must work.

Package

stmx.lang.

Source

thread.lisp.

Function: empty-bheap? (q)

Return t if bheap Q is empty.

Package

stmx.util.

Source

bheap.lisp.

Function: ensure-tlog-after-commit (log)

Create tlog-after-commit log if nil, and return it.

Package

stmx.

Source

commit.lisp.

Function: ensure-tlog-before-commit (log)

Create tlog-before-commit log if nil, and return it.

Package

stmx.

Source

commit.lisp.

Function: ensure-transactional-object-among-superclasses (direct-superclasses)

Add TRANSACTIONAL-OBJECT as the first superclass of a transactional class if not already present in the superclass list.

Package

stmx.

Source

tclass.lisp.

Function: error-tclass-slot-name (class-name slot-name)
Package

stmx.

Source

tclass.lisp.

Function: extend-bheap-vector (v)

Double the length of vector V, i.e. create a new larger vector and copy elements from V to the new vector.
Return the new, larger vector.

This method exists to simplify the implementation of transactional priority queue TQUEUE: as long as bheap is concerned, (vector-push-extend ...) would be fine.

Package

stmx.util.

Source

bheap.lisp.

Function: extract-declares (body)
Package

stmx.

Source

optimize-for.lisp.

Function: extract-docstrings (body)
Package

stmx.

Source

optimize-for.lisp.

Reader: fast-vector-initial-element (instance)
Writer: (setf fast-vector-initial-element) (instance)
Package

stmx.lang.

Source

fast-vector.lisp.

Target Slot

initial-element.

Reader: fast-vector-len (instance)
Writer: (setf fast-vector-len) (instance)
Package

stmx.lang.

Source

fast-vector.lisp.

Target Slot

len.

Function: fast-vector-make-array (initial-capacity element-type initial-element)
Package

stmx.lang.

Source

fast-vector.lisp.

Function: fast-vector-p (object)
Package

stmx.lang.

Source

fast-vector.lisp.

Reader: fast-vector-vec (instance)
Writer: (setf fast-vector-vec) (instance)
Package

stmx.lang.

Source

fast-vector.lisp.

Target Slot

vec.

Function: find-class-or-nil (class-name)
Package

stmx.

Source

tclass.lisp.

Function: find-first-rerun-tx (txs me)

Return index of the first tx that wants to rerun or is invalid. Return nil if all tx are valid and want to retry.

Package

stmx.

Source

orelse.lisp.

Function: find-ghash-pair (hash key)

If KEY is present in HASH, return the GHASH-PAIR containing KEY. Otherwise return NIL.

Package

stmx.util.

Source

ghash-table.lisp.

Function: find-key-and-stack (m key &optional stack)

Return stack of visited nodes from root to insertion point for KEY, and comparison between the KEY to insert and last visited node’s key, as multiple values

Package

stmx.util.

Source

gmap.lisp.

Function: find-slot-by-name (slot-name slots)
Package

stmx.

Source

tclass.lisp.

Function: find-slot-form-by-name (slot-name slot-forms)
Package

stmx.

Source

tclass.lisp.

Function: find-txhash (hash key)

If KEY is present in HASH, return the TXPAIR containing KEY. Otherwise return NIL.

Package

stmx.

Source

txhash.lisp.

Function: flip-color (node)

Flip NODE color. Return the new color.

Package

stmx.util.

Source

rbmap.lisp.

Function: free-tlog (log)

Return a no-longer-needed TLOG to the pool.

Package

stmx.

Source

tlog.lisp.

Function: free-tx-logs (txs)

Return to TLOG pool all logs contained in TXS

Package

stmx.

Source

orelse.lisp.

Function: fwd-traverse-gmap-at (m node index func)
Package

stmx.util.

Source

gmap.lisp.

Function: get-bheap (q &optional default)

Return the first value in bheap Q without removing it, and t as multiple values. Return (values DEFAULT nil) if Q contains no values.

Package

stmx.util.

Source

bheap.lisp.

Function: get-next-id (id)
Package

stmx.

Source

tvar-fwd.lisp.

Function: get-txhash (hash key &optional default)

If KEY is associated to VALUE in HASH, return (values VALUE t) Otherwise return (values DEFAULT nil).

Package

stmx.

Source

txhash.lisp.

Function: ghash-mask (vec-len)

Return the bitmask to use for hash indexes.

Package

stmx.util.

Source

ghash-table.lisp.

Function: ghash-subscript (hash-code vec &optional vec-len)

Return the array subscript in HASH corresponding to HASH-CODE.

Package

stmx.util.

Source

ghash-table.lisp.

Function: ghash-table-count<= (hash count)

Return T if ghash-table HASH contains at most COUNT key/value entries.

Package

stmx.util.

Source

ghash-table.lisp.

Function: ghash-table-count> (hash count)

Return T if ghash-table HASH contains more than COUNT key/value entries.

Package

stmx.util.

Source

ghash-table.lisp.

Function: global-clock/publish-features ()

Publish (GLOBAL-CLOCK/FEATURES) to stmx.lang::*feature-list* so they can be tested with #?+ and #?- reader macros.

Package

stmx.

Source

global-clock.lisp.

Function: gmap-count<= (m count)

Return T if gmap M contains at most COUNT key/value entries.

Package

stmx.util.

Source

gmap.lisp.

Function: gmap-count> (m count)

Return T if ghash-table HASH contains more than COUNT key/value entries.

Package

stmx.util.

Source

gmap.lisp.

Reader: gv156-aborts (instance)
Writer: (setf gv156-aborts) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

aborts.

Reader: gv156-commits (instance)
Writer: (setf gv156-commits) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

commits.

Reader: gv156-nohw-counter (instance)
Writer: (setf gv156-nohw-counter) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

nohw-counter.

Reader: gv156-nohw-flag (instance)
Writer: (setf gv156-nohw-flag) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

nohw-flag.

Function: gv156-p (object)
Package

stmx.

Source

global-clock.lisp.

Reader: gv156-pad1 (instance)
Writer: (setf gv156-pad1) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

pad1.

Reader: gv156-pad2 (instance)
Writer: (setf gv156-pad2) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

pad2.

Reader: gv156-pad3 (instance)
Writer: (setf gv156-pad3) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

pad3.

Reader: gv156-pad4 (instance)
Writer: (setf gv156-pad4) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

pad4.

Reader: gv156-pad5 (instance)
Writer: (setf gv156-pad5) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

pad5.

Reader: gv156-pad6 (instance)
Writer: (setf gv156-pad6) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

pad6.

Reader: gv156-pad7 (instance)
Writer: (setf gv156-pad7) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

pad7.

Function: gv156-version (instance)
Package

stmx.

Source

global-clock.lisp.

Function: (setf gv156-version) (instance)
Package

stmx.

Source

global-clock.lisp.

Function: gv6/%set-gv1-mode ()
Package

stmx.

Source

global-clock.lisp.

Function: gv6/%set-gv5-mode ()
Package

stmx.

Source

global-clock.lisp.

Function: gv6/%update-gv-stat (lv)
Package

stmx.

Source

global-clock.lisp.

Function: heapify-bheap (q)

Establish heap invariant in bheap Q. Return Q. Destructively modifies (vector-of Q).

Package

stmx.util.

Source

bheap.lisp.

Function: hide-tvars? ()
Package

stmx.

Source

classes.lisp.

Function: hw-transaction-test ()
Package

stmx.

Source

atomic.lisp.

Function: hw-transaction? ()

Return true if inside a hardware transaction.

Package

stmx.

Source

classes.lisp.

Function: int-list>= (list1 list2)
Package

stmx.asm.

Source

compiler.lisp.

Function: intern-feature (f)
Package

stmx.lang.

Source

features.lisp.

Function: invalid? (log)

Return (not (valid? LOG)).

Package

stmx.

Source

commit.lisp.

Function: invoke-after-commit (log)

After committing, call in order all functions registered with (after-commit) If any of them signals an error, it will be propagated to the caller
but the TLOG will remain committed.

Package

stmx.

Source

commit.lisp.

Function: invoke-before-commit (log)

Before committing, call in order all functions registered with (before-commit)
If any of them signals an error, the transaction will rollback and the error will be propagated to the caller

Package

stmx.

Source

commit.lisp.

Function: is-left-gmap-node-child? (node parent)
Package

stmx.util.

Source

gmap.lisp.

Function: is-left-rbnode-child-red? (node)
Package

stmx.util.

Source

rbmap.lisp.

Function: is-left-rbnode-child? (node parent)
Package

stmx.util.

Source

rbmap.lisp.

Function: lambda-list-param-to-arg (param)

Given the lambda-list parameter PARAM, which can be of the forms arg-name
(arg-name default-value)
((keyword-name arg-name) default-value)
return arg-name

Package

stmx.

Source

optimize-for.lisp.

Function: lambda-list-param-to-arg-set-p (param)

Given the lambda-list parameter PARAM, which can be of the forms arg-name
(arg-name default-value)
(arg-name default-value arg-set-p)
((keyword-name arg-name) default-value)
((keyword-name arg-name) default-value arg-set-p)
return arg-set-p, or NIL if not present

Package

stmx.

Source

optimize-for.lisp.

Function: lambda-list-quote-default-forms (lambda-list)

Quote all default values in LAMBDA-LIST. Useful to use in a macro a lambda list created for a function.

Package

stmx.

Source

optimize-for.lisp.

Function: lambda-list-to-args (lambda-list)

Remove all occurrences of &optional &key &rest &allow-other-keys and &aux from LAMBDA-LIST. Also extract actual argument names from &optional, &key and &aux parameters.
For example, it converts:
(arg1 &optional (arg2 default2) &rest rest &key arg3 (arg4 default4) ((:key5 arg5) default5 set5)) to
(arg1 arg2 rest arg3 arg4 arg5 set5)

Package

stmx.

Source

optimize-for.lisp.

Function: lisp-version>= (version-int-list)
Package

stmx.asm.

Source

compiler.lisp.

Function: list-class-transactional-direct-slots (class)
Package

stmx.

Source

tclass.lisp.

Function: list-classes-containing-direct-slots (direct-slots class)
Package

stmx.

Source

tclass.lisp.

Function: list-direct-slot-in-superclasses (slot-name class-precedence-list)

List the direct slots named SLOT-NAME found in class precedence list.

Package

stmx.

Source

tclass.lisp.

Function: list-to-tlist (list)

Return a new tlist which has the same elements as LIST. LIST may be improper.

Package

stmx.util.

Source

tcons-list.lisp.

Function: listen-tvar (var log)

Add LOG to VAR’s waiting list, so that LOG will be notified if VAR changes.

Package

stmx.

Source

tvar.lisp.

Function: listen-tvars-of (log)

Listen on tvars recorded in LOG, i.e. register to get notified if they change. Return t if log is valid and wait-tlog should sleep, otherwise return nil.

Package

stmx.

Source

tlog.lisp.

Function: local-precedence-ordering (class)
Package

stmx.lang.

Source

class-precedence-list.lisp.

Function: lock-owner (lock)

Return the thread owning a lock, or NIL if lock is free.

Package

stmx.lang.

Source

mutex.lisp.

Function: loop-funcall-on-appendable-vector (funcs)

Call each function in FUNCS vector. Take care that functions being invoked can register other functions - or themselves again - with (before-commit ...) or with (after-commit ...).
This means new elements can be appended to FUNCS vector during the loop => (loop for func across funcs ...) is not enough.

Package

stmx.

Source

commit.lisp.

Reader: lv156-aborts (instance)
Writer: (setf lv156-aborts) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

aborts.

Reader: lv156-commits (instance)
Writer: (setf lv156-commits) (instance)
Package

stmx.

Source

global-clock.lisp.

Target Slot

commits.

Function: lv156-p (object)
Package

stmx.

Source

global-clock.lisp.

Function: make-gv156 (&key version nohw-counter nohw-flag pad1 pad2 pad3 pad4 pad5 pad6 pad7 commits aborts)
Package

stmx.

Source

global-clock.lisp.

Function: make-load-form/tstruct-def (obj)
Package

stmx.

Source

tstruct.lisp.

Function: make-load-form/tstruct-slot (obj)
Package

stmx.

Source

tstruct.lisp.

Function: make-lv156 (&key commits aborts)
Package

stmx.

Source

global-clock.lisp.

Function: make-orelse-tx (&key func log retry)
Package

stmx.

Source

orelse.lisp.

Function: make-tcons (&key first rest)
Package

stmx.util.

Source

tcons.lisp.

Function: make-tlog (&key reads writes locked read-version parent lock semaphore prevent-sleep before-commit after-commit)
Package

stmx.

Source

classes.lisp.

Function: make-tlog-pool (&optional n)
Package

stmx.

Source

tlog.lisp.

Function: make-tstruct-def (&key name conc-name constructor copier type superclass options slots)
Package

stmx.

Source

tstruct.lisp.

Function: make-tstruct-slot (&key name initform type read-only reader writer transactional options)
Package

stmx.

Source

tstruct.lisp.

Function: make-tvar (&key version value id waiting-for waiting-lock)
Package

stmx.

Source

tvar-fwd.lisp.

Function: make-txfifo ()

Create and return a new, empty TXFIFO.

Package

stmx.

Source

classes.lisp.

Function: make-txhash-table (&key initial-capacity)
Package

stmx.

Source

classes.lisp.

Function: map-gmap-from-end (m func)

Invoke FUNC in reverse order on each key/value pair contained in M: first invoke it on the largest key, then the second largest... finally invoke FUNC on the smallest key. Return nil.

FUNC must be a function accepting two arguments: key and value.

Adding or removing keys from M during this call (even from other threads) has undefined consequences. Not even the current key can be removed.

Package

stmx.util.

Source

gmap.lisp.

Function: mapappend (fn seq)
Package

stmx.lang.

Source

class-precedence-list.lisp.

Function: merge-tlog-reads (log1 log2)

Merge (tlog-reads LOG1) and (tlog-reads LOG2).

Return merged TLOG (either LOG1 or LOG2) if tlog-reads LOG1 and LOG2 are compatible, i.e. if they contain the same values for the TVARs common to both, otherwise return NIL.
(in the latter case, the merge will not be completed).

Destructively modifies (tlog-reads log1) and (tlog-reads log2).

Package

stmx.

Source

commit.lisp.

Function: merge-tlog-reads-tx (txs me)

Return merged tlog of all tx, or nil if some tlog are mutually incompatible.

Package

stmx.

Source

orelse.lisp.

Function: merge-txhash-tables (dst src)

Copy hash-table SRC into hash-table DST.

Return t if SRC and DST are compatible,
i.e. if they contain eq values for the keys common to both, otherwise return nil.
(in the latter case, the merge will not be completed).

Package

stmx.

Source

txhash.lisp.

Function: mutex-p (object)
Package

stmx.lang.

Source

mutex.lisp.

Function: names-to-symbol (package &rest names)
Package

stmx.

Source

tstruct.lisp.

Function: new-or-clear-tlog (log &key parent)

If LOG is not nil, clear it as per (clear-tlog), otherwise create a new tlog as per (new-tlog). In both cases the tlog is returned, and its parent is set to PARENT.

Package

stmx.

Source

tlog.lisp.

Function: new-tlog ()

Get a TLOG from pool or create one, and return it.

Package

stmx.

Source

tlog.lisp.

Function: new-txpair-from-pool (hash txpair-next key value)
Package

stmx.

Source

txhash.lisp.

Function: notify-tlog (log var)
Package

stmx.

Source

tlog.lisp.

Function: notify-tvar (var)

Wake up all threads waiting for VAR to change.

Package

stmx.

Source

tvar.lisp.

Function: notify-tvar-high-load (var)

Wake up all threads waiting for VAR to change.

Package

stmx.

Source

tvar.lisp.

Reader: orelse-tx-func (instance)
Writer: (setf orelse-tx-func) (instance)
Package

stmx.

Source

orelse.lisp.

Target Slot

func.

Reader: orelse-tx-log (instance)
Writer: (setf orelse-tx-log) (instance)
Package

stmx.

Source

orelse.lisp.

Target Slot

log.

Function: orelse-tx-p (object)
Package

stmx.

Source

orelse.lisp.

Reader: orelse-tx-retry (instance)
Writer: (setf orelse-tx-retry) (instance)
Package

stmx.

Source

orelse.lisp.

Target Slot

retry.

Function: param-quote-default-form (param)

If present, quote the default value of the lambda-list parameter PARAM. Useful to use in a macro a lambda list created for a function.

Package

stmx.

Source

optimize-for.lisp.

Function: parse-struct-def (name-and-options &key tx)
Package

stmx.

Source

tstruct.lisp.

Function: parse-struct-def-and-slots (name-and-options slot-descriptions &key tx)
Package

stmx.

Source

tstruct.lisp.

Function: parse-struct-slot (slot &key tx)
Package

stmx.

Source

tstruct.lisp.

Function: parse-struct-slots (slots &key tx)
Package

stmx.

Source

tstruct.lisp.

Function: peek-$ (var &optional default)

Get the value from the transactional variable VAR
and return it and t as multiple values.
If VAR is not bound to a value, return (values DEFAULT nil).

Works both inside and outside transactions.

Package

stmx.

Source

tvar-slot.lisp.

Function: put-txfifo (fifo pair)

Append PAIR as last element in txfifo F and return PAIR.

Package

stmx.

Source

txhash.lisp.

Function: raw-value-of (var)

return the current value of VAR, or +unbound-tvar+ if VAR is not bound to a value. This finction intentionally ignores transactions and it is only useful
for debugging purposes. please use ($-slot var) instead.

Package

stmx.

Source

tvar-fwd.lisp.

Function: (setf raw-value-of) (var)

Set the VALUE of VAR. Return VALUE.
This function intentionally ignores transactions and it is only useful
for debugging purposes. Use (SETF ($-SLOT VAR) VALUE) or (SETF ($ VAR) VALUE) instead.

Package

stmx.

Source

tvar.lisp.

Function: recording? ()

Return true if transactions are being recorded to TLOGs.

Package

stmx.

Source

classes.lisp.

Function: red? (node)

Return t if NODE is red. Nil nodes are assumed to be black

Package

stmx.util.

Source

rbmap.lisp.

Function: rehash-ghash (hash)
Package

stmx.util.

Source

ghash-table.lisp.

Function: rehash-txhash (hash)
Package

stmx.

Source

txhash.lisp.

Function: rem-bheap (q &optional default)

If bheap Q contains at least one value, remove the first value and return it and t as multiple values.
Otherwise return (values DEFAULT nil)

Package

stmx.util.

Source

bheap.lisp.

Function: rem-feature (f)

Remove feature F from *FEATURE-LIST*.
Return T if F was present *FEATURE-LIST*, otherwise return NIL.

Package

stmx.lang.

Source

features.lisp.

Function: replace-gmap-node (old-node new-node parent)

Unlink old-node from it parent and replace it with new-node. Return t if left child was replaced, nil if right child was replaced

Package

stmx.util.

Source

gmap.lisp.

Function: rerun ()

Abort the current transaction and immediately re-run it from the
beginning without waiting. Automatically invoked when a SW transaction detects a possibly inconsistent read.

Package

stmx.

Source

classes.lisp.

Function: rev-traverse-gmap-at (m node index func)
Package

stmx.util.

Source

gmap.lisp.

Function: rotate-gmap-node-around (node parent &key left)

Rotate left or right the subtree around node. Return new subtree root and also update parent’s link to subtree root.

Package

stmx.util.

Source

gmap.lisp.

Function: rotate-gmap-node-left (node)

Rotate left the subtree around node. Return new subtree root.

Package

stmx.util.

Source

gmap.lisp.

Function: rotate-gmap-node-right (node)

Rotate right the subtree around node. Return new subtree root.

Package

stmx.util.

Source

gmap.lisp.

Function: run-nonblocking (func)

Function version of NONBLOCKING macro: execute the function FUNC
in a nested transaction and:
a) in case of transaction conflicts, re-execute FUNC
b) if FUNC returns normally, commit and return multiple values:
T followed by the values returned by FUNC.
b) if FUNC signals an error, rollback and raise such error.
d) if FUNC attempts to retry, immediately return NIL without waiting/sleeping.

Can only be used inside an ATOMIC block.

Package

stmx.

Source

orelse.lisp.

Function: run-once (tx log)

Internal function invoked by RUN-SW-ATOMIC and RUN-ORELSE.

Run once the function TX inside a transaction,
using LOG as its transaction log.

Package

stmx.

Source

sw-atomic.lisp.

Function: run-sw-atomic (tx)

Function equivalent of the SW-ATOMIC macro.

Run the function TX inside a transaction.
If the transaction is invalid (conflicts) re-run TX immediately, ignoring any error it may signal.

Otherwise, commit if TX returns normally, or rollback if it signals an error.

Finally, if TX called (retry), re-run it after at least some of the transactional memory it read has changed.

Package

stmx.

Source

sw-atomic.lisp.

Function: set-$ (var value)

Store VALUE inside transactional variable VAR and return VALUE.

Works both outside and inside transactions.
During transactions, it uses transaction log to record the value.

Package

stmx.

Source

tvar.lisp.

Setf expanders to this function

(setf $).

Function: set-$-notx (var value)

Store VALUE inside transactional variable VAR and return VALUE. Works ONLY outside memory transactions.

Package

stmx.

Source

tvar.lisp.

Setf expanders to this function

(setf $-notx).

Function: set-$-swtx (var value &optional log)

Store VALUE inside transactional variable VAR and return VALUE. Works ONLY inside software memory transactions.

Package

stmx.

Source

tvar.lisp.

Function: set-assoc (key datum alist)

implementation of (SETF ASSOC)

Package

stmx.

Source

tclass.lisp.

Function: set-assoc* (key datum alist-cons)
Package

stmx.

Source

tclass.lisp.

Function: set-svref (vec subscript value)

On several CL implementations, (setf svref) is not a function.

Package

stmx.util.

Source

ghash-table.lisp.

Function: set-tsvref (tvec index value)

Set the INDEX-th element of simple-tvector TVEC to VALUE. Works both inside and outside transactions

Package

stmx.util.

Source

simple-tvector.lisp.

Setf expanders to this function

(setf tsvref).

Function: set-tvar-value-and-version (var value version)

Set the VALUE and VERSION of VAR. If lock is a bit inside TVAR version, also set it (which may unlock VAR!). Return VALUE.

Package

stmx.

Source

tvar-fwd.lisp.

Function: set-txhash (hash key value)

Add KEY to HASH, associating it to VALUE. Return VALUE.

Package

stmx.

Source

txhash.lisp.

Function: shallow-invalid? (log)

Return (not (shallow-valid? LOG)).

Package

stmx.

Source

commit.lisp.

Function: shallow-valid? (log)

Return T if a TLOG is valid. Similar to (valid? log), but does *not* check log parents for validity.

Package

stmx.

Source

commit.lisp.

Function: sift-down-bheap (q start end)
Package

stmx.util.

Source

bheap.lisp.

Function: sift-up-bheap (q start end)
Package

stmx.util.

Source

bheap.lisp.

Function: slot-form-name (slot-form)
Package

stmx.

Source

tclass.lisp.

Function: slot-form-transactional? (slot-form)

Does SLOT-FORM define a transactional slot?
Direct slots defined in transactional classes are by default transactional, UNLESS explicitly defined with the option :transactional nil.

Package

stmx.

Source

tclass.lisp.

Function: some-features (&rest list)

Return T if at least one feature from LIST is present in *FEATURE-LIST* and have non-NIL value.

Package

stmx.lang.

Source

features.lisp.

Function: split-string (string separator)
Package

stmx.asm.

Source

compiler.lisp.

Function: stmx-internal-error (datum &rest arguments)
Package

stmx.

Source

version.lisp.

Function: stmx-internal-error/bug (datum &rest arguments)
Package

stmx.

Source

version.lisp.

Function: stmx-internal-error/suggest-bordeaux-threads (datum &rest arguments)
Package

stmx.

Source

tlog.lisp.

Function: string-to-int-list (string &optional separator)
Package

stmx.asm.

Source

compiler.lisp.

Function: sw-transaction? ()

Return true if inside a software transaction.

Package

stmx.

Source

classes.lisp.

Function: symbol-package-or-fail (symbol)
Package

stmx.

Source

tstruct.lisp.

Function: tappend (&rest tlists)

Construct a new tlist by concatenating the TLIST arguments

Package

stmx.util.

Source

tcons-list.lisp.

Function: tappend-lists (&rest lists)

Construct a new tlist by concatenating the LIST arguments

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcadddr (tlist)

Return the CAR of the CDDDR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcadddr) (tlist)

Set the CAR of the CDDDR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tcddddr (tlist)

Return the CDR of the CDDDR of a TLIST.

Package

stmx.util.

Source

tcons-list.lisp.

Function: (setf tcddddr) (tlist)

Set the CDR of the CDDDR of a TLIST.
This function should always be executed inside an STMX atomic block.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tchannel-back-of (p)
Package

stmx.util.

Source

tchannel.lisp.

Function: tcons-first (instance)
Setf Expander: (setf tcons-first) (instance)
Package

stmx.util.

Source

tcons.lisp.

Function: tcons-rest (instance)
Setf Expander: (setf tcons-rest) (instance)
Package

stmx.util.

Source

tcons.lisp.

Function: tldiff (tlist object)

Return a new tlist, whose elements are those of TLIST that appear before OBJECT. If OBJECT is not a tail of TLIST, a copy of TLIST is returned. TLIST must be a proper tlist or a dotted tlist.

Package

stmx.util.

Source

tcons-list.lisp.

Function: tlistp (object)

Return true if OBJECT is a TLIST, and NIL otherwise.

Package

stmx.util.

Source

tcons.lisp.

Reader: tlog-after-commit (instance)
Writer: (setf tlog-after-commit) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

after-commit.

Reader: tlog-before-commit (instance)
Writer: (setf tlog-before-commit) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

before-commit.

Reader: tlog-lock (instance)
Writer: (setf tlog-lock) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

lock.

Reader: tlog-locked (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

locked.

Function: tlog-p (object)
Package

stmx.

Source

classes.lisp.

Reader: tlog-parent (instance)
Writer: (setf tlog-parent) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

parent.

Reader: tlog-prevent-sleep (instance)
Writer: (setf tlog-prevent-sleep) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

prevent-sleep.

Reader: tlog-read-version (instance)
Writer: (setf tlog-read-version) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

read-version.

Reader: tlog-reads (instance)
Writer: (setf tlog-reads) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

reads.

Reader: tlog-semaphore (instance)
Writer: (setf tlog-semaphore) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

semaphore.

Reader: tlog-writes (instance)
Writer: (setf tlog-writes) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

writes.

Function: tnreconc (x y)

Return (TNCONC (TNREVERSE X) Y).

Package

stmx.util.

Source

tcons-list.lisp.

Function: topological-sort (elements constraints tie-breaker error-msg)
Package

stmx.lang.

Source

class-precedence-list.lisp.

Function: tport-empty? (p)
Package

stmx.util.

Source

tchannel.lisp.

Function: trevappend (x y)

Return (tappend (treverse x) y).

Package

stmx.util.

Source

tcons-list.lisp.

Function: trplaca (tcons x)

Change the TCAR of TCONS to X and return the TCONS.

Package

stmx.util.

Source

tcons.lisp.

Function: trplacd (tcons x)

Change the TCDR of TCONS to X and return the TCONS.

Package

stmx.util.

Source

tcons.lisp.

Function: try-lock-tvar (var)

Try to lock VAR. Return T if locked successfully, otherwise return NIL.

Package

stmx.

Source

tvar-fwd.lisp.

Function: try-lock-tvars (writes locked log)

Optionally sort WRITES in (tvar> ...) order,
then non-blocking acquire their locks in such order.
Reason: acquiring in unspecified order may cause livelock, as two transactions may repeatedly try acquiring the same two TVARs in opposite order.

Return T if all VARS were locked successfully.
After return, LOCKED will contain all TXPAIR entries of locked VARS.

Package

stmx.

Source

commit.lisp.

Function: try-put-$ (var value &optional default)

If VAR is not bound, bind it to VALUE and return (values VALUE t) If VAR is already bound to a value, return (values DEFAULT nil).

Works only inside software transactions.

Package

stmx.

Source

tvar-slot.lisp.

Function: try-take-$ (var &optional default)

Get the value from the transactional variable VAR,
unbind it and and return t and the original value as multiple values. If VAR is not bound to a value, return (values nil DEFAULT).

Works both inside and outside transactions.

Package

stmx.

Source

tvar-slot.lisp.

Function: tstruct-def->all (defstruct struct-def &optional slots)

Return all the forms needed to define a transactional struct

Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def->defmethod-tstruct-def (struct-def)
Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def->defun-accessor (slot struct-def)

Define accessor functions for SLOT of STRUCT-DEF

Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def->defun-accessors (struct-def)

Define all accessor functions for STRUCT-DEF

Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def->defun-constructor (struct-def)

Define the constructor function.
Note: TRANSACTIONAL-STRUCT supports only one constructor

Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def->defun-copier (struct-def)

Define copier function

Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def->defun-functions (struct-def)

Define constructors, copier and accessors functions

Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def->form (struct-def)
Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def->tx-accessors (struct-def)

List %stmx-tstruct hidden accessor functions, in order to declaim them inline

Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def->tx-functions (struct-def)

List %stmx-tstruct hidden constructor and accessors functions, in order to declaim them inline

Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def-all-slots (struct-def)

List all slots-def of a struct, including inherited ones.

Package

stmx.

Source

tstruct.lisp.

Reader: tstruct-def-conc-name (instance)
Writer: (setf tstruct-def-conc-name) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

conc-name.

Reader: tstruct-def-constructor (instance)
Writer: (setf tstruct-def-constructor) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

constructor.

Reader: tstruct-def-copier (instance)
Writer: (setf tstruct-def-copier) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

copier.

Reader: tstruct-def-name (instance)
Writer: (setf tstruct-def-name) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

name.

Reader: tstruct-def-options (instance)
Writer: (setf tstruct-def-options) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

options.

Function: tstruct-def-p (object)
Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def-package (struct-def)
Package

stmx.

Source

tstruct.lisp.

Reader: tstruct-def-slots (instance)
Writer: (setf tstruct-def-slots) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

slots.

Reader: tstruct-def-superclass (instance)
Writer: (setf tstruct-def-superclass) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

superclass.

Function: tstruct-def-tx-conc-name (struct-def)
Package

stmx.

Source

tstruct.lisp.

Function: tstruct-def-tx-constructor (struct-def)

Return the %stmx-tstruct constructor name of a tstruct

Package

stmx.

Source

tstruct.lisp.

Reader: tstruct-def-type (instance)
Writer: (setf tstruct-def-type) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

type.

Function: tstruct-slot->form (slot struct-def)
Package

stmx.

Source

tstruct.lisp.

Function: tstruct-slot-default-accessor (slot struct-def)

Return the accessor default name of given struct slot

Package

stmx.

Source

tstruct.lisp.

Function: tstruct-slot-effective-reader (slot struct-def)

Return the reader name of given struct slot

Package

stmx.

Source

tstruct.lisp.

Function: tstruct-slot-effective-writer (slot struct-def)

Return the writer name of given struct slot

Package

stmx.

Source

tstruct.lisp.

Reader: tstruct-slot-initform (instance)
Writer: (setf tstruct-slot-initform) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

initform.

Function: tstruct-slot-initialize (struct-name slot-name initform)
Package

stmx.

Source

tstruct.lisp.

Function: tstruct-slot-keyword (slot struct-def)

Return the constructor keyword argument of given struct slot

Package

stmx.

Source

tstruct.lisp.

Reader: tstruct-slot-name (instance)
Writer: (setf tstruct-slot-name) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

name.

Reader: tstruct-slot-options (instance)
Writer: (setf tstruct-slot-options) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

options.

Function: tstruct-slot-p (object)
Package

stmx.

Source

tstruct.lisp.

Reader: tstruct-slot-read-only (instance)
Writer: (setf tstruct-slot-read-only) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

read-only.

Reader: tstruct-slot-reader (instance)
Writer: (setf tstruct-slot-reader) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

reader.

Reader: tstruct-slot-transactional (instance)
Writer: (setf tstruct-slot-transactional) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

transactional.

Function: tstruct-slot-tx-accessor (slot struct-def)

Return the %stmx-tstruct accessor symbol of given struct slot

Package

stmx.

Source

tstruct.lisp.

Reader: tstruct-slot-type (instance)
Writer: (setf tstruct-slot-type) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

type.

Reader: tstruct-slot-writer (instance)
Writer: (setf tstruct-slot-writer) (instance)
Package

stmx.

Source

tstruct.lisp.

Target Slot

writer.

Reader: tvar-id (instance)
Package

stmx.

Source

tvar-fwd.lisp.

Target Slot

id.

Function: tvar-p (object)
Package

stmx.

Source

tvar-fwd.lisp.

Function: tvar-unwrap-slot (obj slot-name)
Package

stmx.

Source

tclass.lisp.

Function: tvar-valid-and-own-or-unlocked? (var expected-value log)

Return T if VAR is valid, i.e. its value is EQ to EXPECTED-VAL
and VAR is locked by current thread or unlocked.
Return NIL if VAR has different value, or is locked by some other thread.

Package

stmx.

Source

tvar.lisp.

Function: tvar-valid-and-unlocked? (var expected-value log)

Return T if VAR is valid, i.e. its value is EQ to EXPECTED-VAL
and VAR is unlocked.
Return NIL if VAR has different value, or is locked by some thread (including current thread).

Package

stmx.

Source

tvar.lisp.

Reader: tvar-value (instance)
Writer: (setf tvar-value) (instance)
Package

stmx.

Source

tvar-fwd.lisp.

Target Slot

value.

Function: tvar-value-and-version-or-fail (var)

return as multiple values:
1) the current value of VAR, or +unbound-tvar+ if VAR is not bound to a value. 2) the current version of VAR, excluding any lock bit.
3) 0 if VAR is if free, or 1 if it’s locked or could not be read reliably - for example because the version changed while reading.

Package

stmx.

Source

tvar-fwd.lisp.

Reader: tvar-version (instance)
Writer: (setf tvar-version) (instance)
Package

stmx.

Source

tvar-fwd.lisp.

Target Slot

version.

Reader: tvar-waiting-for (instance)
Writer: (setf tvar-waiting-for) (instance)
Package

stmx.

Source

tvar-fwd.lisp.

Target Slot

waiting-for.

Reader: tvar-waiting-lock (instance)
Package

stmx.

Source

tvar-fwd.lisp.

Target Slot

waiting-lock.

Function: tvar-wrap-slot (obj slot-name)
Package

stmx.

Source

tclass.lisp.

Function: tvar> (var1 var2)

Compare var1 and var2 with respect to age: newer tvars usually have larger tvar-id and are considered "larger". Returns (> (tvar-id var1) (tvar-id var2)).

Package

stmx.

Source

commit.lisp.

Function: tx-read-of (var log)

If VAR’s value is stored in writes of transaction LOG, return the stored value. Otherwise, validate VAR version, add VAR into the reads of transaction LOG, and return (raw-value-of VAR). If VAR version validation fails, call (rerun).

TX-READ-OF is an internal function called by ($ VAR) and by reading TOBJs slots.

Package

stmx.

Source

tvar.lisp.

Function: tx-write-of (value var log)

Store in transaction LOG the writing of VALUE into VAR; return VALUE.

TX-WRITE-OF is an internal function called by (SETF ($ VAR) VALUE) and by writing TOBJs slots.

Package

stmx.

Source

tvar.lisp.

Reader: txfifo-back (instance)
Writer: (setf txfifo-back) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

back.

Reader: txfifo-front (instance)
Writer: (setf txfifo-front) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

front.

Function: txfifo-p (object)
Package

stmx.

Source

classes.lisp.

Function: txhash-mask (vec-len)

Return the bitmask to use for hash indexes.

Package

stmx.

Source

txhash.lisp.

Function: txhash-subscript (hash-code vec &optional vec-len)

Return the array subscript in HASH corresponding to TXHASH.

Package

stmx.

Source

txhash.lisp.

Reader: txhash-table-count (instance)
Writer: (setf txhash-table-count) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

count.

Function: txhash-table-p (object)
Package

stmx.

Source

classes.lisp.

Reader: txhash-table-pool (instance)
Writer: (setf txhash-table-pool) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

pool.

Reader: txhash-table-vec (instance)
Writer: (setf txhash-table-vec) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

vec.

Function: txpair (&key key value next rest)
Package

stmx.

Source

classes.lisp.

Reader: txpair-key (instance)
Writer: (setf txpair-key) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

key.

Reader: txpair-next (instance)
Writer: (setf txpair-next) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

next.

Function: txpair-p (object)
Package

stmx.

Source

classes.lisp.

Reader: txpair-rest (instance)
Writer: (setf txpair-rest) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

rest.

Reader: txpair-value (instance)
Writer: (setf txpair-value) (instance)
Package

stmx.

Source

classes.lisp.

Target Slot

value.

Function: typespec-allows? (type typespec)

Return T if TYPESPEC is compatible with TYPE, i.e. if:
* TYPESPEC is equal to TYPE
* TYPESPEC is equal to (OR ... TYPESPEC-I ...) and at least one TYPESPEC-I is compatible with TYPE * TYPESPEC is equal to (AND ... TYPESPEC-I ...) and all TYPESPEC-I are compatible with TYPE. Otherwise return NIL.

Package

stmx.

Source

tclass.lisp.

Function: unbound-slot-error (class instance slot)

Signal an unbound-slot error and allow the user to continue by specifying or storing a value.

Package

stmx.

Source

tslot.lisp.

Function: unbound-tvar-error (var)

Signal an unbound-slot error and allow the user to continue by specifying or storing a value.

Package

stmx.

Source

tvar.lisp.

Function: undefine-method (generic-func-name class-name)

Remove from GENERIC-FUNC-NAME the method specialized for CLASS-NAME

Package

stmx.

Source

tclass.lisp.

Function: undefine-method-before (generic-func-name class-name)

Remove from GENERIC-FUNC-NAME the method qualified :BEFORE and specialized for CLASS-NAME

Package

stmx.

Source

tclass.lisp.

Function: unlisten-tvar (var log)

Remove LOG from VAR’s waiting list, so that LOG will *not* be notified anymore if VAR changes.

Package

stmx.

Source

tvar.lisp.

Function: unlisten-tvars-of (log)

Un-listen on tvars, i.e. deregister not to get notifications if they change.

Package

stmx.

Source

tlog.lisp.

Function: unlock-tvar (var)

Unlock VAR. always return NIL.

Package

stmx.

Source

tvar-fwd.lisp.

Function: unlock-tvars (locked)

Release vars in LOCKED in same order of acquisition.

Package

stmx.

Source

commit.lisp.

Function: valid-and-own-or-unlocked? (log)

Return t if LOG is valid and unlocked, i.e. it contains an up-to-date view of TVARs that were read during the transaction and none of them is locked by **other** threads.

Package

stmx.

Source

commit.lisp.

Function: valid-and-unlocked? (log)

Return t if LOG is valid and unlocked, i.e. it contains an up-to-date view of TVARs that were read during the transaction and none of them is locked, not even by the current thread.

Package

stmx.

Source

commit.lisp.

Function: valid? (log)

Return t if LOG is valid, i.e. it contains an up-to-date view of TVARs that were read during the transaction.

Package

stmx.

Source

commit.lisp.

Function: validate-current-thread ()
Package

stmx.

Source

tlog.lisp.

Function: visit-tree (function tree &optional result)
Package

stmx.lang.

Source

macro.lisp.

Function: wait-once (log)

Sleep, i.e. wait for relevant TVARs to change.
Return T if slept, or NIL if some TVAR definitely changed before sleeping.

Package

stmx.

Source

tlog.lisp.

Function: wait-tlog (log)

Wait until the TVARs read during transaction have changed. Return T.

Package

stmx.

Source

tlog.lisp.


6.2.6 Generic functions

Generic Reader: back-of (object)
Package

stmx.util.

Methods
Reader Method: back-of ((tchannel tchannel))

automatically generated reader method

Source

tchannel.lisp.

Target Slot

back.

Reader Method: back-of ((tfifo tfifo))

automatically generated reader method

Source

tfifo.lisp.

Target Slot

back.

Generic Writer: (setf back-of) (object)
Package

stmx.util.

Methods
Writer Method: (setf back-of) ((tchannel tchannel))

automatically generated writer method

Source

tchannel.lisp.

Target Slot

back.

Writer Method: (setf back-of) ((tfifo tfifo))

automatically generated writer method

Source

tfifo.lisp.

Target Slot

back.

Generic Reader: channel-of (object)
Package

stmx.util.

Methods
Reader Method: channel-of ((tport tport))

automatically generated reader method

Source

tchannel.lisp.

Target Slot

channel.

Generic Reader: color-of (object)
Package

stmx.util.

Methods
Reader Method: color-of ((rbnode rbnode))

automatically generated reader method

Source

rbmap.lisp.

Target Slot

color.

Generic Writer: (setf color-of) (object)
Package

stmx.util.

Methods
Writer Method: (setf color-of) ((rbnode rbnode))

automatically generated writer method

Source

rbmap.lisp.

Target Slot

color.

Generic Reader: count-of (object)
Package

stmx.util.

Methods
Reader Method: count-of ((gmap gmap))

automatically generated reader method

Source

gmap.lisp.

Target Slot

count.

Generic Reader: front-of (object)
Package

stmx.util.

Methods
Reader Method: front-of ((tport tport))

automatically generated reader method

Source

tchannel.lisp.

Target Slot

front.

Reader Method: front-of ((tfifo tfifo))

automatically generated reader method

Source

tfifo.lisp.

Target Slot

front.

Generic Writer: (setf front-of) (object)
Package

stmx.util.

Methods
Writer Method: (setf front-of) ((tport tport))

automatically generated writer method

Source

tchannel.lisp.

Target Slot

front.

Writer Method: (setf front-of) ((tfifo tfifo))

automatically generated writer method

Source

tfifo.lisp.

Target Slot

front.

Generic Function: ghash/new-pair (hash key value next)

Allocate a GHASH-PAIR, initialize it with KEY, VALUE and NEXT and return it.

Package

stmx.util.

Source

ghash-table.lisp.

Methods
Method: ghash/new-pair ((hash thash-table) key value next)
Source

thash-table.lisp.

Method: ghash/new-pair ((hash ghash-table) key value next)
Generic Function: ghash/new-vec (hash capacity)

Allocate a new GHASH-VECTOR with length = CAPACITY, initialize all its elements to NIL and return it.

Package

stmx.util.

Source

ghash-table.lisp.

Methods
Method: ghash/new-vec ((hash thash-table) capacity)
Source

thash-table.lisp.

Method: ghash/new-vec ((hash ghash-table) capacity)
Generic Function: gmap/copy-node (m node)

Create and return a copy of NODE appropriate for binary tree M. Methods must NOT invoke (incf (_ m count)).

Package

stmx.util.

Source

gmap.lisp.

Methods
Method: gmap/copy-node ((m rbmap) node)
Source

rbmap.lisp.

Generic Function: gmap/new-node (m key value)

Create and return a new node appropriate for binary tree M. Methods must NOT invoke (incf (_ m count)).

Package

stmx.util.

Source

gmap.lisp.

Methods
Method: gmap/new-node ((m tmap) key value)
Source

tmap.lisp.

Method: gmap/new-node ((m rbmap) key value)
Source

rbmap.lisp.

Generic Function: gmap/rebalance-after-insert (m child stack)

Rebalance binary tree M after inserting CHILD.

Package

stmx.util.

Source

gmap.lisp.

Methods
Method: gmap/rebalance-after-insert ((m rbmap) child stack)

Rebalance red-black-tree M after inserting CHILD.

Source

rbmap.lisp.

Generic Function: gmap/remove-at (m stack)

Remove (first STACK) from binary tree M and rebalance it.
Methods are supposed to explicitly (setf (_ m root) ...) when needed, but must NOT invoke (decf (_ m count)).

Package

stmx.util.

Source

gmap.lisp.

Methods
Method: gmap/remove-at ((m rbmap) stack)

Remove (first STACK) from red-black tree M and rebalance it.

Source

rbmap.lisp.

Generic Reader: key-of (object)
Package

stmx.util.

Methods
Reader Method: key-of ((gmap-node gmap-node))

automatically generated reader method

Source

gmap.lisp.

Target Slot

key.

Reader Method: key-of ((bheap bheap))

automatically generated reader method

Source

bheap.lisp.

Target Slot

key.

Generic Writer: (setf key-of) (object)
Package

stmx.util.

Methods
Writer Method: (setf key-of) ((gmap-node gmap-node))

automatically generated writer method

Source

gmap.lisp.

Target Slot

key.

Generic Reader: left-of (object)
Package

stmx.util.

Methods
Reader Method: left-of ((gmap-node gmap-node))

automatically generated reader method

Source

gmap.lisp.

Target Slot

left.

Generic Writer: (setf left-of) (object)
Package

stmx.util.

Methods
Writer Method: (setf left-of) ((gmap-node gmap-node))

automatically generated writer method

Source

gmap.lisp.

Target Slot

left.

Generic Reader: length-of (object)
Package

stmx.util.

Methods
Reader Method: length-of ((bheap bheap))

automatically generated reader method

Source

bheap.lisp.

Target Slot

length.

Generic Writer: (setf length-of) (object)
Package

stmx.util.

Methods
Writer Method: (setf length-of) ((bheap bheap))

automatically generated writer method

Source

bheap.lisp.

Target Slot

length.

Generic Reader: pred-function-of (object)
Package

stmx.util.

Methods
Reader Method: pred-function-of ((gmap gmap))

automatically generated reader method

Source

gmap.lisp.

Target Slot

pred-func.

Generic Reader: pred-of (object)
Package

stmx.util.

Methods
Reader Method: pred-of ((gmap gmap))

automatically generated reader method

Source

gmap.lisp.

Target Slot

pred-sym.

Reader Method: pred-of ((bheap bheap))

automatically generated reader method

Source

bheap.lisp.

Target Slot

pred.

Generic Function: print-gmap (stream m)
Package

stmx.util.

Methods
Method: print-gmap (stream m)
Source

gmap.lisp.

Generic Function: print-gmap-node (stream node &optional depth)
Package

stmx.util.

Source

gmap.lisp.

Methods
Method: print-gmap-node (stream (node rbnode) &optional depth)
Source

rbmap.lisp.

Method: print-gmap-node (stream (node gmap-node) &optional depth)
Method: print-gmap-node (stream (node null) &optional depth)
Generic Function: print-object-contents (stream obj)
Package

stmx.util.

Source

print.lisp.

Methods
Method: print-object-contents (stream (m gmap))
Source

gmap.lisp.

Method: print-object-contents (stream (node gmap-node))
Source

gmap.lisp.

Method: print-object-contents (stream (obj hash-table))
Method: print-object-contents (stream obj)
Method: print-object-contents ((stream (eql nil)) obj)
Generic Reader: right-of (object)
Package

stmx.util.

Methods
Reader Method: right-of ((gmap-node gmap-node))

automatically generated reader method

Source

gmap.lisp.

Target Slot

right.

Generic Writer: (setf right-of) (object)
Package

stmx.util.

Methods
Writer Method: (setf right-of) ((gmap-node gmap-node))

automatically generated writer method

Source

gmap.lisp.

Target Slot

right.

Generic Reader: top-of (object)
Package

stmx.util.

Methods
Reader Method: top-of ((tstack tstack))

automatically generated reader method

Source

tstack.lisp.

Target Slot

top.

Generic Writer: (setf top-of) (object)
Package

stmx.util.

Methods
Writer Method: (setf top-of) ((tstack tstack))

automatically generated writer method

Source

tstack.lisp.

Target Slot

top.

Generic Function: transactional-slot? (slot)
Package

stmx.

Source

tclass.lisp.

Methods
Method: transactional-slot? ((slot slot-definition))

Generic implementation for SLOT-DEFINITION. Return NIL

Reader Method: transactional-slot? ((transactional-effective-slot transactional-effective-slot))

automatically generated reader method

Target Slot

transactional.

Reader Method: transactional-slot? ((transactional-direct-slot transactional-direct-slot))

automatically generated reader method

Target Slot

transactional.

Generic Writer: (setf transactional-slot?) (object)
Package

stmx.

Methods
Writer Method: (setf transactional-slot?) ((transactional-effective-slot transactional-effective-slot))

automatically generated writer method

Source

tclass.lisp.

Target Slot

transactional.

Writer Method: (setf transactional-slot?) ((transactional-direct-slot transactional-direct-slot))

automatically generated writer method

Source

tclass.lisp.

Target Slot

transactional.

Generic Function: tstruct-def (struct-name)

Return a TSTRUCT-DEF containing the definition
of STRUCT-NAME and its direct slots, or NIL if STRUCT-NAME has no slots

Package

stmx.

Source

tstruct.lisp.

Methods
Method: tstruct-def ((type (eql stmx.util:tcons)))
Source

tcons.lisp.

Method: tstruct-def ((struct-name symbol))

Reflectively inspect definition and slots of structure-object class named STRUCT-NAME.

Method: tstruct-def ((struct-name (eql structure-object)))

Instances of STRUCTURE-OBJECT have no slots

Method: tstruct-def ((struct-name (eql t)))

Instances of T have no slots

Method: tstruct-def ((struct-name (eql nil)))

Instances of NIL have no slots

Generic Reader: value-of (object)
Package

stmx.util.

Methods
Reader Method: value-of ((gmap-node gmap-node))

automatically generated reader method

Source

gmap.lisp.

Target Slot

value.

Generic Writer: (setf value-of) (object)
Package

stmx.util.

Methods
Writer Method: (setf value-of) ((gmap-node gmap-node))

automatically generated writer method

Source

gmap.lisp.

Target Slot

value.

Generic Function: value-of (place)
Package

stmx.

Source

tvar-slot.lisp.

Methods
Method: value-of ((var tvar))

Return the value inside a TVAR. Works both outside and inside transactions. Equivalent to ($-slot var)

Generic Function: (setf value-of) (place)
Package

stmx.

Source

tvar-slot.lisp.

Methods
Method: (setf value-of) ((var tvar))

Set the value inside a TVAR. Works both outside and inside transactions. Equivalent to (setf ($-slot var) value)

Generic Reader: vector-of (object)
Package

stmx.util.

Methods
Reader Method: vector-of ((bheap bheap))

automatically generated reader method

Source

bheap.lisp.

Target Slot

vector.

Generic Writer: (setf vector-of) (object)
Package

stmx.util.

Methods
Writer Method: (setf vector-of) ((bheap bheap))

automatically generated writer method

Source

bheap.lisp.

Target Slot

vector.


6.2.7 Conditions

Condition: orelse-error
Package

stmx.

Source

orelse.lisp.

Direct superclasses

control-error.

Condition: rerun-error

Signalled by ORELSE to force re-running the parent transaction in case of conflicts. It is captured by ATOMIC, so it is visible to application code only in case of bugs

Package

stmx.

Source

classes.lisp.

Direct superclasses

stmx.control-error.

Condition: retry-error

Signalled by RETRY. It is captured by ATOMIC and ORELSE, so it is visible to application code only in case of bugs

Package

stmx.

Source

classes.lisp.

Direct superclasses

stmx.control-error.

Condition: stmx.compile-error

Parent class of all STMX compile errors

Package

stmx.

Source

classes.lisp.

Direct superclasses

simple-error.

Condition: stmx.control-error

Parent class of all STMX runtime errors

Package

stmx.

Source

classes.lisp.

Direct superclasses

control-error.

Direct subclasses

6.2.8 Structures

Structure: gv156
Package

stmx.

Source

global-clock.lisp.

Direct superclasses

atomic-counter.

Direct methods

make-load-form.

Direct slots
Slot: nohw-counter
Type

stmx.lang:atomic-counter-slot-type

Initform

0

Readers

gv156-nohw-counter.

Writers

(setf gv156-nohw-counter).

Slot: nohw-flag
Type

bit

Initform

0

Readers

gv156-nohw-flag.

Writers

(setf gv156-nohw-flag).

Slot: pad1
Initform

0

Readers

gv156-pad1.

Writers

(setf gv156-pad1).

Slot: pad2
Initform

0

Readers

gv156-pad2.

Writers

(setf gv156-pad2).

Slot: pad3
Initform

0

Readers

gv156-pad3.

Writers

(setf gv156-pad3).

Slot: pad4
Initform

0

Readers

gv156-pad4.

Writers

(setf gv156-pad4).

Slot: pad5
Initform

0

Readers

gv156-pad5.

Writers

(setf gv156-pad5).

Slot: pad6
Initform

0

Readers

gv156-pad6.

Writers

(setf gv156-pad6).

Slot: pad7
Initform

0

Readers

gv156-pad7.

Writers

(setf gv156-pad7).

Slot: commits
Type

fixnum

Initform

0

Readers

gv156-commits.

Writers

(setf gv156-commits).

Slot: aborts
Type

fixnum

Initform

0

Readers

gv156-aborts.

Writers

(setf gv156-aborts).

Structure: lv156
Package

stmx.

Source

global-clock.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: commits
Type

fixnum

Initform

0

Readers

lv156-commits.

Writers

(setf lv156-commits).

Slot: aborts
Type

fixnum

Initform

0

Readers

lv156-aborts.

Writers

(setf lv156-aborts).

Structure: orelse-tx
Package

stmx.

Source

orelse.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: func
Type

function

Readers

orelse-tx-func.

Writers

(setf orelse-tx-func).

Slot: log
Package

common-lisp.

Type

(or null stmx::tlog)

Readers

orelse-tx-log.

Writers

(setf orelse-tx-log).

Slot: retry
Type

boolean

Readers

orelse-tx-retry.

Writers

(setf orelse-tx-retry).

Structure: tlog

a transaction log (tlog) is a record of the reads and writes
to transactional memory performed during a transaction.

transaction logs are automatically populated by reading and writing transactional objects (tobjs) or transactional variables (tvars),
and are later committed to memory if the transaction completes successfully.

Package

stmx.

Source

classes.lisp.

Direct superclasses

structure-object.

Direct methods
Direct slots
Slot: reads
Type

stmx::txhash-table

Initform

(stmx::make-txhash-table)

Readers

tlog-reads.

Writers

(setf tlog-reads).

Slot: writes
Type

stmx::txhash-table

Initform

(stmx::make-txhash-table)

Readers

tlog-writes.

Writers

(setf tlog-writes).

Slot: locked
Type

stmx::txfifo

Initform

(stmx::make-txfifo)

Readers

tlog-locked.

Writers

This slot is read-only.

Slot: read-version
Type

stmx::version-type

Initform

stmx::+invalid-version+

Readers

tlog-read-version.

Writers

(setf tlog-read-version).

Slot: parent
Type

(or null stmx::tlog)

Readers

tlog-parent.

Writers

(setf tlog-parent).

Slot: lock
Package

bordeaux-threads.

Readers

tlog-lock.

Writers

(setf tlog-lock).

Slot: semaphore
Package

bordeaux-threads.

Readers

tlog-semaphore.

Writers

(setf tlog-semaphore).

Slot: prevent-sleep
Type

boolean

Readers

tlog-prevent-sleep.

Writers

(setf tlog-prevent-sleep).

Slot: before-commit
Type

(or null stmx::tlog-func-vector)

Readers

tlog-before-commit.

Writers

(setf tlog-before-commit).

Slot: after-commit
Type

(or null stmx::tlog-func-vector)

Readers

tlog-after-commit.

Writers

(setf tlog-after-commit).

Structure: tstruct-def
Package

stmx.

Source

tstruct.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: name
Type

symbol

Readers

tstruct-def-name.

Writers

(setf tstruct-def-name).

Slot: conc-name
Type

symbol

Readers

tstruct-def-conc-name.

Writers

(setf tstruct-def-conc-name).

Slot: constructor
Type

symbol

Readers

tstruct-def-constructor.

Writers

(setf tstruct-def-constructor).

Slot: copier
Type

symbol

Readers

tstruct-def-copier.

Writers

(setf tstruct-def-copier).

Slot: type
Package

common-lisp.

Type

(or symbol cons)

Readers

tstruct-def-type.

Writers

(setf tstruct-def-type).

Slot: superclass
Type

symbol

Readers

tstruct-def-superclass.

Writers

(setf tstruct-def-superclass).

Slot: options
Type

list

Readers

tstruct-def-options.

Writers

(setf tstruct-def-options).

Slot: slots
Type

list

Readers

tstruct-def-slots.

Writers

(setf tstruct-def-slots).

Structure: tstruct-slot
Package

stmx.

Source

tstruct.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: name
Type

symbol

Readers

tstruct-slot-name.

Writers

(setf tstruct-slot-name).

Slot: initform
Readers

tstruct-slot-initform.

Writers

(setf tstruct-slot-initform).

Slot: type
Package

common-lisp.

Type

(or symbol cons)

Initform

t

Readers

tstruct-slot-type.

Writers

(setf tstruct-slot-type).

Slot: read-only
Type

boolean

Readers

tstruct-slot-read-only.

Writers

(setf tstruct-slot-read-only).

Slot: reader
Type

symbol

Readers

tstruct-slot-reader.

Writers

(setf tstruct-slot-reader).

Slot: writer
Type

symbol

Readers

tstruct-slot-writer.

Writers

(setf tstruct-slot-writer).

Slot: transactional
Type

boolean

Initform

t

Readers

tstruct-slot-transactional.

Writers

(setf tstruct-slot-transactional).

Slot: options
Type

list

Readers

tstruct-slot-options.

Writers

(setf tstruct-slot-options).

Structure: txfifo
Package

stmx.

Source

classes.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: front
Type

(or null stmx::txpair)

Readers

txfifo-front.

Writers

(setf txfifo-front).

Slot: back
Type

(or null stmx::txpair)

Readers

txfifo-back.

Writers

(setf txfifo-back).

Structure: txhash-table

a hash table specialized for tvar keys.

Package

stmx.

Source

classes.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: vec
Type

simple-vector

Initform

0

Readers

txhash-table-vec.

Writers

(setf txhash-table-vec).

Slot: count
Package

common-lisp.

Type

fixnum

Initform

0

Readers

txhash-table-count.

Writers

(setf txhash-table-count).

Slot: pool
Readers

txhash-table-pool.

Writers

(setf txhash-table-pool).

Structure: txpair
Package

stmx.

Source

classes.lisp.

Direct superclasses

structure-object.

Direct methods

print-object.

Direct slots
Slot: key
Type

stmx:tvar

Readers

txpair-key.

Writers

(setf txpair-key).

Slot: value
Readers

txpair-value.

Writers

(setf txpair-value).

Slot: next
Type

(or null stmx::txpair)

Readers

txpair-next.

Writers

(setf txpair-next).

Slot: rest
Package

common-lisp.

Type

(or null stmx::txpair)

Readers

txpair-rest.

Writers

(setf txpair-rest).


6.2.9 Classes

Class: bheap

Priority queue implemented with a binary min-heap.
Elements that compare smaller will be the first (top) in the heap.

Package

stmx.util.

Source

bheap.lisp.

Direct methods
Direct slots
Slot: vector
Package

common-lisp.

Type

vector

Initform

stmx.util::*empty-vector*

Initargs

:vector

Readers

vector-of.

Writers

(setf vector-of).

Slot: length
Package

common-lisp.

Type

fixnum

Initform

0

Readers

length-of.

Writers

(setf length-of).

Slot: key
Type

function

Initform

(function identity)

Initargs

:key

Readers

key-of.

Writers

This slot is read-only.

Slot: pred
Type

function

Initform

(error "missing :pred argument instantiating ~a or a subclass" (quote stmx.util::bheap))

Initargs

:pred

Readers

pred-of.

Writers

This slot is read-only.

Class: ghash-pair
Package

stmx.util.

Source

ghash-table.lisp.

Direct subclasses

thash-pair.

Direct methods

print-object.

Direct slots
Slot: key
Initargs

:key

Slot: value
Initargs

:value

Slot: next
Type

(or null stmx.util::ghash-pair stmx:tvar)

Initargs

:next

Class: gmap-node

Generic binary tree node

Package

stmx.util.

Source

gmap.lisp.

Direct subclasses

rbnode.

Direct methods
Direct slots
Slot: left
Type

(or null stmx.util::gmap-node stmx:tvar)

Readers

left-of.

Writers

(setf left-of).

Slot: right
Type

(or null stmx.util::gmap-node stmx:tvar)

Readers

right-of.

Writers

(setf right-of).

Slot: key
Initargs

:key

Readers

key-of.

Writers

(setf key-of).

Slot: value
Initargs

:value

Readers

value-of.

Writers

(setf value-of).

Class: rbnode

Node for red-black trees

Package

stmx.util.

Source

rbmap.lisp.

Direct superclasses

gmap-node.

Direct subclasses

tnode.

Direct methods
Direct slots
Slot: color
Type

(or bit stmx:tvar)

Initform

stmx.util::+red+

Readers

color-of.

Writers

(setf color-of).

Class: thash-pair
Package

stmx.util.

Source

thash-table.lisp.

Direct superclasses
Direct methods

initialize-instance.

Direct slots
Slot: key
Slot: value
Slot: next
Class: tnode

Node of transactional sorted map, implemented with red-black tree

Package

stmx.util.

Source

tmap.lisp.

Direct superclasses
Direct methods

initialize-instance.

Direct slots
Slot: left
Slot: right
Slot: key
Slot: value
Slot: color
Class: transactional-direct-slot

The class for direct slots of transactional classes.

Beyond the normal initargs for standard slots, the following
options can be passed to component slots:

:transactional [ T | NIL ] - Specify whether this slot is transactional. - If true, all reads and writes will be transactional.
- If not specified, the default is to make a transactional slot.

Package

stmx.

Source

tclass.lisp.

Direct superclasses

standard-direct-slot-definition.

Direct methods
Direct slots
Slot: transactional
Type

boolean

Initform

t

Initargs

:transactional

Readers

transactional-slot?.

Writers

(setf transactional-slot?).

Class: transactional-effective-slot

The class for effective slots of transactional classes. Exactly analogous to TRANSACTIONAL-DIRECT-SLOT.

Package

stmx.

Source

tclass.lisp.

Direct superclasses

standard-effective-slot-definition.

Direct methods
Direct slots
Slot: transactional
Type

boolean

Initargs

:transactional

Readers

transactional-slot?.

Writers

(setf transactional-slot?).


6.2.10 Types

Type: atomic-t ()

ATOMIC-T must be a type suitable for ATOMIC-COMPARE-AND-SWAP.
STMX assumes it can hold at least NIL and values of type BORDEAUX-THREADS:THREAD.

Package

stmx.lang.

Source

atomic-ops.lisp.

Type: comp-result ()
Package

stmx.util.

Source

misc.lisp.

Type: compiling-transaction ()
Package

stmx.

Source

optimize-for.lisp.

Type: ghash-aref-fun ()
Package

stmx.util.

Source

ghash-table.lisp.

Type: ghash-hash-fun ()
Package

stmx.util.

Source

ghash-table.lisp.

Type: ghash-set-aref-fun ()
Package

stmx.util.

Source

ghash-table.lisp.

Type: ghash-test-fun ()
Package

stmx.util.

Source

ghash-table.lisp.

Type: ghash-vector ()
Package

stmx.util.

Source

ghash-table.lisp.

Type: global-clock/version-type ()
Package

stmx.

Source

global-clock.lisp.

Type: gv1/version-type ()
Package

stmx.

Source

global-clock.lisp.

Type: gv156/version-type ()
Package

stmx.

Source

global-clock.lisp.

Type: gv5/version-type ()
Package

stmx.

Source

global-clock.lisp.

Type: gv6/version-type ()
Package

stmx.

Source

global-clock.lisp.

Type: positive-fixnum ()
Package

stmx.lang.

Source

atomic-counter.lisp.

Type: tlog-func-vector ()
Package

stmx.

Source

classes.lisp.

Type: ufixnum ()
Package

stmx.util.

Source

misc.lisp.

Type: version-type ()
Package

stmx.

Source

global-clock.lisp.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   $   %   (   _   ~  
A   B   C   D   E   F   G   H   I   K   L   M   N   O   P   R   S   T   U   V   W  
Index Entry  Section

$
$: Public ordinary functions
$-notx: Private ordinary functions
$-slot: Public ordinary functions
$-swtx: Private ordinary functions

%
%coerce-to-fun: Private ordinary functions
%copy-tlist-consing: Private macros
%copy-tlist-setf-tvar: Private macros
%enable-#?-syntax: Private ordinary functions
%gv-expand: Private macros
%gv-expand0-f: Private ordinary functions
%gv-nohw-flag: Private macros
%gvx-expand: Private macros
%gvx-expand0-f: Private ordinary functions
%hw-atomic2: Private macros
%impl/names-to-symbol: Private ordinary functions
%make-atomic-counter: Private ordinary functions
%make-fast-vector: Private ordinary functions
%make-mutex: Private ordinary functions
%make-txfifo: Private ordinary functions
%make-txhash-table: Private ordinary functions
%rbmap-rebalance-after-insert: Private ordinary functions
%rbmap-remove-at: Private ordinary functions
%rbmap-remove-black-node-at: Private ordinary functions
%run-sw-atomic: Private ordinary functions
%stmx-impl/notx-set/$-slot: Private ordinary functions
%stmx-impl/notx-set/tcar: Private ordinary functions
%stmx-impl/notx-set/tcdr: Private ordinary functions
%stmx-impl/notx-set/tcons-first: Private ordinary functions
%stmx-impl/notx-set/tcons-rest: Private ordinary functions
%stmx-impl/notx-set/tfirst: Private ordinary functions
%stmx-impl/notx-set/trest: Private ordinary functions
%stmx-impl/notx/$-slot: Private ordinary functions
%stmx-impl/notx/bound-$?: Private ordinary functions
%stmx-impl/notx/peek-$: Private ordinary functions
%stmx-impl/notx/set-tsvref: Private ordinary functions
%stmx-impl/notx/tcar: Private ordinary functions
%stmx-impl/notx/tcdr: Private ordinary functions
%stmx-impl/notx/tcons-first: Private ordinary functions
%stmx-impl/notx/tcons-rest: Private ordinary functions
%stmx-impl/notx/tfirst: Private ordinary functions
%stmx-impl/notx/trest: Private ordinary functions
%stmx-impl/notx/trplaca: Private ordinary functions
%stmx-impl/notx/trplacd: Private ordinary functions
%stmx-impl/notx/try-put-$: Private ordinary functions
%stmx-impl/notx/try-take-$: Private ordinary functions
%stmx-impl/notx/tsvref: Private ordinary functions
%stmx-impl/notx/unbind-$: Private ordinary functions
%stmx-impl/swtx-set/$-slot: Private ordinary functions
%stmx-impl/swtx-set/tcar: Private ordinary functions
%stmx-impl/swtx-set/tcdr: Private ordinary functions
%stmx-impl/swtx-set/tcons-first: Private ordinary functions
%stmx-impl/swtx-set/tcons-rest: Private ordinary functions
%stmx-impl/swtx-set/tfirst: Private ordinary functions
%stmx-impl/swtx-set/trest: Private ordinary functions
%stmx-impl/swtx/$-slot: Private ordinary functions
%stmx-impl/swtx/bound-$?: Private ordinary functions
%stmx-impl/swtx/peek-$: Private ordinary functions
%stmx-impl/swtx/set-tsvref: Private ordinary functions
%stmx-impl/swtx/tcar: Private ordinary functions
%stmx-impl/swtx/tcdr: Private ordinary functions
%stmx-impl/swtx/tcons-first: Private ordinary functions
%stmx-impl/swtx/tcons-rest: Private ordinary functions
%stmx-impl/swtx/tfirst: Private ordinary functions
%stmx-impl/swtx/trest: Private ordinary functions
%stmx-impl/swtx/trplaca: Private ordinary functions
%stmx-impl/swtx/trplacd: Private ordinary functions
%stmx-impl/swtx/try-put-$: Private ordinary functions
%stmx-impl/swtx/try-take-$: Private ordinary functions
%stmx-impl/swtx/tsvref: Private ordinary functions
%stmx-impl/swtx/unbind-$: Private ordinary functions
%stmx-impl/tstruct/make-tcons: Private ordinary functions
%stmx-impl/tstruct/tcons-first: Private ordinary functions
%stmx-impl/tstruct/tcons-rest: Private ordinary functions
%stmx-impl/tx-set/$-slot: Private ordinary functions
%stmx-impl/tx-set/tcar: Private ordinary functions
%stmx-impl/tx-set/tcdr: Private ordinary functions
%stmx-impl/tx-set/tcons-first: Private ordinary functions
%stmx-impl/tx-set/tcons-rest: Private ordinary functions
%stmx-impl/tx-set/tfirst: Private ordinary functions
%stmx-impl/tx-set/trest: Private ordinary functions
%sxhash-equalp: Private macros
%t-assoc: Private macros
%tappend-consing: Private macros
%tappend-setf-tvar: Private macros
%tassoc: Private macros
%tlast0: Private ordinary functions
%tlast1: Private ordinary functions
%tlist-get: Private macros
%tlist-set: Private macros
%trassoc: Private macros
%tvar-version-and-value: Private ordinary functions
%validate-tlog-pool: Private ordinary functions

(
(setf $): Public setf expanders
(setf $-notx): Private setf expanders
(setf $-slot): Public setf expanders
(setf $-swtx): Private setf expanders
(setf %stmx-impl/notx/$-slot): Private ordinary functions
(setf %stmx-impl/notx/tcar): Private ordinary functions
(setf %stmx-impl/notx/tcdr): Private ordinary functions
(setf %stmx-impl/notx/tcons-first): Private ordinary functions
(setf %stmx-impl/notx/tcons-rest): Private ordinary functions
(setf %stmx-impl/notx/tfirst): Private ordinary functions
(setf %stmx-impl/notx/trest): Private ordinary functions
(setf %stmx-impl/swtx/$-slot): Private ordinary functions
(setf %stmx-impl/swtx/tcar): Private ordinary functions
(setf %stmx-impl/swtx/tcdr): Private ordinary functions
(setf %stmx-impl/swtx/tcons-first): Private ordinary functions
(setf %stmx-impl/swtx/tcons-rest): Private ordinary functions
(setf %stmx-impl/swtx/tfirst): Private ordinary functions
(setf %stmx-impl/swtx/trest): Private ordinary functions
(setf %stmx-impl/tstruct/tcons-first): Private ordinary functions
(setf %stmx-impl/tstruct/tcons-rest): Private ordinary functions
(setf atomic-counter-version): Private ordinary functions
(setf back-of): Private generic functions
(setf back-of): Private generic functions
(setf back-of): Private generic functions
(setf color-of): Private generic functions
(setf color-of): Private generic functions
(setf fast-vector-initial-element): Private ordinary functions
(setf fast-vector-len): Private ordinary functions
(setf fast-vector-vec): Private ordinary functions
(setf front-of): Private generic functions
(setf front-of): Private generic functions
(setf front-of): Private generic functions
(setf get-ghash): Public setf expanders
(setf get-gmap): Public ordinary functions
(setf get-hash): Public ordinary functions
(setf gv156-aborts): Private ordinary functions
(setf gv156-commits): Private ordinary functions
(setf gv156-nohw-counter): Private ordinary functions
(setf gv156-nohw-flag): Private ordinary functions
(setf gv156-pad1): Private ordinary functions
(setf gv156-pad2): Private ordinary functions
(setf gv156-pad3): Private ordinary functions
(setf gv156-pad4): Private ordinary functions
(setf gv156-pad5): Private ordinary functions
(setf gv156-pad6): Private ordinary functions
(setf gv156-pad7): Private ordinary functions
(setf gv156-version): Private ordinary functions
(setf id-of): Public generic functions
(setf id-of): Public generic functions
(setf key-of): Private generic functions
(setf key-of): Private generic functions
(setf left-of): Private generic functions
(setf left-of): Private generic functions
(setf length-of): Private generic functions
(setf length-of): Private generic functions
(setf lv156-aborts): Private ordinary functions
(setf lv156-commits): Private ordinary functions
(setf mutex-owner): Public ordinary functions
(setf orelse-tx-func): Private ordinary functions
(setf orelse-tx-log): Private ordinary functions
(setf orelse-tx-retry): Private ordinary functions
(setf raw-value-of): Private ordinary functions
(setf right-of): Private generic functions
(setf right-of): Private generic functions
(setf slot-value-using-class): Public standalone methods
(setf tcaaaar): Public ordinary functions
(setf tcaaadr): Public ordinary functions
(setf tcaaar): Public ordinary functions
(setf tcaadar): Public ordinary functions
(setf tcaaddr): Public ordinary functions
(setf tcaadr): Public ordinary functions
(setf tcaar): Public ordinary functions
(setf tcadaar): Public ordinary functions
(setf tcadadr): Public ordinary functions
(setf tcadar): Public ordinary functions
(setf tcaddar): Public ordinary functions
(setf tcadddr): Private ordinary functions
(setf tcaddr): Public ordinary functions
(setf tcadr): Public ordinary functions
(setf tcar): Public setf expanders
(setf tcdaaar): Public ordinary functions
(setf tcdaadr): Public ordinary functions
(setf tcdaar): Public ordinary functions
(setf tcdadar): Public ordinary functions
(setf tcdaddr): Public ordinary functions
(setf tcdadr): Public ordinary functions
(setf tcdar): Public ordinary functions
(setf tcddaar): Public ordinary functions
(setf tcddadr): Public ordinary functions
(setf tcddar): Public ordinary functions
(setf tcdddar): Public ordinary functions
(setf tcddddr): Private ordinary functions
(setf tcdddr): Public ordinary functions
(setf tcddr): Public ordinary functions
(setf tcdr): Public setf expanders
(setf tcons-first): Private ordinary functions
(setf tcons-rest): Private ordinary functions
(setf teighth): Public ordinary functions
(setf tfifth): Public ordinary functions
(setf tfirst): Public setf expanders
(setf tfourth): Public ordinary functions
(setf tlog-after-commit): Private ordinary functions
(setf tlog-before-commit): Private ordinary functions
(setf tlog-lock): Private ordinary functions
(setf tlog-parent): Private ordinary functions
(setf tlog-prevent-sleep): Private ordinary functions
(setf tlog-read-version): Private ordinary functions
(setf tlog-reads): Private ordinary functions
(setf tlog-semaphore): Private ordinary functions
(setf tlog-writes): Private ordinary functions
(setf tninth): Public ordinary functions
(setf tnth): Public ordinary functions
(setf top-of): Private generic functions
(setf top-of): Private generic functions
(setf transactional-slot?): Private generic functions
(setf transactional-slot?): Private generic functions
(setf transactional-slot?): Private generic functions
(setf trest): Public setf expanders
(setf tsecond): Public ordinary functions
(setf tseventh): Public ordinary functions
(setf tsixth): Public ordinary functions
(setf tstruct-def-conc-name): Private ordinary functions
(setf tstruct-def-constructor): Private ordinary functions
(setf tstruct-def-copier): Private ordinary functions
(setf tstruct-def-name): Private ordinary functions
(setf tstruct-def-options): Private ordinary functions
(setf tstruct-def-slots): Private ordinary functions
(setf tstruct-def-superclass): Private ordinary functions
(setf tstruct-def-type): Private ordinary functions
(setf tstruct-slot-initform): Private ordinary functions
(setf tstruct-slot-name): Private ordinary functions
(setf tstruct-slot-options): Private ordinary functions
(setf tstruct-slot-read-only): Private ordinary functions
(setf tstruct-slot-reader): Private ordinary functions
(setf tstruct-slot-transactional): Private ordinary functions
(setf tstruct-slot-type): Private ordinary functions
(setf tstruct-slot-writer): Private ordinary functions
(setf tsvref): Public setf expanders
(setf ttenth): Public ordinary functions
(setf tthird): Public ordinary functions
(setf tvar-value): Private ordinary functions
(setf tvar-version): Private ordinary functions
(setf tvar-waiting-for): Private ordinary functions
(setf txfifo-back): Private ordinary functions
(setf txfifo-front): Private ordinary functions
(setf txhash-table-count): Private ordinary functions
(setf txhash-table-pool): Private ordinary functions
(setf txhash-table-vec): Private ordinary functions
(setf txpair-key): Private ordinary functions
(setf txpair-next): Private ordinary functions
(setf txpair-rest): Private ordinary functions
(setf txpair-value): Private ordinary functions
(setf value-of): Private generic functions
(setf value-of): Private generic functions
(setf value-of): Private generic functions
(setf value-of): Private generic functions
(setf vector-of): Private generic functions
(setf vector-of): Private generic functions
(setf ~): Public ordinary functions

_
_: Private macros

~
~: Public ordinary functions

A
add-bheap: Private ordinary functions
add-optimized-fun: Private ordinary functions
add-optimized-fun*: Private ordinary functions
add-to-gmap: Public ordinary functions
add-txpair-to-pool: Private ordinary functions
adjust-transactional-slot-form: Private ordinary functions
adjust-transactional-slot-forms: Private ordinary functions
after-commit: Public macros
aif: Public macros
all-features: Public ordinary functions
analyze-struct: Public macros
assoc-feature: Public ordinary functions
atomic: Public macros
atomic-compare-and-swap: Public macros
atomic-counter-p: Private ordinary functions
atomic-counter-version: Private ordinary functions
atomic-decf: Public macros
atomic-incf: Public macros
atomic-pop: Public macros
atomic-push: Private macros
awhen: Public macros

B
back-of: Private generic functions
back-of: Private generic functions
back-of: Private generic functions
before-commit: Public macros
bind-optimized-fun: Private ordinary functions
black?: Private ordinary functions
bound-$?: Public ordinary functions

C
call-after-commit: Public ordinary functions
call-before-commit: Public ordinary functions
cerror-tclass-slot-change: Private ordinary functions
channel-of: Private generic functions
channel-of: Private generic functions
check-tclass-slot-change: Private ordinary functions
check-tclass-slot-name: Private ordinary functions
clear-bheap: Private ordinary functions
clear-features: Private ordinary functions
clear-ghash: Public ordinary functions
clear-gmap: Public ordinary functions
clear-hash: Public ordinary functions
clear-tlog: Private ordinary functions
clear-txfifo: Private ordinary functions
clear-txhash: Private ordinary functions
clos-compute-class-precedence-list: Public ordinary functions
clos-tie-breaker-rule: Private ordinary functions
collect-all-superclasses: Private ordinary functions
collect-superclasses: Private ordinary functions
color-of: Private generic functions
color-of: Private generic functions
commit: Private ordinary functions
commit-nested: Private ordinary functions
commit-sw-update-tvars: Private ordinary functions
compare-bheap-entries: Private ordinary functions
compare-keys: Private ordinary functions
compile-cerror: Private macros
compile-ensure-1-arg: Private ordinary functions
compile-ensure-2-args: Private ordinary functions
compile-error: Private macros
compile-if: Public ordinary functions
compile-if-and: Private ordinary functions
compile-if-eql: Private ordinary functions
compile-if-error: Private ordinary functions
compile-if-eval: Private ordinary functions
compile-if-not: Private ordinary functions
compile-if-or: Private ordinary functions
compile-if-package: Public ordinary functions
compile-if-sbcl-disassem<=32-bit: Private ordinary functions
compile-if-sbcl-lacks-rtm-instructions: Private ordinary functions
compile-if-symbol: Public ordinary functions
compile-if-symbol: Private ordinary functions
compile-if-transformer: Private ordinary functions
compile-log-warn: Private macros
Compiler Macro, tlast: Public compiler macros
Compiler Macro, tlist: Public compiler macros
Compiler Macro, tlist*: Public compiler macros
compute-effective-slot-definition: Public standalone methods
compute-id-of: Private ordinary functions
concat-symbols: Public ordinary functions
cons^: Public ordinary functions
copy-atomic-counter: Private ordinary functions
copy-fast-vector: Private ordinary functions
copy-ghash: Private ordinary functions
copy-gmap: Public ordinary functions
copy-gmap-into: Public ordinary functions
copy-gv156: Private ordinary functions
copy-hash-table: Public ordinary functions
copy-lv156: Private ordinary functions
copy-mutex: Private ordinary functions
copy-orelse-tx: Private ordinary functions
copy-slot-form: Private ordinary functions
copy-talist: Public ordinary functions
copy-tcons: Private ordinary functions
copy-tlist: Private ordinary functions
copy-tlog: Private ordinary functions
copy-tstruct-def: Private ordinary functions
copy-tstruct-slot: Private ordinary functions
copy-ttree: Private ordinary functions
copy-tvar: Private ordinary functions
copy-txfifo: Private ordinary functions
copy-txhash-table: Private ordinary functions
copy-txhash-table-into: Private ordinary functions
copy-txpair: Private ordinary functions
count-of: Private generic functions
count-of: Private generic functions
cpuid: Public ordinary functions
current-tlog: Private macros

D
default-feature: Public ordinary functions
default-features: Public ordinary functions
define-constant-once: Public macros
define-global: Public macros
define-method-initialize-instance: Private macros
define-tstruct-slot-accessor: Private macros
defknown: Private macros
defprint-object: Public macros
detect-thread-support: Private ordinary functions
direct-slot-definition-class: Public standalone methods
do-class-transactional-direct-slots: Private macros
do-class-transactional-effective-slots: Private macros
do-fast-vector: Public macros
do-filter-txfifo: Private macros
do-filter-txfifo-entries: Private macros
do-ghash: Public macros
do-ghash-pairs: Private macros
do-gmap: Public macros
do-gmap*: Private macros
do-hash: Public macros
do-loop-tstruct-defs: Private macros
do-simple-tvector: Public macros
do-tlist: Private macros
do-tree: Public macros
do-tstruct-defs: Private macros
do-txfifo: Private macros
do-txfifo-entries: Private macros
do-txhash: Private macros
do-txhash-entries: Private macros

E
effective-slot-definition-class: Public standalone methods
empty!: Public generic functions
empty!: Public generic functions
empty!: Public generic functions
empty!: Public generic functions
empty!: Public generic functions
empty!: Public generic functions
empty!: Public generic functions
empty-bheap?: Private ordinary functions
empty?: Public generic functions
empty?: Public generic functions
empty?: Public generic functions
empty?: Public generic functions
empty?: Public generic functions
empty?: Public generic functions
empty?: Public generic functions
empty?: Public generic functions
enable-#?-syntax: Public macros
ensure-thread-initial-binding: Public ordinary functions
ensure-thread-initial-bindings: Public ordinary functions
ensure-tlog-after-commit: Private ordinary functions
ensure-tlog-before-commit: Private ordinary functions
ensure-transactional-object-among-superclasses: Private ordinary functions
error-tclass-slot-name: Private ordinary functions
eval-always: Public macros
extend-bheap-vector: Private ordinary functions
extract-declares: Private ordinary functions
extract-docstrings: Private ordinary functions

F
fast-atomic: Public macros
fast-sw-atomic: Private macros
fast-vector-capacity: Public ordinary functions
fast-vector-clear: Public ordinary functions
fast-vector-initial-element: Private ordinary functions
fast-vector-len: Private ordinary functions
fast-vector-length: Public ordinary functions
fast-vector-make-array: Private ordinary functions
fast-vector-p: Private ordinary functions
fast-vector-pop: Public ordinary functions
fast-vector-pop-macro: Public macros
fast-vector-push: Public ordinary functions
fast-vector-push-extend: Public ordinary functions
fast-vector-vec: Private ordinary functions
find-class-or-nil: Private ordinary functions
find-first-rerun-tx: Private ordinary functions
find-ghash-pair: Private ordinary functions
find-key-and-stack: Private ordinary functions
find-slot-by-name: Private ordinary functions
find-slot-form-by-name: Private ordinary functions
find-symbol*: Public ordinary functions
find-txhash: Private ordinary functions
fixnum/=: Public ordinary functions
fixnum<: Public ordinary functions
fixnum=: Public ordinary functions
fixnum>: Public ordinary functions
flip-color: Private ordinary functions
free-cons^: Public ordinary functions
free-list^: Public ordinary functions
free-tlog: Private ordinary functions
free-tx-logs: Private ordinary functions
front-of: Private generic functions
front-of: Private generic functions
front-of: Private generic functions
full?: Public generic functions
full?: Public generic functions
full?: Public generic functions
full?: Public generic functions
full?: Public generic functions
full?: Public generic functions
full?: Public generic functions
Function, $: Public ordinary functions
Function, $-notx: Private ordinary functions
Function, $-slot: Public ordinary functions
Function, $-swtx: Private ordinary functions
Function, %coerce-to-fun: Private ordinary functions
Function, %enable-#?-syntax: Private ordinary functions
Function, %gv-expand0-f: Private ordinary functions
Function, %gvx-expand0-f: Private ordinary functions
Function, %impl/names-to-symbol: Private ordinary functions
Function, %make-atomic-counter: Private ordinary functions
Function, %make-fast-vector: Private ordinary functions
Function, %make-mutex: Private ordinary functions
Function, %make-txfifo: Private ordinary functions
Function, %make-txhash-table: Private ordinary functions
Function, %rbmap-rebalance-after-insert: Private ordinary functions
Function, %rbmap-remove-at: Private ordinary functions
Function, %rbmap-remove-black-node-at: Private ordinary functions
Function, %run-sw-atomic: Private ordinary functions
Function, %stmx-impl/notx-set/$-slot: Private ordinary functions
Function, %stmx-impl/notx-set/tcar: Private ordinary functions
Function, %stmx-impl/notx-set/tcdr: Private ordinary functions
Function, %stmx-impl/notx-set/tcons-first: Private ordinary functions
Function, %stmx-impl/notx-set/tcons-rest: Private ordinary functions
Function, %stmx-impl/notx-set/tfirst: Private ordinary functions
Function, %stmx-impl/notx-set/trest: Private ordinary functions
Function, %stmx-impl/notx/$-slot: Private ordinary functions
Function, %stmx-impl/notx/bound-$?: Private ordinary functions
Function, %stmx-impl/notx/peek-$: Private ordinary functions
Function, %stmx-impl/notx/set-tsvref: Private ordinary functions
Function, %stmx-impl/notx/tcar: Private ordinary functions
Function, %stmx-impl/notx/tcdr: Private ordinary functions
Function, %stmx-impl/notx/tcons-first: Private ordinary functions
Function, %stmx-impl/notx/tcons-rest: Private ordinary functions
Function, %stmx-impl/notx/tfirst: Private ordinary functions
Function, %stmx-impl/notx/trest: Private ordinary functions
Function, %stmx-impl/notx/trplaca: Private ordinary functions
Function, %stmx-impl/notx/trplacd: Private ordinary functions
Function, %stmx-impl/notx/try-put-$: Private ordinary functions
Function, %stmx-impl/notx/try-take-$: Private ordinary functions
Function, %stmx-impl/notx/tsvref: Private ordinary functions
Function, %stmx-impl/notx/unbind-$: Private ordinary functions
Function, %stmx-impl/swtx-set/$-slot: Private ordinary functions
Function, %stmx-impl/swtx-set/tcar: Private ordinary functions
Function, %stmx-impl/swtx-set/tcdr: Private ordinary functions
Function, %stmx-impl/swtx-set/tcons-first: Private ordinary functions
Function, %stmx-impl/swtx-set/tcons-rest: Private ordinary functions
Function, %stmx-impl/swtx-set/tfirst: Private ordinary functions
Function, %stmx-impl/swtx-set/trest: Private ordinary functions
Function, %stmx-impl/swtx/$-slot: Private ordinary functions
Function, %stmx-impl/swtx/bound-$?: Private ordinary functions
Function, %stmx-impl/swtx/peek-$: Private ordinary functions
Function, %stmx-impl/swtx/set-tsvref: Private ordinary functions
Function, %stmx-impl/swtx/tcar: Private ordinary functions
Function, %stmx-impl/swtx/tcdr: Private ordinary functions
Function, %stmx-impl/swtx/tcons-first: Private ordinary functions
Function, %stmx-impl/swtx/tcons-rest: Private ordinary functions
Function, %stmx-impl/swtx/tfirst: Private ordinary functions
Function, %stmx-impl/swtx/trest: Private ordinary functions
Function, %stmx-impl/swtx/trplaca: Private ordinary functions
Function, %stmx-impl/swtx/trplacd: Private ordinary functions
Function, %stmx-impl/swtx/try-put-$: Private ordinary functions
Function, %stmx-impl/swtx/try-take-$: Private ordinary functions
Function, %stmx-impl/swtx/tsvref: Private ordinary functions
Function, %stmx-impl/swtx/unbind-$: Private ordinary functions
Function, %stmx-impl/tstruct/make-tcons: Private ordinary functions
Function, %stmx-impl/tstruct/tcons-first: Private ordinary functions
Function, %stmx-impl/tstruct/tcons-rest: Private ordinary functions
Function, %stmx-impl/tx-set/$-slot: Private ordinary functions
Function, %stmx-impl/tx-set/tcar: Private ordinary functions
Function, %stmx-impl/tx-set/tcdr: Private ordinary functions
Function, %stmx-impl/tx-set/tcons-first: Private ordinary functions
Function, %stmx-impl/tx-set/tcons-rest: Private ordinary functions
Function, %stmx-impl/tx-set/tfirst: Private ordinary functions
Function, %stmx-impl/tx-set/trest: Private ordinary functions
Function, %tlast0: Private ordinary functions
Function, %tlast1: Private ordinary functions
Function, %tvar-version-and-value: Private ordinary functions
Function, %validate-tlog-pool: Private ordinary functions
Function, (setf %stmx-impl/tstruct/tcons-first): Private ordinary functions
Function, (setf %stmx-impl/tstruct/tcons-rest): Private ordinary functions
Function, (setf atomic-counter-version): Private ordinary functions
Function, (setf fast-vector-initial-element): Private ordinary functions
Function, (setf fast-vector-len): Private ordinary functions
Function, (setf fast-vector-vec): Private ordinary functions
Function, (setf get-gmap): Public ordinary functions
Function, (setf get-hash): Public ordinary functions
Function, (setf gv156-aborts): Private ordinary functions
Function, (setf gv156-commits): Private ordinary functions
Function, (setf gv156-nohw-counter): Private ordinary functions
Function, (setf gv156-nohw-flag): Private ordinary functions
Function, (setf gv156-pad1): Private ordinary functions
Function, (setf gv156-pad2): Private ordinary functions
Function, (setf gv156-pad3): Private ordinary functions
Function, (setf gv156-pad4): Private ordinary functions
Function, (setf gv156-pad5): Private ordinary functions
Function, (setf gv156-pad6): Private ordinary functions
Function, (setf gv156-pad7): Private ordinary functions
Function, (setf gv156-version): Private ordinary functions
Function, (setf lv156-aborts): Private ordinary functions
Function, (setf lv156-commits): Private ordinary functions
Function, (setf mutex-owner): Public ordinary functions
Function, (setf orelse-tx-func): Private ordinary functions
Function, (setf orelse-tx-log): Private ordinary functions
Function, (setf orelse-tx-retry): Private ordinary functions
Function, (setf raw-value-of): Private ordinary functions
Function, (setf tcaaaar): Public ordinary functions
Function, (setf tcaaadr): Public ordinary functions
Function, (setf tcaaar): Public ordinary functions
Function, (setf tcaadar): Public ordinary functions
Function, (setf tcaaddr): Public ordinary functions
Function, (setf tcaadr): Public ordinary functions
Function, (setf tcaar): Public ordinary functions
Function, (setf tcadaar): Public ordinary functions
Function, (setf tcadadr): Public ordinary functions
Function, (setf tcadar): Public ordinary functions
Function, (setf tcaddar): Public ordinary functions
Function, (setf tcadddr): Private ordinary functions
Function, (setf tcaddr): Public ordinary functions
Function, (setf tcadr): Public ordinary functions
Function, (setf tcdaaar): Public ordinary functions
Function, (setf tcdaadr): Public ordinary functions
Function, (setf tcdaar): Public ordinary functions
Function, (setf tcdadar): Public ordinary functions
Function, (setf tcdaddr): Public ordinary functions
Function, (setf tcdadr): Public ordinary functions
Function, (setf tcdar): Public ordinary functions
Function, (setf tcddaar): Public ordinary functions
Function, (setf tcddadr): Public ordinary functions
Function, (setf tcddar): Public ordinary functions
Function, (setf tcdddar): Public ordinary functions
Function, (setf tcddddr): Private ordinary functions
Function, (setf tcdddr): Public ordinary functions
Function, (setf tcddr): Public ordinary functions
Function, (setf teighth): Public ordinary functions
Function, (setf tfifth): Public ordinary functions
Function, (setf tfourth): Public ordinary functions
Function, (setf tlog-after-commit): Private ordinary functions
Function, (setf tlog-before-commit): Private ordinary functions
Function, (setf tlog-lock): Private ordinary functions
Function, (setf tlog-parent): Private ordinary functions
Function, (setf tlog-prevent-sleep): Private ordinary functions
Function, (setf tlog-read-version): Private ordinary functions
Function, (setf tlog-reads): Private ordinary functions
Function, (setf tlog-semaphore): Private ordinary functions
Function, (setf tlog-writes): Private ordinary functions
Function, (setf tninth): Public ordinary functions
Function, (setf tnth): Public ordinary functions
Function, (setf tsecond): Public ordinary functions
Function, (setf tseventh): Public ordinary functions
Function, (setf tsixth): Public ordinary functions
Function, (setf tstruct-def-conc-name): Private ordinary functions
Function, (setf tstruct-def-constructor): Private ordinary functions
Function, (setf tstruct-def-copier): Private ordinary functions
Function, (setf tstruct-def-name): Private ordinary functions
Function, (setf tstruct-def-options): Private ordinary functions
Function, (setf tstruct-def-slots): Private ordinary functions
Function, (setf tstruct-def-superclass): Private ordinary functions
Function, (setf tstruct-def-type): Private ordinary functions
Function, (setf tstruct-slot-initform): Private ordinary functions
Function, (setf tstruct-slot-name): Private ordinary functions
Function, (setf tstruct-slot-options): Private ordinary functions
Function, (setf tstruct-slot-read-only): Private ordinary functions
Function, (setf tstruct-slot-reader): Private ordinary functions
Function, (setf tstruct-slot-transactional): Private ordinary functions
Function, (setf tstruct-slot-type): Private ordinary functions
Function, (setf tstruct-slot-writer): Private ordinary functions
Function, (setf ttenth): Public ordinary functions
Function, (setf tthird): Public ordinary functions
Function, (setf tvar-value): Private ordinary functions
Function, (setf tvar-version): Private ordinary functions
Function, (setf tvar-waiting-for): Private ordinary functions
Function, (setf txfifo-back): Private ordinary functions
Function, (setf txfifo-front): Private ordinary functions
Function, (setf txhash-table-count): Private ordinary functions
Function, (setf txhash-table-pool): Private ordinary functions
Function, (setf txhash-table-vec): Private ordinary functions
Function, (setf txpair-key): Private ordinary functions
Function, (setf txpair-next): Private ordinary functions
Function, (setf txpair-rest): Private ordinary functions
Function, (setf txpair-value): Private ordinary functions
Function, (setf ~): Public ordinary functions
Function, add-bheap: Private ordinary functions
Function, add-optimized-fun: Private ordinary functions
Function, add-optimized-fun*: Private ordinary functions
Function, add-to-gmap: Public ordinary functions
Function, add-txpair-to-pool: Private ordinary functions
Function, adjust-transactional-slot-form: Private ordinary functions
Function, adjust-transactional-slot-forms: Private ordinary functions
Function, all-features: Public ordinary functions
Function, assoc-feature: Public ordinary functions
Function, atomic-counter-p: Private ordinary functions
Function, atomic-counter-version: Private ordinary functions
Function, bind-optimized-fun: Private ordinary functions
Function, black?: Private ordinary functions
Function, bound-$?: Public ordinary functions
Function, call-after-commit: Public ordinary functions
Function, call-before-commit: Public ordinary functions
Function, cerror-tclass-slot-change: Private ordinary functions
Function, check-tclass-slot-change: Private ordinary functions
Function, check-tclass-slot-name: Private ordinary functions
Function, clear-bheap: Private ordinary functions
Function, clear-features: Private ordinary functions
Function, clear-ghash: Public ordinary functions
Function, clear-gmap: Public ordinary functions
Function, clear-hash: Public ordinary functions
Function, clear-tlog: Private ordinary functions
Function, clear-txfifo: Private ordinary functions
Function, clear-txhash: Private ordinary functions
Function, clos-compute-class-precedence-list: Public ordinary functions
Function, clos-tie-breaker-rule: Private ordinary functions
Function, collect-all-superclasses: Private ordinary functions
Function, collect-superclasses: Private ordinary functions
Function, commit: Private ordinary functions
Function, commit-nested: Private ordinary functions
Function, commit-sw-update-tvars: Private ordinary functions
Function, compare-bheap-entries: Private ordinary functions
Function, compare-keys: Private ordinary functions
Function, compile-ensure-1-arg: Private ordinary functions
Function, compile-ensure-2-args: Private ordinary functions
Function, compile-if: Public ordinary functions
Function, compile-if-and: Private ordinary functions
Function, compile-if-eql: Private ordinary functions
Function, compile-if-error: Private ordinary functions
Function, compile-if-eval: Private ordinary functions
Function, compile-if-not: Private ordinary functions
Function, compile-if-or: Private ordinary functions
Function, compile-if-package: Public ordinary functions
Function, compile-if-sbcl-disassem<=32-bit: Private ordinary functions
Function, compile-if-sbcl-lacks-rtm-instructions: Private ordinary functions
Function, compile-if-symbol: Public ordinary functions
Function, compile-if-symbol: Private ordinary functions
Function, compile-if-transformer: Private ordinary functions
Function, compute-id-of: Private ordinary functions
Function, concat-symbols: Public ordinary functions
Function, cons^: Public ordinary functions
Function, copy-atomic-counter: Private ordinary functions
Function, copy-fast-vector: Private ordinary functions
Function, copy-ghash: Private ordinary functions
Function, copy-gmap: Public ordinary functions
Function, copy-gmap-into: Public ordinary functions
Function, copy-gv156: Private ordinary functions
Function, copy-hash-table: Public ordinary functions
Function, copy-lv156: Private ordinary functions
Function, copy-mutex: Private ordinary functions
Function, copy-orelse-tx: Private ordinary functions
Function, copy-slot-form: Private ordinary functions
Function, copy-talist: Public ordinary functions
Function, copy-tcons: Private ordinary functions
Function, copy-tlist: Private ordinary functions
Function, copy-tlog: Private ordinary functions
Function, copy-tstruct-def: Private ordinary functions
Function, copy-tstruct-slot: Private ordinary functions
Function, copy-ttree: Private ordinary functions
Function, copy-tvar: Private ordinary functions
Function, copy-txfifo: Private ordinary functions
Function, copy-txhash-table: Private ordinary functions
Function, copy-txhash-table-into: Private ordinary functions
Function, copy-txpair: Private ordinary functions
Function, cpuid: Public ordinary functions
Function, default-feature: Public ordinary functions
Function, default-features: Public ordinary functions
Function, detect-thread-support: Private ordinary functions
Function, empty-bheap?: Private ordinary functions
Function, ensure-thread-initial-binding: Public ordinary functions
Function, ensure-thread-initial-bindings: Public ordinary functions
Function, ensure-tlog-after-commit: Private ordinary functions
Function, ensure-tlog-before-commit: Private ordinary functions
Function, ensure-transactional-object-among-superclasses: Private ordinary functions
Function, error-tclass-slot-name: Private ordinary functions
Function, extend-bheap-vector: Private ordinary functions
Function, extract-declares: Private ordinary functions
Function, extract-docstrings: Private ordinary functions
Function, fast-vector-capacity: Public ordinary functions
Function, fast-vector-clear: Public ordinary functions
Function, fast-vector-initial-element: Private ordinary functions
Function, fast-vector-len: Private ordinary functions
Function, fast-vector-length: Public ordinary functions
Function, fast-vector-make-array: Private ordinary functions
Function, fast-vector-p: Private ordinary functions
Function, fast-vector-pop: Public ordinary functions
Function, fast-vector-push: Public ordinary functions
Function, fast-vector-push-extend: Public ordinary functions
Function, fast-vector-vec: Private ordinary functions
Function, find-class-or-nil: Private ordinary functions
Function, find-first-rerun-tx: Private ordinary functions
Function, find-ghash-pair: Private ordinary functions
Function, find-key-and-stack: Private ordinary functions
Function, find-slot-by-name: Private ordinary functions
Function, find-slot-form-by-name: Private ordinary functions
Function, find-symbol*: Public ordinary functions
Function, find-txhash: Private ordinary functions
Function, fixnum/=: Public ordinary functions
Function, fixnum<: Public ordinary functions
Function, fixnum=: Public ordinary functions
Function, fixnum>: Public ordinary functions
Function, flip-color: Private ordinary functions
Function, free-cons^: Public ordinary functions
Function, free-list^: Public ordinary functions
Function, free-tlog: Private ordinary functions
Function, free-tx-logs: Private ordinary functions
Function, fwd-traverse-gmap-at: Private ordinary functions
Function, get-atomic-counter: Public ordinary functions
Function, get-atomic-counter-plus-delta: Public ordinary functions
Function, get-bheap: Private ordinary functions
Function, get-feature: Public ordinary functions
Function, get-ghash: Public ordinary functions
Function, get-gmap: Public ordinary functions
Function, get-hash: Public ordinary functions
Function, get-next-id: Private ordinary functions
Function, get-txhash: Private ordinary functions
Function, ghash-keys: Public ordinary functions
Function, ghash-mask: Private ordinary functions
Function, ghash-pairs: Public ordinary functions
Function, ghash-subscript: Private ordinary functions
Function, ghash-table-count: Public ordinary functions
Function, ghash-table-count<=: Private ordinary functions
Function, ghash-table-count>: Private ordinary functions
Function, ghash-table-empty?: Public ordinary functions
Function, ghash-table-hash: Public ordinary functions
Function, ghash-table-test: Public ordinary functions
Function, ghash-values: Public ordinary functions
Function, global-clock/publish-features: Private ordinary functions
Function, gmap-count: Public ordinary functions
Function, gmap-count<=: Private ordinary functions
Function, gmap-count>: Private ordinary functions
Function, gmap-empty?: Public ordinary functions
Function, gmap-keys: Public ordinary functions
Function, gmap-pairs: Public ordinary functions
Function, gmap-pred: Public ordinary functions
Function, gmap-values: Public ordinary functions
Function, gv156-aborts: Private ordinary functions
Function, gv156-commits: Private ordinary functions
Function, gv156-nohw-counter: Private ordinary functions
Function, gv156-nohw-flag: Private ordinary functions
Function, gv156-p: Private ordinary functions
Function, gv156-pad1: Private ordinary functions
Function, gv156-pad2: Private ordinary functions
Function, gv156-pad3: Private ordinary functions
Function, gv156-pad4: Private ordinary functions
Function, gv156-pad5: Private ordinary functions
Function, gv156-pad6: Private ordinary functions
Function, gv156-pad7: Private ordinary functions
Function, gv156-version: Private ordinary functions
Function, gv6/%set-gv1-mode: Private ordinary functions
Function, gv6/%set-gv5-mode: Private ordinary functions
Function, gv6/%update-gv-stat: Private ordinary functions
Function, hash-table-keys: Public ordinary functions
Function, hash-table-pairs: Public ordinary functions
Function, hash-table-values: Public ordinary functions
Function, heapify-bheap: Private ordinary functions
Function, hide-tvars?: Private ordinary functions
Function, hw-transaction-test: Private ordinary functions
Function, hw-transaction?: Private ordinary functions
Function, incf-atomic-counter: Public ordinary functions
Function, int-list>=: Private ordinary functions
Function, intern-feature: Private ordinary functions
Function, invalid?: Private ordinary functions
Function, invoke-after-commit: Private ordinary functions
Function, invoke-before-commit: Private ordinary functions
Function, is-left-gmap-node-child?: Private ordinary functions
Function, is-left-rbnode-child-red?: Private ordinary functions
Function, is-left-rbnode-child?: Private ordinary functions
Function, lambda-list-param-to-arg: Private ordinary functions
Function, lambda-list-param-to-arg-set-p: Private ordinary functions
Function, lambda-list-quote-default-forms: Private ordinary functions
Function, lambda-list-to-args: Private ordinary functions
Function, lisp-version>=: Private ordinary functions
Function, list-class-transactional-direct-slots: Private ordinary functions
Function, list-classes-containing-direct-slots: Private ordinary functions
Function, list-direct-slot-in-superclasses: Private ordinary functions
Function, list-to-tlist: Private ordinary functions
Function, listen-tvar: Private ordinary functions
Function, listen-tvars-of: Private ordinary functions
Function, local-precedence-ordering: Private ordinary functions
Function, lock-elision-supported-p: Public ordinary functions
Function, lock-owner: Private ordinary functions
Function, loop-funcall-on-appendable-vector: Private ordinary functions
Function, lv156-aborts: Private ordinary functions
Function, lv156-commits: Private ordinary functions
Function, lv156-p: Private ordinary functions
Function, make-atomic-counter: Public ordinary functions
Function, make-fast-vector: Public ordinary functions
Function, make-gv156: Private ordinary functions
Function, make-load-form/tstruct-def: Private ordinary functions
Function, make-load-form/tstruct-slot: Private ordinary functions
Function, make-lv156: Private ordinary functions
Function, make-mutex: Public ordinary functions
Function, make-orelse-tx: Private ordinary functions
Function, make-tcons: Private ordinary functions
Function, make-tlist: Public ordinary functions
Function, make-tlog: Private ordinary functions
Function, make-tlog-pool: Private ordinary functions
Function, make-tstruct-def: Private ordinary functions
Function, make-tstruct-slot: Private ordinary functions
Function, make-tvar: Private ordinary functions
Function, make-txfifo: Private ordinary functions
Function, make-txhash-table: Private ordinary functions
Function, map-ghash: Public ordinary functions
Function, map-gmap: Public ordinary functions
Function, map-gmap-from-end: Private ordinary functions
Function, mapappend: Private ordinary functions
Function, max-gmap: Public ordinary functions
Function, merge-hash-tables: Public ordinary functions
Function, merge-tlog-reads: Private ordinary functions
Function, merge-tlog-reads-tx: Private ordinary functions
Function, merge-txhash-tables: Private ordinary functions
Function, min-gmap: Public ordinary functions
Function, mutex-is-free?: Public ordinary functions
Function, mutex-is-own-or-free?: Public ordinary functions
Function, mutex-is-own?: Public ordinary functions
Function, mutex-owner: Public ordinary functions
Function, mutex-p: Private ordinary functions
Function, names-to-symbol: Private ordinary functions
Function, new-or-clear-tlog: Private ordinary functions
Function, new-tlog: Private ordinary functions
Function, new-txpair-from-pool: Private ordinary functions
Function, notify-tlog: Private ordinary functions
Function, notify-tvar: Private ordinary functions
Function, notify-tvar-high-load: Private ordinary functions
Function, orelse-tx-func: Private ordinary functions
Function, orelse-tx-log: Private ordinary functions
Function, orelse-tx-p: Private ordinary functions
Function, orelse-tx-retry: Private ordinary functions
Function, param-quote-default-form: Private ordinary functions
Function, parse-struct-def: Private ordinary functions
Function, parse-struct-def-and-slots: Private ordinary functions
Function, parse-struct-slot: Private ordinary functions
Function, parse-struct-slots: Private ordinary functions
Function, peek-$: Private ordinary functions
Function, put-txfifo: Private ordinary functions
Function, raw-value-of: Private ordinary functions
Function, recording?: Private ordinary functions
Function, red?: Private ordinary functions
Function, rehash-ghash: Private ordinary functions
Function, rehash-txhash: Private ordinary functions
Function, release-mutex: Public ordinary functions
Function, rem-bheap: Private ordinary functions
Function, rem-feature: Private ordinary functions
Function, rem-ghash: Public ordinary functions
Function, rem-gmap: Public ordinary functions
Function, rem-hash: Public ordinary functions
Function, remove-from-gmap: Public ordinary functions
Function, replace-gmap-node: Private ordinary functions
Function, rerun: Private ordinary functions
Function, retry: Public ordinary functions
Function, rev-traverse-gmap-at: Private ordinary functions
Function, rotate-gmap-node-around: Private ordinary functions
Function, rotate-gmap-node-left: Private ordinary functions
Function, rotate-gmap-node-right: Private ordinary functions
Function, run-atomic: Public ordinary functions
Function, run-nonblocking: Private ordinary functions
Function, run-once: Private ordinary functions
Function, run-orelse: Public ordinary functions
Function, run-sw-atomic: Private ordinary functions
Function, set-$: Private ordinary functions
Function, set-$-notx: Private ordinary functions
Function, set-$-swtx: Private ordinary functions
Function, set-assoc: Private ordinary functions
Function, set-assoc*: Private ordinary functions
Function, set-atomic-counter: Public ordinary functions
Function, set-feature: Public ordinary functions
Function, set-features: Public ordinary functions
Function, set-ghash: Public ordinary functions
Function, set-gmap: Public ordinary functions
Function, set-hash: Public ordinary functions
Function, set-svref: Private ordinary functions
Function, set-tsvref: Private ordinary functions
Function, set-tvar-value-and-version: Private ordinary functions
Function, set-txhash: Private ordinary functions
Function, shallow-invalid?: Private ordinary functions
Function, shallow-valid?: Private ordinary functions
Function, sift-down-bheap: Private ordinary functions
Function, sift-up-bheap: Private ordinary functions
Function, simple-tvector: Public ordinary functions
Function, simple-tvector-length: Public ordinary functions
Function, slot-form-name: Private ordinary functions
Function, slot-form-transactional?: Private ordinary functions
Function, some-features: Private ordinary functions
Function, split-string: Private ordinary functions
Function, start-multithreading: Public ordinary functions
Function, start-thread: Public ordinary functions
Function, stmx-internal-error: Private ordinary functions
Function, stmx-internal-error/bug: Private ordinary functions
Function, stmx-internal-error/suggest-bordeaux-threads: Private ordinary functions
Function, string-to-int-list: Private ordinary functions
Function, stringify: Public ordinary functions
Function, sw-transaction?: Private ordinary functions
Function, sxhash-equalp: Public ordinary functions
Function, symbol-name*: Public ordinary functions
Function, symbol-package-or-fail: Private ordinary functions
Function, tacons: Public ordinary functions
Function, tappend: Private ordinary functions
Function, tappend-lists: Private ordinary functions
Function, tassoc: Public ordinary functions
Function, tatom: Public ordinary functions
Function, tcaaaar: Public ordinary functions
Function, tcaaadr: Public ordinary functions
Function, tcaaar: Public ordinary functions
Function, tcaadar: Public ordinary functions
Function, tcaaddr: Public ordinary functions
Function, tcaadr: Public ordinary functions
Function, tcaar: Public ordinary functions
Function, tcadaar: Public ordinary functions
Function, tcadadr: Public ordinary functions
Function, tcadar: Public ordinary functions
Function, tcaddar: Public ordinary functions
Function, tcadddr: Private ordinary functions
Function, tcaddr: Public ordinary functions
Function, tcadr: Public ordinary functions
Function, tcar: Public ordinary functions
Function, tcdaaar: Public ordinary functions
Function, tcdaadr: Public ordinary functions
Function, tcdaar: Public ordinary functions
Function, tcdadar: Public ordinary functions
Function, tcdaddr: Public ordinary functions
Function, tcdadr: Public ordinary functions
Function, tcdar: Public ordinary functions
Function, tcddaar: Public ordinary functions
Function, tcddadr: Public ordinary functions
Function, tcddar: Public ordinary functions
Function, tcdddar: Public ordinary functions
Function, tcddddr: Private ordinary functions
Function, tcdddr: Public ordinary functions
Function, tcddr: Public ordinary functions
Function, tcdr: Public ordinary functions
Function, tcell: Public ordinary functions
Function, tchannel-back-of: Private ordinary functions
Function, tcons: Public ordinary functions
Function, tcons-first: Private ordinary functions
Function, tcons-rest: Private ordinary functions
Function, tconsp: Public ordinary functions
Function, teighth: Public ordinary functions
Function, tendp: Public ordinary functions
Function, tfifo: Public ordinary functions
Function, tfifth: Public ordinary functions
Function, tfirst: Public ordinary functions
Function, tfourth: Public ordinary functions
Function, tlast: Public ordinary functions
Function, tldiff: Private ordinary functions
Function, tlist: Public ordinary functions
Function, tlist*: Public ordinary functions
Function, tlist-length: Public ordinary functions
Function, tlistp: Private ordinary functions
Function, tlog-after-commit: Private ordinary functions
Function, tlog-before-commit: Private ordinary functions
Function, tlog-lock: Private ordinary functions
Function, tlog-locked: Private ordinary functions
Function, tlog-p: Private ordinary functions
Function, tlog-parent: Private ordinary functions
Function, tlog-prevent-sleep: Private ordinary functions
Function, tlog-read-version: Private ordinary functions
Function, tlog-reads: Private ordinary functions
Function, tlog-semaphore: Private ordinary functions
Function, tlog-writes: Private ordinary functions
Function, tninth: Public ordinary functions
Function, tnreconc: Private ordinary functions
Function, tnth: Public ordinary functions
Function, tnthcdr: Public ordinary functions
Function, topological-sort: Private ordinary functions
Function, tpairlis: Public ordinary functions
Function, tport-empty?: Private ordinary functions
Function, transaction-abort: Public ordinary functions
Function, transaction-begin: Public ordinary functions
Function, transaction-end: Public ordinary functions
Function, transaction-rerun-may-succeed-p: Public ordinary functions
Function, transaction-running-p: Public ordinary functions
Function, transaction-supported-p: Public ordinary functions
Function, transaction?: Public ordinary functions
Function, trassoc: Public ordinary functions
Function, trest: Public ordinary functions
Function, trevappend: Private ordinary functions
Function, trplaca: Private ordinary functions
Function, trplacd: Private ordinary functions
Function, try-acquire-mutex: Public ordinary functions
Function, try-lock-tvar: Private ordinary functions
Function, try-lock-tvars: Private ordinary functions
Function, try-put-$: Private ordinary functions
Function, try-take-$: Private ordinary functions
Function, tsecond: Public ordinary functions
Function, tseventh: Public ordinary functions
Function, tsixth: Public ordinary functions
Function, tstack: Public ordinary functions
Function, tstruct-def->all: Private ordinary functions
Function, tstruct-def->defmethod-tstruct-def: Private ordinary functions
Function, tstruct-def->defun-accessor: Private ordinary functions
Function, tstruct-def->defun-accessors: Private ordinary functions
Function, tstruct-def->defun-constructor: Private ordinary functions
Function, tstruct-def->defun-copier: Private ordinary functions
Function, tstruct-def->defun-functions: Private ordinary functions
Function, tstruct-def->form: Private ordinary functions
Function, tstruct-def->tx-accessors: Private ordinary functions
Function, tstruct-def->tx-functions: Private ordinary functions
Function, tstruct-def-all-slots: Private ordinary functions
Function, tstruct-def-conc-name: Private ordinary functions
Function, tstruct-def-constructor: Private ordinary functions
Function, tstruct-def-copier: Private ordinary functions
Function, tstruct-def-name: Private ordinary functions
Function, tstruct-def-options: Private ordinary functions
Function, tstruct-def-p: Private ordinary functions
Function, tstruct-def-package: Private ordinary functions
Function, tstruct-def-slots: Private ordinary functions
Function, tstruct-def-superclass: Private ordinary functions
Function, tstruct-def-tx-conc-name: Private ordinary functions
Function, tstruct-def-tx-constructor: Private ordinary functions
Function, tstruct-def-type: Private ordinary functions
Function, tstruct-slot->form: Private ordinary functions
Function, tstruct-slot-default-accessor: Private ordinary functions
Function, tstruct-slot-effective-reader: Private ordinary functions
Function, tstruct-slot-effective-writer: Private ordinary functions
Function, tstruct-slot-initform: Private ordinary functions
Function, tstruct-slot-initialize: Private ordinary functions
Function, tstruct-slot-keyword: Private ordinary functions
Function, tstruct-slot-name: Private ordinary functions
Function, tstruct-slot-options: Private ordinary functions
Function, tstruct-slot-p: Private ordinary functions
Function, tstruct-slot-read-only: Private ordinary functions
Function, tstruct-slot-reader: Private ordinary functions
Function, tstruct-slot-transactional: Private ordinary functions
Function, tstruct-slot-tx-accessor: Private ordinary functions
Function, tstruct-slot-type: Private ordinary functions
Function, tstruct-slot-writer: Private ordinary functions
Function, tsvref: Public ordinary functions
Function, ttenth: Public ordinary functions
Function, tthird: Public ordinary functions
Function, ttree-equal: Public ordinary functions
Function, ttree-equal-test: Public ordinary functions
Function, ttree-equal-test-not: Public ordinary functions
Function, tvar: Public ordinary functions
Function, tvar-id: Private ordinary functions
Function, tvar-p: Private ordinary functions
Function, tvar-unwrap-slot: Private ordinary functions
Function, tvar-valid-and-own-or-unlocked?: Private ordinary functions
Function, tvar-valid-and-unlocked?: Private ordinary functions
Function, tvar-value: Private ordinary functions
Function, tvar-value-and-version-or-fail: Private ordinary functions
Function, tvar-version: Private ordinary functions
Function, tvar-waiting-for: Private ordinary functions
Function, tvar-waiting-lock: Private ordinary functions
Function, tvar-wrap-slot: Private ordinary functions
Function, tvar>: Private ordinary functions
Function, tx-read-of: Private ordinary functions
Function, tx-write-of: Private ordinary functions
Function, txfifo-back: Private ordinary functions
Function, txfifo-front: Private ordinary functions
Function, txfifo-p: Private ordinary functions
Function, txhash-mask: Private ordinary functions
Function, txhash-subscript: Private ordinary functions
Function, txhash-table-count: Private ordinary functions
Function, txhash-table-p: Private ordinary functions
Function, txhash-table-pool: Private ordinary functions
Function, txhash-table-vec: Private ordinary functions
Function, txpair: Private ordinary functions
Function, txpair-key: Private ordinary functions
Function, txpair-next: Private ordinary functions
Function, txpair-p: Private ordinary functions
Function, txpair-rest: Private ordinary functions
Function, txpair-value: Private ordinary functions
Function, typespec-allows?: Private ordinary functions
Function, unbind-$: Public ordinary functions
Function, unbound-slot-error: Private ordinary functions
Function, unbound-tvar-error: Private ordinary functions
Function, undefine-method: Private ordinary functions
Function, undefine-method-before: Private ordinary functions
Function, unlisten-tvar: Private ordinary functions
Function, unlisten-tvars-of: Private ordinary functions
Function, unlock-tvar: Private ordinary functions
Function, unlock-tvars: Private ordinary functions
Function, valid-and-own-or-unlocked?: Private ordinary functions
Function, valid-and-unlocked?: Private ordinary functions
Function, valid?: Private ordinary functions
Function, validate-current-thread: Private ordinary functions
Function, visit-tree: Private ordinary functions
Function, wait-once: Private ordinary functions
Function, wait-tlog: Private ordinary functions
Function, wait4-thread: Public ordinary functions
Function, ~: Public ordinary functions
fwd-traverse-gmap-at: Private ordinary functions

G
Generic Function, (setf back-of): Private generic functions
Generic Function, (setf color-of): Private generic functions
Generic Function, (setf front-of): Private generic functions
Generic Function, (setf id-of): Public generic functions
Generic Function, (setf key-of): Private generic functions
Generic Function, (setf left-of): Private generic functions
Generic Function, (setf length-of): Private generic functions
Generic Function, (setf right-of): Private generic functions
Generic Function, (setf top-of): Private generic functions
Generic Function, (setf transactional-slot?): Private generic functions
Generic Function, (setf value-of): Private generic functions
Generic Function, (setf value-of): Private generic functions
Generic Function, (setf vector-of): Private generic functions
Generic Function, back-of: Private generic functions
Generic Function, channel-of: Private generic functions
Generic Function, color-of: Private generic functions
Generic Function, count-of: Private generic functions
Generic Function, empty!: Public generic functions
Generic Function, empty?: Public generic functions
Generic Function, front-of: Private generic functions
Generic Function, full?: Public generic functions
Generic Function, ghash/new-pair: Private generic functions
Generic Function, ghash/new-vec: Private generic functions
Generic Function, gmap/copy-node: Private generic functions
Generic Function, gmap/new-node: Private generic functions
Generic Function, gmap/rebalance-after-insert: Private generic functions
Generic Function, gmap/remove-at: Private generic functions
Generic Function, id-of: Public generic functions
Generic Function, key-of: Private generic functions
Generic Function, left-of: Private generic functions
Generic Function, length-of: Private generic functions
Generic Function, peek: Public generic functions
Generic Function, pred-function-of: Private generic functions
Generic Function, pred-of: Private generic functions
Generic Function, print-gmap: Private generic functions
Generic Function, print-gmap-node: Private generic functions
Generic Function, print-object-contents: Private generic functions
Generic Function, put: Public generic functions
Generic Function, right-of: Private generic functions
Generic Function, take: Public generic functions
Generic Function, top-of: Private generic functions
Generic Function, transactional-slot?: Private generic functions
Generic Function, try-put: Public generic functions
Generic Function, try-take: Public generic functions
Generic Function, tstruct-def: Private generic functions
Generic Function, value-of: Private generic functions
Generic Function, value-of: Private generic functions
Generic Function, vector-of: Private generic functions
get-atomic-counter: Public ordinary functions
get-atomic-counter-plus-delta: Public ordinary functions
get-atomic-place: Public macros
get-atomic-place-plus-delta: Public macros
get-bheap: Private ordinary functions
get-feature: Public ordinary functions
get-ghash: Public ordinary functions
get-gmap: Public ordinary functions
get-hash: Public ordinary functions
get-next-id: Private ordinary functions
get-txhash: Private ordinary functions
ghash-keys: Public ordinary functions
ghash-mask: Private ordinary functions
ghash-pairs: Public ordinary functions
ghash-subscript: Private ordinary functions
ghash-table-count: Public ordinary functions
ghash-table-count<=: Private ordinary functions
ghash-table-count>: Private ordinary functions
ghash-table-empty?: Public ordinary functions
ghash-table-hash: Public ordinary functions
ghash-table-test: Public ordinary functions
ghash-values: Public ordinary functions
ghash/new-pair: Private generic functions
ghash/new-pair: Private generic functions
ghash/new-pair: Private generic functions
ghash/new-vec: Private generic functions
ghash/new-vec: Private generic functions
ghash/new-vec: Private generic functions
global-clock/decf-nohw-counter: Private macros
global-clock/features: Private macros
global-clock/get-nohw-counter: Private macros
global-clock/hw/after-abort: Private macros
global-clock/hw/start-read: Private macros
global-clock/hw/start-write: Private macros
global-clock/hw/stat-aborted: Private macros
global-clock/hw/stat-committed: Private macros
global-clock/hw/write: Private macros
global-clock/incf-nohw-counter: Private macros
global-clock/publish-features: Private ordinary functions
global-clock/sw/after-abort: Private macros
global-clock/sw/start-read: Private macros
global-clock/sw/start-write: Private macros
global-clock/sw/stat-aborted: Private macros
global-clock/sw/stat-committed: Private macros
global-clock/sw/write: Private macros
global-clock/valid-read?: Private macros
gmap-count: Public ordinary functions
gmap-count<=: Private ordinary functions
gmap-count>: Private ordinary functions
gmap-empty?: Public ordinary functions
gmap-keys: Public ordinary functions
gmap-pairs: Public ordinary functions
gmap-pred: Public ordinary functions
gmap-values: Public ordinary functions
gmap/copy-node: Private generic functions
gmap/copy-node: Private generic functions
gmap/new-node: Private generic functions
gmap/new-node: Private generic functions
gmap/new-node: Private generic functions
gmap/rebalance-after-insert: Private generic functions
gmap/rebalance-after-insert: Private generic functions
gmap/remove-at: Private generic functions
gmap/remove-at: Private generic functions
gv1/after-abort: Private macros
gv1/decf-nohw-counter: Private macros
gv1/features: Private macros
gv1/get-nohw-counter: Private macros
gv1/hw/after-abort: Private macros
gv1/hw/start-read: Private macros
gv1/hw/start-write: Private macros
gv1/hw/stat-aborted: Private macros
gv1/hw/stat-committed: Private macros
gv1/hw/write: Private macros
gv1/incf-nohw-counter: Private macros
gv1/start-read: Private macros
gv1/start-write: Private macros
gv1/stat-aborted: Private macros
gv1/stat-committed: Private macros
gv1/sw/after-abort: Private macros
gv1/sw/start-read: Private macros
gv1/sw/start-write: Private macros
gv1/sw/stat-aborted: Private macros
gv1/sw/stat-committed: Private macros
gv1/sw/write: Private macros
gv1/valid-read?: Private macros
gv1/write: Private macros
gv156-aborts: Private ordinary functions
gv156-commits: Private ordinary functions
gv156-nohw-counter: Private ordinary functions
gv156-nohw-flag: Private ordinary functions
gv156-p: Private ordinary functions
gv156-pad1: Private ordinary functions
gv156-pad2: Private ordinary functions
gv156-pad3: Private ordinary functions
gv156-pad4: Private ordinary functions
gv156-pad5: Private ordinary functions
gv156-pad6: Private ordinary functions
gv156-pad7: Private ordinary functions
gv156-version: Private ordinary functions
gv5/after-abort: Private macros
gv5/decf-nohw-counter: Private macros
gv5/features: Private macros
gv5/get-nohw-counter: Private macros
gv5/hw/after-abort: Private macros
gv5/hw/start-read: Private macros
gv5/hw/start-write: Private macros
gv5/hw/stat-aborted: Private macros
gv5/hw/stat-committed: Private macros
gv5/hw/write: Private macros
gv5/incf-nohw-counter: Private macros
gv5/start-read: Private macros
gv5/start-write: Private macros
gv5/stat-aborted: Private macros
gv5/stat-committed: Private macros
gv5/sw/after-abort: Private macros
gv5/sw/start-read: Private macros
gv5/sw/start-write: Private macros
gv5/sw/stat-aborted: Private macros
gv5/sw/stat-committed: Private macros
gv5/sw/write: Private macros
gv5/valid-read?: Private macros
gv5/write: Private macros
gv6/%is-gv5-mode?: Private macros
gv6/%set-gv1-mode: Private ordinary functions
gv6/%set-gv5-mode: Private ordinary functions
gv6/%update-gv-stat: Private ordinary functions
gv6/%update-lv-stat: Private macros
gv6/decf-nohw-counter: Private macros
gv6/features: Private macros
gv6/get-nohw-counter: Private macros
gv6/hw/after-abort: Private macros
gv6/hw/start-read: Private macros
gv6/hw/start-write: Private macros
gv6/hw/stat-aborted: Private macros
gv6/hw/stat-committed: Private macros
gv6/hw/write: Private macros
gv6/incf-nohw-counter: Private macros
gv6/stat-aborted: Private macros
gv6/stat-committed: Private macros
gv6/sw/after-abort: Private macros
gv6/sw/start-read: Private macros
gv6/sw/start-write: Private macros
gv6/sw/stat-aborted: Private macros
gv6/sw/stat-committed: Private macros
gv6/sw/write: Private macros
gv6/valid-read?: Private macros
gvx-add-missing: Private macros

H
hash-table-keys: Public ordinary functions
hash-table-pairs: Public ordinary functions
hash-table-values: Public ordinary functions
heapify-bheap: Private ordinary functions
hide-tvars?: Private ordinary functions
hw-atomic2: Public macros
hw-tlog-write-version: Private macros
hw-transaction-abort: Public macros
hw-transaction-begin: Public macros
hw-transaction-end: Public macros
hw-transaction-rerun-may-succeed?: Public macros
hw-transaction-running?: Public macros
hw-transaction-supported-and-running?: Public macros
hw-transaction-supported?: Public macros
hw-transaction-test: Private ordinary functions
hw-transaction?: Private ordinary functions

I
id-of: Public generic functions
id-of: Public generic functions
id-of: Public generic functions
id-of: Public generic functions
if-bind: Public macros
incf-atomic-counter: Public ordinary functions
incf-atomic-place: Public macros
incf-hash-counter: Private macros
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
int-list>=: Private ordinary functions
intern-feature: Private ordinary functions
invalid?: Private ordinary functions
invoke-after-commit: Private ordinary functions
invoke-before-commit: Private ordinary functions
is-left-gmap-node-child?: Private ordinary functions
is-left-rbnode-child-red?: Private ordinary functions
is-left-rbnode-child?: Private ordinary functions

K
key-of: Private generic functions
key-of: Private generic functions
key-of: Private generic functions

L
lambda-list-param-to-arg: Private ordinary functions
lambda-list-param-to-arg-set-p: Private ordinary functions
lambda-list-quote-default-forms: Private ordinary functions
lambda-list-to-args: Private ordinary functions
left-of: Private generic functions
left-of: Private generic functions
length-of: Private generic functions
length-of: Private generic functions
let1: Public macros
lisp-version>=: Private ordinary functions
list-class-transactional-direct-slots: Private ordinary functions
list-classes-containing-direct-slots: Private ordinary functions
list-direct-slot-in-superclasses: Private ordinary functions
list-to-tlist: Private ordinary functions
listen-tvar: Private ordinary functions
listen-tvars-of: Private ordinary functions
local-precedence-ordering: Private ordinary functions
lock-elision-supported-p: Public ordinary functions
lock-owner: Private ordinary functions
log.debug: Public macros
log.debug-gmap: Private macros
log.make-logger: Public macros
log.trace: Public macros
loop-funcall-on-appendable-vector: Private ordinary functions
lv156-aborts: Private ordinary functions
lv156-commits: Private ordinary functions
lv156-p: Private ordinary functions

M
Macro, %copy-tlist-consing: Private macros
Macro, %copy-tlist-setf-tvar: Private macros
Macro, %gv-expand: Private macros
Macro, %gv-nohw-flag: Private macros
Macro, %gvx-expand: Private macros
Macro, %hw-atomic2: Private macros
Macro, %sxhash-equalp: Private macros
Macro, %t-assoc: Private macros
Macro, %tappend-consing: Private macros
Macro, %tappend-setf-tvar: Private macros
Macro, %tassoc: Private macros
Macro, %tlist-get: Private macros
Macro, %tlist-set: Private macros
Macro, %trassoc: Private macros
Macro, after-commit: Public macros
Macro, aif: Public macros
Macro, analyze-struct: Public macros
Macro, atomic: Public macros
Macro, atomic-compare-and-swap: Public macros
Macro, atomic-decf: Public macros
Macro, atomic-incf: Public macros
Macro, atomic-pop: Public macros
Macro, atomic-push: Private macros
Macro, awhen: Public macros
Macro, before-commit: Public macros
Macro, compile-cerror: Private macros
Macro, compile-error: Private macros
Macro, compile-log-warn: Private macros
Macro, current-tlog: Private macros
Macro, define-constant-once: Public macros
Macro, define-global: Public macros
Macro, define-method-initialize-instance: Private macros
Macro, define-tstruct-slot-accessor: Private macros
Macro, defknown: Private macros
Macro, defprint-object: Public macros
Macro, do-class-transactional-direct-slots: Private macros
Macro, do-class-transactional-effective-slots: Private macros
Macro, do-fast-vector: Public macros
Macro, do-filter-txfifo: Private macros
Macro, do-filter-txfifo-entries: Private macros
Macro, do-ghash: Public macros
Macro, do-ghash-pairs: Private macros
Macro, do-gmap: Public macros
Macro, do-gmap*: Private macros
Macro, do-hash: Public macros
Macro, do-loop-tstruct-defs: Private macros
Macro, do-simple-tvector: Public macros
Macro, do-tlist: Private macros
Macro, do-tree: Public macros
Macro, do-tstruct-defs: Private macros
Macro, do-txfifo: Private macros
Macro, do-txfifo-entries: Private macros
Macro, do-txhash: Private macros
Macro, do-txhash-entries: Private macros
Macro, enable-#?-syntax: Public macros
Macro, eval-always: Public macros
Macro, fast-atomic: Public macros
Macro, fast-sw-atomic: Private macros
Macro, fast-vector-pop-macro: Public macros
Macro, get-atomic-place: Public macros
Macro, get-atomic-place-plus-delta: Public macros
Macro, global-clock/decf-nohw-counter: Private macros
Macro, global-clock/features: Private macros
Macro, global-clock/get-nohw-counter: Private macros
Macro, global-clock/hw/after-abort: Private macros
Macro, global-clock/hw/start-read: Private macros
Macro, global-clock/hw/start-write: Private macros
Macro, global-clock/hw/stat-aborted: Private macros
Macro, global-clock/hw/stat-committed: Private macros
Macro, global-clock/hw/write: Private macros
Macro, global-clock/incf-nohw-counter: Private macros
Macro, global-clock/sw/after-abort: Private macros
Macro, global-clock/sw/start-read: Private macros
Macro, global-clock/sw/start-write: Private macros
Macro, global-clock/sw/stat-aborted: Private macros
Macro, global-clock/sw/stat-committed: Private macros
Macro, global-clock/sw/write: Private macros
Macro, global-clock/valid-read?: Private macros
Macro, gv1/after-abort: Private macros
Macro, gv1/decf-nohw-counter: Private macros
Macro, gv1/features: Private macros
Macro, gv1/get-nohw-counter: Private macros
Macro, gv1/hw/after-abort: Private macros
Macro, gv1/hw/start-read: Private macros
Macro, gv1/hw/start-write: Private macros
Macro, gv1/hw/stat-aborted: Private macros
Macro, gv1/hw/stat-committed: Private macros
Macro, gv1/hw/write: Private macros
Macro, gv1/incf-nohw-counter: Private macros
Macro, gv1/start-read: Private macros
Macro, gv1/start-write: Private macros
Macro, gv1/stat-aborted: Private macros
Macro, gv1/stat-committed: Private macros
Macro, gv1/sw/after-abort: Private macros
Macro, gv1/sw/start-read: Private macros
Macro, gv1/sw/start-write: Private macros
Macro, gv1/sw/stat-aborted: Private macros
Macro, gv1/sw/stat-committed: Private macros
Macro, gv1/sw/write: Private macros
Macro, gv1/valid-read?: Private macros
Macro, gv1/write: Private macros
Macro, gv5/after-abort: Private macros
Macro, gv5/decf-nohw-counter: Private macros
Macro, gv5/features: Private macros
Macro, gv5/get-nohw-counter: Private macros
Macro, gv5/hw/after-abort: Private macros
Macro, gv5/hw/start-read: Private macros
Macro, gv5/hw/start-write: Private macros
Macro, gv5/hw/stat-aborted: Private macros
Macro, gv5/hw/stat-committed: Private macros
Macro, gv5/hw/write: Private macros
Macro, gv5/incf-nohw-counter: Private macros
Macro, gv5/start-read: Private macros
Macro, gv5/start-write: Private macros
Macro, gv5/stat-aborted: Private macros
Macro, gv5/stat-committed: Private macros
Macro, gv5/sw/after-abort: Private macros
Macro, gv5/sw/start-read: Private macros
Macro, gv5/sw/start-write: Private macros
Macro, gv5/sw/stat-aborted: Private macros
Macro, gv5/sw/stat-committed: Private macros
Macro, gv5/sw/write: Private macros
Macro, gv5/valid-read?: Private macros
Macro, gv5/write: Private macros
Macro, gv6/%is-gv5-mode?: Private macros
Macro, gv6/%update-lv-stat: Private macros
Macro, gv6/decf-nohw-counter: Private macros
Macro, gv6/features: Private macros
Macro, gv6/get-nohw-counter: Private macros
Macro, gv6/hw/after-abort: Private macros
Macro, gv6/hw/start-read: Private macros
Macro, gv6/hw/start-write: Private macros
Macro, gv6/hw/stat-aborted: Private macros
Macro, gv6/hw/stat-committed: Private macros
Macro, gv6/hw/write: Private macros
Macro, gv6/incf-nohw-counter: Private macros
Macro, gv6/stat-aborted: Private macros
Macro, gv6/stat-committed: Private macros
Macro, gv6/sw/after-abort: Private macros
Macro, gv6/sw/start-read: Private macros
Macro, gv6/sw/start-write: Private macros
Macro, gv6/sw/stat-aborted: Private macros
Macro, gv6/sw/stat-committed: Private macros
Macro, gv6/sw/write: Private macros
Macro, gv6/valid-read?: Private macros
Macro, gvx-add-missing: Private macros
Macro, hw-atomic2: Public macros
Macro, hw-tlog-write-version: Private macros
Macro, hw-transaction-abort: Public macros
Macro, hw-transaction-begin: Public macros
Macro, hw-transaction-end: Public macros
Macro, hw-transaction-rerun-may-succeed?: Public macros
Macro, hw-transaction-running?: Public macros
Macro, hw-transaction-supported-and-running?: Public macros
Macro, hw-transaction-supported?: Public macros
Macro, if-bind: Public macros
Macro, incf-atomic-place: Public macros
Macro, incf-hash-counter: Private macros
Macro, let1: Public macros
Macro, log.debug: Public macros
Macro, log.debug-gmap: Private macros
Macro, log.make-logger: Public macros
Macro, log.trace: Public macros
Macro, maybe-yield-before-rerun: Private macros
Macro, mem-read-barrier: Public macros
Macro, mem-write-barrier: Public macros
Macro, new: Public macros
Macro, non-transactional-struct: Public macros
Macro, nonblocking: Public macros
Macro, optimize-for-transaction: Public macros
Macro, optimize-for-transaction*: Public macros
Macro, options-for-defun: Private macros
Macro, orelse: Public macros
Macro, pop-free-cons^: Public macros
Macro, push^: Public macros
Macro, save-thread-initial-bindings: Public macros
Macro, set-atomic-place: Public macros
Macro, slot-raw-tvar: Private macros
Macro, sw-atomic: Private macros
Macro, tpop: Public macros
Macro, tpush: Public macros
Macro, transaction: Public macros
Macro, transaction-abort-macro: Private macros
Macro, transactional: Public macros
Macro, transactional-class: Public macros
Macro, transactional-struct: Public macros
Macro, tvar-id/next: Private macros
Macro, tvar-unwrap-slot-macro: Private macros
Macro, tvar-wrap-slot-macro: Private macros
Macro, use-$-hwtx?: Private macros
Macro, use-$-swtx?: Private macros
Macro, validate-tlog-pool: Private macros
Macro, when-bind: Public macros
Macro, with-declares: Private macros
Macro, with-docstrings: Private macros
Macro, with-docstrings-declares: Private macros
Macro, with-gensym: Public macros
Macro, with-gensyms: Public macros
Macro, with-hwtx: Private macros
Macro, with-lock: Public macros
Macro, with-notx: Private macros
Macro, with-recording: Private macros
Macro, with-recording-to-tlog: Private macros
Macro, with-ro-slots: Private macros
Macro, with-rw-slots: Private macros
Macro, with-swtx: Private macros
Macro, with-tlog: Private macros
Macro, with-tx: Private macros
Macro, without-recording-with-show-tvars: Private macros
Macro, _: Private macros
make-atomic-counter: Public ordinary functions
make-fast-vector: Public ordinary functions
make-gv156: Private ordinary functions
make-load-form: Public standalone methods
make-load-form/tstruct-def: Private ordinary functions
make-load-form/tstruct-slot: Private ordinary functions
make-lv156: Private ordinary functions
make-mutex: Public ordinary functions
make-orelse-tx: Private ordinary functions
make-tcons: Private ordinary functions
make-tlist: Public ordinary functions
make-tlog: Private ordinary functions
make-tlog-pool: Private ordinary functions
make-tstruct-def: Private ordinary functions
make-tstruct-slot: Private ordinary functions
make-tvar: Private ordinary functions
make-txfifo: Private ordinary functions
make-txhash-table: Private ordinary functions
map-ghash: Public ordinary functions
map-gmap: Public ordinary functions
map-gmap-from-end: Private ordinary functions
mapappend: Private ordinary functions
max-gmap: Public ordinary functions
maybe-yield-before-rerun: Private macros
mem-read-barrier: Public macros
mem-write-barrier: Public macros
merge-hash-tables: Public ordinary functions
merge-tlog-reads: Private ordinary functions
merge-tlog-reads-tx: Private ordinary functions
merge-txhash-tables: Private ordinary functions
Method, (setf back-of): Private generic functions
Method, (setf back-of): Private generic functions
Method, (setf color-of): Private generic functions
Method, (setf front-of): Private generic functions
Method, (setf front-of): Private generic functions
Method, (setf id-of): Public generic functions
Method, (setf key-of): Private generic functions
Method, (setf left-of): Private generic functions
Method, (setf length-of): Private generic functions
Method, (setf right-of): Private generic functions
Method, (setf slot-value-using-class): Public standalone methods
Method, (setf top-of): Private generic functions
Method, (setf transactional-slot?): Private generic functions
Method, (setf transactional-slot?): Private generic functions
Method, (setf value-of): Private generic functions
Method, (setf value-of): Private generic functions
Method, (setf vector-of): Private generic functions
Method, back-of: Private generic functions
Method, back-of: Private generic functions
Method, channel-of: Private generic functions
Method, color-of: Private generic functions
Method, compute-effective-slot-definition: Public standalone methods
Method, count-of: Private generic functions
Method, direct-slot-definition-class: Public standalone methods
Method, effective-slot-definition-class: Public standalone methods
Method, empty!: Public generic functions
Method, empty!: Public generic functions
Method, empty!: Public generic functions
Method, empty!: Public generic functions
Method, empty!: Public generic functions
Method, empty!: Public generic functions
Method, empty?: Public generic functions
Method, empty?: Public generic functions
Method, empty?: Public generic functions
Method, empty?: Public generic functions
Method, empty?: Public generic functions
Method, empty?: Public generic functions
Method, empty?: Public generic functions
Method, front-of: Private generic functions
Method, front-of: Private generic functions
Method, full?: Public generic functions
Method, full?: Public generic functions
Method, full?: Public generic functions
Method, full?: Public generic functions
Method, full?: Public generic functions
Method, full?: Public generic functions
Method, ghash/new-pair: Private generic functions
Method, ghash/new-pair: Private generic functions
Method, ghash/new-vec: Private generic functions
Method, ghash/new-vec: Private generic functions
Method, gmap/copy-node: Private generic functions
Method, gmap/new-node: Private generic functions
Method, gmap/new-node: Private generic functions
Method, gmap/rebalance-after-insert: Private generic functions
Method, gmap/remove-at: Private generic functions
Method, id-of: Public generic functions
Method, id-of: Public generic functions
Method, id-of: Public generic functions
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, key-of: Private generic functions
Method, key-of: Private generic functions
Method, left-of: Private generic functions
Method, length-of: Private generic functions
Method, make-load-form: Public standalone methods
Method, peek: Public generic functions
Method, peek: Public generic functions
Method, peek: Public generic functions
Method, peek: Public generic functions
Method, peek: Public generic functions
Method, peek: Public generic functions
Method, pred-function-of: Private generic functions
Method, pred-of: Private generic functions
Method, pred-of: Private generic functions
Method, print-gmap: Private generic functions
Method, print-gmap-node: Private generic functions
Method, print-gmap-node: Private generic functions
Method, print-gmap-node: Private generic functions
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object-contents: Private generic functions
Method, print-object-contents: Private generic functions
Method, print-object-contents: Private generic functions
Method, print-object-contents: Private generic functions
Method, print-object-contents: Private generic functions
Method, put: Public generic functions
Method, put: Public generic functions
Method, put: Public generic functions
Method, put: Public generic functions
Method, put: Public generic functions
Method, put: Public generic functions
Method, right-of: Private generic functions
Method, slot-boundp-using-class: Public standalone methods
Method, slot-makunbound-using-class: Public standalone methods
Method, slot-value-using-class: Public standalone methods
Method, take: Public generic functions
Method, take: Public generic functions
Method, take: Public generic functions
Method, take: Public generic functions
Method, take: Public generic functions
Method, top-of: Private generic functions
Method, transactional-slot?: Private generic functions
Method, transactional-slot?: Private generic functions
Method, transactional-slot?: Private generic functions
Method, try-put: Public generic functions
Method, try-put: Public generic functions
Method, try-put: Public generic functions
Method, try-put: Public generic functions
Method, try-put: Public generic functions
Method, try-put: Public generic functions
Method, try-put: Public generic functions
Method, try-take: Public generic functions
Method, try-take: Public generic functions
Method, try-take: Public generic functions
Method, try-take: Public generic functions
Method, try-take: Public generic functions
Method, try-take: Public generic functions
Method, try-take: Public generic functions
Method, tstruct-def: Private generic functions
Method, tstruct-def: Private generic functions
Method, tstruct-def: Private generic functions
Method, tstruct-def: Private generic functions
Method, tstruct-def: Private generic functions
Method, update-instance-for-redefined-class: Public standalone methods
Method, validate-superclass: Public standalone methods
Method, value-of: Private generic functions
Method, value-of: Private generic functions
Method, vector-of: Private generic functions
min-gmap: Public ordinary functions
mutex-is-free?: Public ordinary functions
mutex-is-own-or-free?: Public ordinary functions
mutex-is-own?: Public ordinary functions
mutex-owner: Public ordinary functions
mutex-p: Private ordinary functions

N
names-to-symbol: Private ordinary functions
new: Public macros
new-or-clear-tlog: Private ordinary functions
new-tlog: Private ordinary functions
new-txpair-from-pool: Private ordinary functions
non-transactional-struct: Public macros
nonblocking: Public macros
notify-tlog: Private ordinary functions
notify-tvar: Private ordinary functions
notify-tvar-high-load: Private ordinary functions

O
optimize-for-transaction: Public macros
optimize-for-transaction*: Public macros
options-for-defun: Private macros
orelse: Public macros
orelse-tx-func: Private ordinary functions
orelse-tx-log: Private ordinary functions
orelse-tx-p: Private ordinary functions
orelse-tx-retry: Private ordinary functions

P
param-quote-default-form: Private ordinary functions
parse-struct-def: Private ordinary functions
parse-struct-def-and-slots: Private ordinary functions
parse-struct-slot: Private ordinary functions
parse-struct-slots: Private ordinary functions
peek: Public generic functions
peek: Public generic functions
peek: Public generic functions
peek: Public generic functions
peek: Public generic functions
peek: Public generic functions
peek: Public generic functions
peek-$: Private ordinary functions
pop-free-cons^: Public macros
pred-function-of: Private generic functions
pred-function-of: Private generic functions
pred-of: Private generic functions
pred-of: Private generic functions
pred-of: Private generic functions
print-gmap: Private generic functions
print-gmap: Private generic functions
print-gmap-node: Private generic functions
print-gmap-node: Private generic functions
print-gmap-node: Private generic functions
print-gmap-node: Private generic functions
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object-contents: Private generic functions
print-object-contents: Private generic functions
print-object-contents: Private generic functions
print-object-contents: Private generic functions
print-object-contents: Private generic functions
print-object-contents: Private generic functions
push^: Public macros
put: Public generic functions
put: Public generic functions
put: Public generic functions
put: Public generic functions
put: Public generic functions
put: Public generic functions
put: Public generic functions
put-txfifo: Private ordinary functions

R
raw-value-of: Private ordinary functions
recording?: Private ordinary functions
red?: Private ordinary functions
rehash-ghash: Private ordinary functions
rehash-txhash: Private ordinary functions
release-mutex: Public ordinary functions
rem-bheap: Private ordinary functions
rem-feature: Private ordinary functions
rem-ghash: Public ordinary functions
rem-gmap: Public ordinary functions
rem-hash: Public ordinary functions
remove-from-gmap: Public ordinary functions
replace-gmap-node: Private ordinary functions
rerun: Private ordinary functions
retry: Public ordinary functions
rev-traverse-gmap-at: Private ordinary functions
right-of: Private generic functions
right-of: Private generic functions
rotate-gmap-node-around: Private ordinary functions
rotate-gmap-node-left: Private ordinary functions
rotate-gmap-node-right: Private ordinary functions
run-atomic: Public ordinary functions
run-nonblocking: Private ordinary functions
run-once: Private ordinary functions
run-orelse: Public ordinary functions
run-sw-atomic: Private ordinary functions

S
save-thread-initial-bindings: Public macros
set-$: Private ordinary functions
set-$-notx: Private ordinary functions
set-$-swtx: Private ordinary functions
set-assoc: Private ordinary functions
set-assoc*: Private ordinary functions
set-atomic-counter: Public ordinary functions
set-atomic-place: Public macros
set-feature: Public ordinary functions
set-features: Public ordinary functions
set-ghash: Public ordinary functions
set-gmap: Public ordinary functions
set-hash: Public ordinary functions
set-svref: Private ordinary functions
set-tsvref: Private ordinary functions
set-tvar-value-and-version: Private ordinary functions
set-txhash: Private ordinary functions
Setf Expander, (setf $): Public setf expanders
Setf Expander, (setf $-notx): Private setf expanders
Setf Expander, (setf $-slot): Public setf expanders
Setf Expander, (setf $-swtx): Private setf expanders
Setf Expander, (setf %stmx-impl/notx/$-slot): Private ordinary functions
Setf Expander, (setf %stmx-impl/notx/tcar): Private ordinary functions
Setf Expander, (setf %stmx-impl/notx/tcdr): Private ordinary functions
Setf Expander, (setf %stmx-impl/notx/tcons-first): Private ordinary functions
Setf Expander, (setf %stmx-impl/notx/tcons-rest): Private ordinary functions
Setf Expander, (setf %stmx-impl/notx/tfirst): Private ordinary functions
Setf Expander, (setf %stmx-impl/notx/trest): Private ordinary functions
Setf Expander, (setf %stmx-impl/swtx/$-slot): Private ordinary functions
Setf Expander, (setf %stmx-impl/swtx/tcar): Private ordinary functions
Setf Expander, (setf %stmx-impl/swtx/tcdr): Private ordinary functions
Setf Expander, (setf %stmx-impl/swtx/tcons-first): Private ordinary functions
Setf Expander, (setf %stmx-impl/swtx/tcons-rest): Private ordinary functions
Setf Expander, (setf %stmx-impl/swtx/tfirst): Private ordinary functions
Setf Expander, (setf %stmx-impl/swtx/trest): Private ordinary functions
Setf Expander, (setf get-ghash): Public setf expanders
Setf Expander, (setf tcar): Public setf expanders
Setf Expander, (setf tcdr): Public setf expanders
Setf Expander, (setf tcons-first): Private ordinary functions
Setf Expander, (setf tcons-rest): Private ordinary functions
Setf Expander, (setf tfirst): Public setf expanders
Setf Expander, (setf trest): Public setf expanders
Setf Expander, (setf tsvref): Public setf expanders
shallow-invalid?: Private ordinary functions
shallow-valid?: Private ordinary functions
sift-down-bheap: Private ordinary functions
sift-up-bheap: Private ordinary functions
simple-tvector: Public ordinary functions
simple-tvector-length: Public ordinary functions
slot-boundp-using-class: Public standalone methods
slot-form-name: Private ordinary functions
slot-form-transactional?: Private ordinary functions
slot-makunbound-using-class: Public standalone methods
slot-raw-tvar: Private macros
slot-value-using-class: Public standalone methods
some-features: Private ordinary functions
split-string: Private ordinary functions
start-multithreading: Public ordinary functions
start-thread: Public ordinary functions
stmx-internal-error: Private ordinary functions
stmx-internal-error/bug: Private ordinary functions
stmx-internal-error/suggest-bordeaux-threads: Private ordinary functions
string-to-int-list: Private ordinary functions
stringify: Public ordinary functions
sw-atomic: Private macros
sw-transaction?: Private ordinary functions
sxhash-equalp: Public ordinary functions
symbol-name*: Public ordinary functions
symbol-package-or-fail: Private ordinary functions

T
tacons: Public ordinary functions
take: Public generic functions
take: Public generic functions
take: Public generic functions
take: Public generic functions
take: Public generic functions
take: Public generic functions
tappend: Private ordinary functions
tappend-lists: Private ordinary functions
tassoc: Public ordinary functions
tatom: Public ordinary functions
tcaaaar: Public ordinary functions
tcaaadr: Public ordinary functions
tcaaar: Public ordinary functions
tcaadar: Public ordinary functions
tcaaddr: Public ordinary functions
tcaadr: Public ordinary functions
tcaar: Public ordinary functions
tcadaar: Public ordinary functions
tcadadr: Public ordinary functions
tcadar: Public ordinary functions
tcaddar: Public ordinary functions
tcadddr: Private ordinary functions
tcaddr: Public ordinary functions
tcadr: Public ordinary functions
tcar: Public ordinary functions
tcdaaar: Public ordinary functions
tcdaadr: Public ordinary functions
tcdaar: Public ordinary functions
tcdadar: Public ordinary functions
tcdaddr: Public ordinary functions
tcdadr: Public ordinary functions
tcdar: Public ordinary functions
tcddaar: Public ordinary functions
tcddadr: Public ordinary functions
tcddar: Public ordinary functions
tcdddar: Public ordinary functions
tcddddr: Private ordinary functions
tcdddr: Public ordinary functions
tcddr: Public ordinary functions
tcdr: Public ordinary functions
tcell: Public ordinary functions
tchannel-back-of: Private ordinary functions
tcons: Public ordinary functions
tcons-first: Private ordinary functions
tcons-rest: Private ordinary functions
tconsp: Public ordinary functions
teighth: Public ordinary functions
tendp: Public ordinary functions
tfifo: Public ordinary functions
tfifth: Public ordinary functions
tfirst: Public ordinary functions
tfourth: Public ordinary functions
tlast: Public compiler macros
tlast: Public ordinary functions
tldiff: Private ordinary functions
tlist: Public compiler macros
tlist: Public ordinary functions
tlist*: Public compiler macros
tlist*: Public ordinary functions
tlist-length: Public ordinary functions
tlistp: Private ordinary functions
tlog-after-commit: Private ordinary functions
tlog-before-commit: Private ordinary functions
tlog-lock: Private ordinary functions
tlog-locked: Private ordinary functions
tlog-p: Private ordinary functions
tlog-parent: Private ordinary functions
tlog-prevent-sleep: Private ordinary functions
tlog-read-version: Private ordinary functions
tlog-reads: Private ordinary functions
tlog-semaphore: Private ordinary functions
tlog-writes: Private ordinary functions
tninth: Public ordinary functions
tnreconc: Private ordinary functions
tnth: Public ordinary functions
tnthcdr: Public ordinary functions
top-of: Private generic functions
top-of: Private generic functions
topological-sort: Private ordinary functions
tpairlis: Public ordinary functions
tpop: Public macros
tport-empty?: Private ordinary functions
tpush: Public macros
transaction: Public macros
transaction-abort: Public ordinary functions
transaction-abort-macro: Private macros
transaction-begin: Public ordinary functions
transaction-end: Public ordinary functions
transaction-rerun-may-succeed-p: Public ordinary functions
transaction-running-p: Public ordinary functions
transaction-supported-p: Public ordinary functions
transaction?: Public ordinary functions
transactional: Public macros
transactional-class: Public macros
transactional-slot?: Private generic functions
transactional-slot?: Private generic functions
transactional-slot?: Private generic functions
transactional-slot?: Private generic functions
transactional-struct: Public macros
trassoc: Public ordinary functions
trest: Public ordinary functions
trevappend: Private ordinary functions
trplaca: Private ordinary functions
trplacd: Private ordinary functions
try-acquire-mutex: Public ordinary functions
try-lock-tvar: Private ordinary functions
try-lock-tvars: Private ordinary functions
try-put: Public generic functions
try-put: Public generic functions
try-put: Public generic functions
try-put: Public generic functions
try-put: Public generic functions
try-put: Public generic functions
try-put: Public generic functions
try-put: Public generic functions
try-put-$: Private ordinary functions
try-take: Public generic functions
try-take: Public generic functions
try-take: Public generic functions
try-take: Public generic functions
try-take: Public generic functions
try-take: Public generic functions
try-take: Public generic functions
try-take: Public generic functions
try-take-$: Private ordinary functions
tsecond: Public ordinary functions
tseventh: Public ordinary functions
tsixth: Public ordinary functions
tstack: Public ordinary functions
tstruct-def: Private generic functions
tstruct-def: Private generic functions
tstruct-def: Private generic functions
tstruct-def: Private generic functions
tstruct-def: Private generic functions
tstruct-def: Private generic functions
tstruct-def->all: Private ordinary functions
tstruct-def->defmethod-tstruct-def: Private ordinary functions
tstruct-def->defun-accessor: Private ordinary functions
tstruct-def->defun-accessors: Private ordinary functions
tstruct-def->defun-constructor: Private ordinary functions
tstruct-def->defun-copier: Private ordinary functions
tstruct-def->defun-functions: Private ordinary functions
tstruct-def->form: Private ordinary functions
tstruct-def->tx-accessors: Private ordinary functions
tstruct-def->tx-functions: Private ordinary functions
tstruct-def-all-slots: Private ordinary functions
tstruct-def-conc-name: Private ordinary functions
tstruct-def-constructor: Private ordinary functions
tstruct-def-copier: Private ordinary functions
tstruct-def-name: Private ordinary functions
tstruct-def-options: Private ordinary functions
tstruct-def-p: Private ordinary functions
tstruct-def-package: Private ordinary functions
tstruct-def-slots: Private ordinary functions
tstruct-def-superclass: Private ordinary functions
tstruct-def-tx-conc-name: Private ordinary functions
tstruct-def-tx-constructor: Private ordinary functions
tstruct-def-type: Private ordinary functions
tstruct-slot->form: Private ordinary functions
tstruct-slot-default-accessor: Private ordinary functions
tstruct-slot-effective-reader: Private ordinary functions
tstruct-slot-effective-writer: Private ordinary functions
tstruct-slot-initform: Private ordinary functions
tstruct-slot-initialize: Private ordinary functions
tstruct-slot-keyword: Private ordinary functions
tstruct-slot-name: Private ordinary functions
tstruct-slot-options: Private ordinary functions
tstruct-slot-p: Private ordinary functions
tstruct-slot-read-only: Private ordinary functions
tstruct-slot-reader: Private ordinary functions
tstruct-slot-transactional: Private ordinary functions
tstruct-slot-tx-accessor: Private ordinary functions
tstruct-slot-type: Private ordinary functions
tstruct-slot-writer: Private ordinary functions
tsvref: Public ordinary functions
ttenth: Public ordinary functions
tthird: Public ordinary functions
ttree-equal: Public ordinary functions
ttree-equal-test: Public ordinary functions
ttree-equal-test-not: Public ordinary functions
tvar: Public ordinary functions
tvar-id: Private ordinary functions
tvar-id/next: Private macros
tvar-p: Private ordinary functions
tvar-unwrap-slot: Private ordinary functions
tvar-unwrap-slot-macro: Private macros
tvar-valid-and-own-or-unlocked?: Private ordinary functions
tvar-valid-and-unlocked?: Private ordinary functions
tvar-value: Private ordinary functions
tvar-value-and-version-or-fail: Private ordinary functions
tvar-version: Private ordinary functions
tvar-waiting-for: Private ordinary functions
tvar-waiting-lock: Private ordinary functions
tvar-wrap-slot: Private ordinary functions
tvar-wrap-slot-macro: Private macros
tvar>: Private ordinary functions
tx-read-of: Private ordinary functions
tx-write-of: Private ordinary functions
txfifo-back: Private ordinary functions
txfifo-front: Private ordinary functions
txfifo-p: Private ordinary functions
txhash-mask: Private ordinary functions
txhash-subscript: Private ordinary functions
txhash-table-count: Private ordinary functions
txhash-table-p: Private ordinary functions
txhash-table-pool: Private ordinary functions
txhash-table-vec: Private ordinary functions
txpair: Private ordinary functions
txpair-key: Private ordinary functions
txpair-next: Private ordinary functions
txpair-p: Private ordinary functions
txpair-rest: Private ordinary functions
txpair-value: Private ordinary functions
typespec-allows?: Private ordinary functions

U
unbind-$: Public ordinary functions
unbound-slot-error: Private ordinary functions
unbound-tvar-error: Private ordinary functions
undefine-method: Private ordinary functions
undefine-method-before: Private ordinary functions
unlisten-tvar: Private ordinary functions
unlisten-tvars-of: Private ordinary functions
unlock-tvar: Private ordinary functions
unlock-tvars: Private ordinary functions
update-instance-for-redefined-class: Public standalone methods
use-$-hwtx?: Private macros
use-$-swtx?: Private macros

V
valid-and-own-or-unlocked?: Private ordinary functions
valid-and-unlocked?: Private ordinary functions
valid?: Private ordinary functions
validate-current-thread: Private ordinary functions
validate-superclass: Public standalone methods
validate-tlog-pool: Private macros
value-of: Private generic functions
value-of: Private generic functions
value-of: Private generic functions
value-of: Private generic functions
vector-of: Private generic functions
vector-of: Private generic functions
visit-tree: Private ordinary functions

W
wait-once: Private ordinary functions
wait-tlog: Private ordinary functions
wait4-thread: Public ordinary functions
when-bind: Public macros
with-declares: Private macros
with-docstrings: Private macros
with-docstrings-declares: Private macros
with-gensym: Public macros
with-gensyms: Public macros
with-hwtx: Private macros
with-lock: Public macros
with-notx: Private macros
with-recording: Private macros
with-recording-to-tlog: Private macros
with-ro-slots: Private macros
with-rw-slots: Private macros
with-swtx: Private macros
with-tlog: Private macros
with-tx: Private macros
without-recording-with-show-tvars: Private macros


A.3 Variables

Jump to:   *   +  
A   B   C   F   H   I   K   L   M   N   O   P   R   S   T   V   W  
Index Entry  Section

*
*cons-pool*: Private special variables
*current-thread*: Public special variables
*empty-vector*: Private special variables
*feature-list*: Private special variables
*hide-tvars*: Private special variables
*hw-tlog-write-version*: Private special variables
*lv*: Private special variables
*optimized-funs*: Private special variables
*print-ids*: Private special variables
*record-to-tlogs*: Private special variables
*recursive-call-compute-effective-slot-definition*: Private special variables
*recursive-call-list-classes-containing-direct-slots*: Private special variables
*stmx-version*: Public special variables
*tlog*: Private special variables
*tlog-pool*: Private special variables
*tvar-id*: Private special variables

+
+black+: Private constants
+defknown-has-overwrite-fndb-silently+: Private constants
+dummy-tvar+: Private special variables
+empty-tcell+: Private constants
+empty-vector+: Private special variables
+ghash-default-capacity+: Private constants
+ghash-max-capacity+: Private constants
+ghash-threshold-capacity+: Private constants
+global-clock-delta+: Private constants
+global-clock-nohw-delta+: Private constants
+gv+: Private constants
+gv-max-stat+: Private constants
+hw-atomic-max-attempts+: Private constants
+hw-transaction-started+: Public constants
+hw-transaction-supported+: Public constants
+impl-package+: Public constants
+invalid-version+: Private constants
+it+: Private special variables
+red+: Private constants
+transaction-started+: Public constants
+transaction-user-abort+: Public constants
+txhash-default-capacity+: Private constants
+txhash-threshold-capacity+: Private constants
+unbound-tvar+: Public constants

A
aborts: Private structures
aborts: Private structures
after-commit: Private structures
aref-fun: Public classes

B
back: Public classes
back: Public classes
back: Private structures
before-commit: Private structures

C
channel: Public classes
color: Private classes
color: Private classes
commits: Private structures
commits: Private structures
conc-name: Private structures
Constant, +black+: Private constants
Constant, +defknown-has-overwrite-fndb-silently+: Private constants
Constant, +empty-tcell+: Private constants
Constant, +ghash-default-capacity+: Private constants
Constant, +ghash-max-capacity+: Private constants
Constant, +ghash-threshold-capacity+: Private constants
Constant, +global-clock-delta+: Private constants
Constant, +global-clock-nohw-delta+: Private constants
Constant, +gv+: Private constants
Constant, +gv-max-stat+: Private constants
Constant, +hw-atomic-max-attempts+: Private constants
Constant, +hw-transaction-started+: Public constants
Constant, +hw-transaction-supported+: Public constants
Constant, +impl-package+: Public constants
Constant, +invalid-version+: Private constants
Constant, +red+: Private constants
Constant, +transaction-started+: Public constants
Constant, +transaction-user-abort+: Public constants
Constant, +txhash-default-capacity+: Private constants
Constant, +txhash-threshold-capacity+: Private constants
Constant, +unbound-tvar+: Public constants
Constant, k<: Private constants
Constant, k=: Private constants
Constant, k>: Private constants
constructor: Private structures
copier: Private structures
count: Public classes
count: Public classes
count: Public classes
count: Public classes
count: Private structures

F
first: Public structures
foo: Public classes
front: Public classes
front: Public classes
front: Private structures
func: Private structures

H
hash-fun: Public classes
hash-sym: Public classes

I
id: Public structures
initform: Private structures
initial-element: Public structures

K
k<: Private constants
k=: Private constants
k>: Private constants
key: Private structures
key: Private classes
key: Private classes
key: Private classes
key: Private classes
key: Private classes

L
left: Private classes
left: Private classes
len: Public structures
length: Private classes
lock: Private structures
locked: Private structures
log: Private structures

M
mutex-owner: Public structures

N
name: Private structures
name: Private structures
next: Private structures
next: Private classes
next: Private classes
nohw-counter: Private structures
nohw-flag: Private structures

O
options: Private structures
options: Private structures

P
pad1: Private structures
pad2: Private structures
pad3: Private structures
pad4: Private structures
pad5: Private structures
pad6: Private structures
pad7: Private structures
parent: Private structures
pool: Private structures
pred: Private classes
pred-func: Public classes
pred-sym: Public classes
prevent-sleep: Private structures

R
read-only: Private structures
read-version: Private structures
reader: Private structures
reads: Private structures
rest: Public structures
rest: Private structures
retry: Private structures
right: Private classes
right: Private classes
root: Public classes
root: Public classes

S
semaphore: Private structures
set-aref-fun: Public classes
Slot, aborts: Private structures
Slot, aborts: Private structures
Slot, after-commit: Private structures
Slot, aref-fun: Public classes
Slot, back: Public classes
Slot, back: Public classes
Slot, back: Private structures
Slot, before-commit: Private structures
Slot, channel: Public classes
Slot, color: Private classes
Slot, color: Private classes
Slot, commits: Private structures
Slot, commits: Private structures
Slot, conc-name: Private structures
Slot, constructor: Private structures
Slot, copier: Private structures
Slot, count: Public classes
Slot, count: Public classes
Slot, count: Public classes
Slot, count: Public classes
Slot, count: Private structures
Slot, first: Public structures
Slot, foo: Public classes
Slot, front: Public classes
Slot, front: Public classes
Slot, front: Private structures
Slot, func: Private structures
Slot, hash-fun: Public classes
Slot, hash-sym: Public classes
Slot, id: Public structures
Slot, initform: Private structures
Slot, initial-element: Public structures
Slot, key: Private structures
Slot, key: Private classes
Slot, key: Private classes
Slot, key: Private classes
Slot, key: Private classes
Slot, key: Private classes
Slot, left: Private classes
Slot, left: Private classes
Slot, len: Public structures
Slot, length: Private classes
Slot, lock: Private structures
Slot, locked: Private structures
Slot, log: Private structures
Slot, mutex-owner: Public structures
Slot, name: Private structures
Slot, name: Private structures
Slot, next: Private structures
Slot, next: Private classes
Slot, next: Private classes
Slot, nohw-counter: Private structures
Slot, nohw-flag: Private structures
Slot, options: Private structures
Slot, options: Private structures
Slot, pad1: Private structures
Slot, pad2: Private structures
Slot, pad3: Private structures
Slot, pad4: Private structures
Slot, pad5: Private structures
Slot, pad6: Private structures
Slot, pad7: Private structures
Slot, parent: Private structures
Slot, pool: Private structures
Slot, pred: Private classes
Slot, pred-func: Public classes
Slot, pred-sym: Public classes
Slot, prevent-sleep: Private structures
Slot, read-only: Private structures
Slot, read-version: Private structures
Slot, reader: Private structures
Slot, reads: Private structures
Slot, rest: Public structures
Slot, rest: Private structures
Slot, retry: Private structures
Slot, right: Private classes
Slot, right: Private classes
Slot, root: Public classes
Slot, root: Public classes
Slot, semaphore: Private structures
Slot, set-aref-fun: Public classes
Slot, slots: Private structures
Slot, superclass: Private structures
Slot, test-fun: Public classes
Slot, test-sym: Public classes
Slot, top: Public classes
Slot, transactional: Private structures
Slot, transactional: Private classes
Slot, transactional: Private classes
Slot, type: Private structures
Slot, type: Private structures
Slot, value: Public structures
Slot, value: Public classes
Slot, value: Private structures
Slot, value: Private classes
Slot, value: Private classes
Slot, value: Private classes
Slot, value: Private classes
Slot, vec: Public structures
Slot, vec: Public classes
Slot, vec: Public classes
Slot, vec: Private structures
Slot, vector: Private classes
Slot, version: Public structures
Slot, version: Public structures
Slot, waiting-for: Public structures
Slot, waiting-lock: Public structures
Slot, writer: Private structures
Slot, writes: Private structures
slots: Private structures
Special Variable, *cons-pool*: Private special variables
Special Variable, *current-thread*: Public special variables
Special Variable, *empty-vector*: Private special variables
Special Variable, *feature-list*: Private special variables
Special Variable, *hide-tvars*: Private special variables
Special Variable, *hw-tlog-write-version*: Private special variables
Special Variable, *lv*: Private special variables
Special Variable, *optimized-funs*: Private special variables
Special Variable, *print-ids*: Private special variables
Special Variable, *record-to-tlogs*: Private special variables
Special Variable, *recursive-call-compute-effective-slot-definition*: Private special variables
Special Variable, *recursive-call-list-classes-containing-direct-slots*: Private special variables
Special Variable, *stmx-version*: Public special variables
Special Variable, *tlog*: Private special variables
Special Variable, *tlog-pool*: Private special variables
Special Variable, *tvar-id*: Private special variables
Special Variable, +dummy-tvar+: Private special variables
Special Variable, +empty-vector+: Private special variables
Special Variable, +it+: Private special variables
superclass: Private structures

T
test-fun: Public classes
test-sym: Public classes
top: Public classes
transactional: Private structures
transactional: Private classes
transactional: Private classes
type: Private structures
type: Private structures

V
value: Public structures
value: Public classes
value: Private structures
value: Private classes
value: Private classes
value: Private classes
value: Private classes
vec: Public structures
vec: Public classes
vec: Public classes
vec: Private structures
vector: Private classes
version: Public structures
version: Public structures

W
waiting-for: Public structures
waiting-lock: Public structures
writer: Private structures
writes: Private structures


A.4 Data types

Jump to:   A   B   C   F   G   H   L   M   O   P   R   S   T   U   V   X  
Index Entry  Section

A
asm: The stmx/asm module
atomic-counter: Public structures
atomic-counter-num: Public types
atomic-counter-slot-type: Public types
atomic-counter.lisp: The stmx/lang/atomic-counter․lisp file
atomic-num: Public types
atomic-ops.lisp: The stmx/lang/atomic-ops․lisp file
atomic-t: Private types
atomic.lisp: The stmx/main/atomic․lisp file

B
bheap: Private classes
bheap.lisp: The stmx/util/bheap․lisp file

C
Class, bheap: Private classes
Class, ghash-pair: Private classes
Class, ghash-table: Public classes
Class, gmap: Public classes
Class, gmap-node: Private classes
Class, rbmap: Public classes
Class, rbnode: Private classes
Class, tcell: Public classes
Class, tchannel: Public classes
Class, tfifo: Public classes
Class, thash-pair: Private classes
Class, thash-table: Public classes
Class, tmap: Public classes
Class, tnode: Private classes
Class, tport: Public classes
Class, transactional-class: Public classes
Class, transactional-direct-slot: Private classes
Class, transactional-effective-slot: Private classes
Class, transactional-object: Public classes
Class, tstack: Public classes
class-precedence-list.lisp: The stmx/lang/class-precedence-list․lisp file
classes.lisp: The stmx/main/classes․lisp file
commit.lisp: The stmx/main/commit․lisp file
comp-result: Private types
compiler.lisp: The stmx/asm/compiler․lisp file
compiling-transaction: Private types
Condition, orelse-error: Private conditions
Condition, rerun-error: Private conditions
Condition, retry-error: Private conditions
Condition, stmx.compile-error: Private conditions
Condition, stmx.control-error: Private conditions
cons.lisp: The stmx/lang/cons․lisp file
container.lisp: The stmx/util/container․lisp file
cpuid.lisp: The stmx/asm/cpuid․lisp file

F
fast-vector: Public structures
fast-vector.lisp: The stmx/lang/fast-vector․lisp file
features-detect.lisp: The stmx/lang/features-detect․lisp file
features-reader.lisp: The stmx/lang/features-reader․lisp file
features.lisp: The stmx/lang/features․lisp file
File, atomic-counter.lisp: The stmx/lang/atomic-counter․lisp file
File, atomic-ops.lisp: The stmx/lang/atomic-ops․lisp file
File, atomic.lisp: The stmx/main/atomic․lisp file
File, bheap.lisp: The stmx/util/bheap․lisp file
File, class-precedence-list.lisp: The stmx/lang/class-precedence-list․lisp file
File, classes.lisp: The stmx/main/classes․lisp file
File, commit.lisp: The stmx/main/commit․lisp file
File, compiler.lisp: The stmx/asm/compiler․lisp file
File, cons.lisp: The stmx/lang/cons․lisp file
File, container.lisp: The stmx/util/container․lisp file
File, cpuid.lisp: The stmx/asm/cpuid․lisp file
File, fast-vector.lisp: The stmx/lang/fast-vector․lisp file
File, features-detect.lisp: The stmx/lang/features-detect․lisp file
File, features-reader.lisp: The stmx/lang/features-reader․lisp file
File, features.lisp: The stmx/lang/features․lisp file
File, ghash-table.lisp: The stmx/util/ghash-table․lisp file
File, global-clock.lisp: The stmx/main/global-clock․lisp file
File, gmap.lisp: The stmx/util/gmap․lisp file
File, hash-table.lisp: The stmx/lang/hash-table․lisp file
File, hw-atomic.lisp: The stmx/main/hw-atomic․lisp file
File, hw-transactions.lisp: The stmx/lang/hw-transactions․lisp file
File, macro.lisp: The stmx/lang/macro․lisp file
File, misc.lisp: The stmx/util/misc․lisp file
File, mutex.lisp: The stmx/lang/mutex․lisp file
File, optimize-for.lisp: The stmx/main/optimize-for․lisp file
File, orelse.lisp: The stmx/main/orelse․lisp file
File, package.lisp: The stmx/asm/package․lisp file
File, package.lisp: The stmx/lang/package․lisp file
File, package.lisp: The stmx/main/package․lisp file
File, package.lisp: The stmx/util/package․lisp file
File, print.lisp: The stmx/lang/print․lisp file
File, print.lisp: The stmx/util/print․lisp file
File, rbmap.lisp: The stmx/util/rbmap․lisp file
File, simple-tvector.lisp: The stmx/util/simple-tvector․lisp file
File, stmx.asd: The stmx/stmx․asd file
File, sw-atomic.lisp: The stmx/main/sw-atomic․lisp file
File, tcell.lisp: The stmx/util/tcell․lisp file
File, tchannel.lisp: The stmx/util/tchannel․lisp file
File, tclass.lisp: The stmx/main/tclass․lisp file
File, tcons-alist.lisp: The stmx/util/tcons-alist․lisp file
File, tcons-higher.lisp: The stmx/util/tcons-higher․lisp file
File, tcons-list.lisp: The stmx/util/tcons-list․lisp file
File, tcons-set.lisp: The stmx/util/tcons-set․lisp file
File, tcons-tree.lisp: The stmx/util/tcons-tree․lisp file
File, tcons.lisp: The stmx/util/tcons․lisp file
File, tfifo.lisp: The stmx/util/tfifo․lisp file
File, thash-table.lisp: The stmx/util/thash-table․lisp file
File, thread.lisp: The stmx/lang/thread․lisp file
File, tlog.lisp: The stmx/main/tlog․lisp file
File, tmap.lisp: The stmx/util/tmap․lisp file
File, transaction.lisp: The stmx/asm/transaction․lisp file
File, tslot.lisp: The stmx/main/tslot․lisp file
File, tstack.lisp: The stmx/util/tstack․lisp file
File, tstruct.lisp: The stmx/main/tstruct․lisp file
File, tvar-fwd.lisp: The stmx/main/tvar-fwd․lisp file
File, tvar-slot.lisp: The stmx/main/tvar-slot․lisp file
File, tvar.lisp: The stmx/main/tvar․lisp file
File, tvar.lisp: The stmx/util/tvar․lisp file
File, txhash.lisp: The stmx/main/txhash․lisp file
File, version.lisp: The stmx/main/version․lisp file
File, x86-32,64-insts.lisp: The stmx/asm/x86-32‚64-insts․lisp file
File, x86-32,64-known.lisp: The stmx/asm/x86-32‚64-known․lisp file
File, x86-32,64-vops.lisp: The stmx/asm/x86-32‚64-vops․lisp file

G
ghash-aref-fun: Private types
ghash-hash-fun: Private types
ghash-pair: Private classes
ghash-set-aref-fun: Private types
ghash-table: Public classes
ghash-table.lisp: The stmx/util/ghash-table․lisp file
ghash-test-fun: Private types
ghash-vector: Private types
global-clock.lisp: The stmx/main/global-clock․lisp file
global-clock/version-type: Private types
gmap: Public classes
gmap-node: Private classes
gmap.lisp: The stmx/util/gmap․lisp file
gv1/version-type: Private types
gv156: Private structures
gv156/version-type: Private types
gv5/version-type: Private types
gv6/version-type: Private types

H
hash-table.lisp: The stmx/lang/hash-table․lisp file
hw-atomic.lisp: The stmx/main/hw-atomic․lisp file
hw-transactions.lisp: The stmx/lang/hw-transactions․lisp file

L
lang: The stmx/lang module
lv156: Private structures

M
macro.lisp: The stmx/lang/macro․lisp file
main: The stmx/main module
misc.lisp: The stmx/util/misc․lisp file
Module, asm: The stmx/asm module
Module, lang: The stmx/lang module
Module, main: The stmx/main module
Module, util: The stmx/util module
mutex: Public structures
mutex.lisp: The stmx/lang/mutex․lisp file

O
optimize-for.lisp: The stmx/main/optimize-for․lisp file
orelse-error: Private conditions
orelse-tx: Private structures
orelse.lisp: The stmx/main/orelse․lisp file

P
Package, stmx: The stmx package
Package, stmx.asm: The stmx․asm package
Package, stmx.lang: The stmx․lang package
Package, stmx.util: The stmx․util package
package.lisp: The stmx/asm/package․lisp file
package.lisp: The stmx/lang/package․lisp file
package.lisp: The stmx/main/package․lisp file
package.lisp: The stmx/util/package․lisp file
positive-fixnum: Private types
print.lisp: The stmx/lang/print․lisp file
print.lisp: The stmx/util/print․lisp file

R
rbmap: Public classes
rbmap.lisp: The stmx/util/rbmap․lisp file
rbnode: Private classes
rerun-error: Private conditions
retry-error: Private conditions

S
simple-tvector: Public types
simple-tvector.lisp: The stmx/util/simple-tvector․lisp file
stmx: The stmx system
stmx: The stmx package
stmx.asd: The stmx/stmx․asd file
stmx.asm: The stmx․asm package
stmx.compile-error: Private conditions
stmx.control-error: Private conditions
stmx.lang: The stmx․lang package
stmx.util: The stmx․util package
Structure, atomic-counter: Public structures
Structure, fast-vector: Public structures
Structure, gv156: Private structures
Structure, lv156: Private structures
Structure, mutex: Public structures
Structure, orelse-tx: Private structures
Structure, tcons: Public structures
Structure, tlog: Private structures
Structure, tstruct-def: Private structures
Structure, tstruct-slot: Private structures
Structure, tvar: Public structures
Structure, txfifo: Private structures
Structure, txhash-table: Private structures
Structure, txpair: Private structures
sw-atomic.lisp: The stmx/main/sw-atomic․lisp file
System, stmx: The stmx system

T
tcell: Public classes
tcell.lisp: The stmx/util/tcell․lisp file
tchannel: Public classes
tchannel.lisp: The stmx/util/tchannel․lisp file
tclass.lisp: The stmx/main/tclass․lisp file
tcons: Public structures
tcons-alist.lisp: The stmx/util/tcons-alist․lisp file
tcons-higher.lisp: The stmx/util/tcons-higher․lisp file
tcons-list.lisp: The stmx/util/tcons-list․lisp file
tcons-set.lisp: The stmx/util/tcons-set․lisp file
tcons-tree.lisp: The stmx/util/tcons-tree․lisp file
tcons.lisp: The stmx/util/tcons․lisp file
tfifo: Public classes
tfifo.lisp: The stmx/util/tfifo․lisp file
thash-pair: Private classes
thash-table: Public classes
thash-table.lisp: The stmx/util/thash-table․lisp file
thread.lisp: The stmx/lang/thread․lisp file
tlist: Public types
tlog: Private structures
tlog-func-vector: Private types
tlog.lisp: The stmx/main/tlog․lisp file
tmap: Public classes
tmap.lisp: The stmx/util/tmap․lisp file
tnode: Private classes
tport: Public classes
transaction.lisp: The stmx/asm/transaction․lisp file
transactional: Public types
transactional-class: Public classes
transactional-direct-slot: Private classes
transactional-effective-slot: Private classes
transactional-object: Public classes
tslot.lisp: The stmx/main/tslot․lisp file
tstack: Public classes
tstack.lisp: The stmx/util/tstack․lisp file
tstruct-def: Private structures
tstruct-slot: Private structures
tstruct.lisp: The stmx/main/tstruct․lisp file
tvar: Public structures
tvar-fwd.lisp: The stmx/main/tvar-fwd․lisp file
tvar-slot.lisp: The stmx/main/tvar-slot․lisp file
tvar.lisp: The stmx/main/tvar․lisp file
tvar.lisp: The stmx/util/tvar․lisp file
txfifo: Private structures
txhash-table: Private structures
txhash.lisp: The stmx/main/txhash․lisp file
txpair: Private structures
Type, atomic-counter-num: Public types
Type, atomic-counter-slot-type: Public types
Type, atomic-num: Public types
Type, atomic-t: Private types
Type, comp-result: Private types
Type, compiling-transaction: Private types
Type, ghash-aref-fun: Private types
Type, ghash-hash-fun: Private types
Type, ghash-set-aref-fun: Private types
Type, ghash-test-fun: Private types
Type, ghash-vector: Private types
Type, global-clock/version-type: Private types
Type, gv1/version-type: Private types
Type, gv156/version-type: Private types
Type, gv5/version-type: Private types
Type, gv6/version-type: Private types
Type, positive-fixnum: Private types
Type, simple-tvector: Public types
Type, tlist: Public types
Type, tlog-func-vector: Private types
Type, transactional: Public types
Type, ufixnum: Private types
Type, version-type: Private types

U
ufixnum: Private types
util: The stmx/util module

V
version-type: Private types
version.lisp: The stmx/main/version․lisp file

X
x86-32,64-insts.lisp: The stmx/asm/x86-32‚64-insts․lisp file
x86-32,64-known.lisp: The stmx/asm/x86-32‚64-known․lisp file
x86-32,64-vops.lisp: The stmx/asm/x86-32‚64-vops․lisp file