public final class LispThread extends LispObject
Modifier and Type | Field and Description |
---|---|
LispObject[] |
_values |
private static Primitive |
BACKTRACE |
private LispObject |
catchTags |
private static Primitive |
CURRENT_THREAD |
private static Primitive |
DESTROY_THREAD |
private boolean |
destroyed |
private static Primitive |
FRAME_TO_LIST |
private static Primitive |
FRAME_TO_STRING |
(package private) static ConcurrentLinkedQueue<Integer> |
freeSpecialIndices
A list of indices which can be (re)used for symbols to
be assigned a special slot index.
|
private static Primitive |
INTERRUPT_THREAD |
(package private) Thread |
javaThread |
(package private) static AtomicInteger |
lastSpecial
Indicates the last special slot which has been assigned.
|
private static Primitive |
MAKE_THREAD |
(package private) static ConcurrentHashMap<Thread,LispThread> |
map |
private static Primitive |
MAPCAR_THREADS |
(package private) LispObject |
name |
private static Primitive |
OBJECT_NOTIFY |
private static Primitive |
OBJECT_NOTIFY_ALL |
private static Primitive |
OBJECT_WAIT |
private LispObject |
pending |
private SpecialBindingsMark |
savedSpecials
This variable points to the head of a linked list of saved
special bindings.
|
private static Primitive |
SLEEP |
(package private) static ConcurrentHashMap<Integer,WeakReference<Symbol>> |
specialNames |
(package private) SpecialBinding[] |
specials
This array stores the current special binding for every symbol
which has been globally or locally declared special.
|
(package private) static int |
specialsDelta
The number of slots to grow the specials table in
case of insufficient storage.
|
(package private) static int |
specialsInitialSize |
private StackFrame |
stack |
private static SpecialOperator |
SYNCHRONIZED_ON |
private static Primitive |
THREAD_ALIVE_P |
private static Primitive |
THREAD_JOIN |
private static Primitive |
THREAD_NAME |
private boolean |
threadInterrupted |
private static Primitive |
THREADP |
private static ThreadLocal<LispThread> |
threads |
(package private) LispObject |
threadValue |
(package private) static int |
UNASSIGNED_SPECIAL_INDEX |
(package private) static boolean |
use_fast_calls |
private static Primitive |
USE_FAST_CALLS |
private Symbol |
wrapper |
Constructor and Description |
---|
LispThread(Function fun,
LispObject name) |
LispThread(Thread javaThread) |
ABS, add, add, aref_long, aref, AREF, AREF, aset, aset, aset, ash, ash, atom, ATOM, caddr, cadr, car, cddr, cdr, CHAR, characterp, CHARACTERP, chars, COMPLEXP, constantp, CONSTANTP, copyToArray, decr, DENOMINATOR, dispatch, divideBy, doubleValue, elt, endp, ENDP, EQ, eql, eql, eql, EQL, equal, equal, EQUAL, equalp, equalp, evenp, EVENP, execute, execute, execute, floatp, FLOATP, floatValue, getBooleanValue, getCallCount, getDescription, getDocumentation, getFixnumSlotValue, getHotCount, getInstance, getParts, getPropertyList, getSlotValue_0, getSlotValue_1, getSlotValue_2, getSlotValue_3, getSlotValue, getSlotValueAsBoolean, getStringChars, getStringValue, getSymbolFunction, getSymbolFunctionOrDie, getSymbolSetfFunction, getSymbolSetfFunctionOrDie, getSymbolValue, incr, incrementCallCount, incrementHotCount, integerp, INTEGERP, intValue, IS_E, IS_GE, IS_GT, IS_LE, IS_LT, IS_NE, isEqualTo, isEqualTo, isGreaterThan, isGreaterThan, isGreaterThanOrEqualTo, isGreaterThanOrEqualTo, isLessThan, isLessThan, isLessThanOrEqualTo, isLessThanOrEqualTo, isNotEqualTo, isNotEqualTo, isSpecialOperator, isSpecialVariable, javaInstance, javaInstance, LDB, length, LENGTH, listp, LISTP, lockableInstance, LOGAND, LOGAND, LOGIOR, LOGIOR, LOGNOT, LOGXOR, LOGXOR, longValue, minusp, MINUSP, MOD, MOD, multiplyBy, multiplyBy, negate, noFillPointer, NOT, nreverse, NTH, NTH, nthcdr, numberp, NUMBERP, NUMERATOR, oddp, ODDP, plusp, PLUSP, psxhash, psxhash, push, rationalp, RATIONALP, realp, REALP, resolve, reverse, RPLACA, RPLACD, SCHAR, setCallCount, setCar, setCdr, setDocumentation, setHotCount, setPropertyList, setSlotValue_0, setSlotValue_1, setSlotValue_2, setSlotValue_3, setSlotValue, setSlotValue, SIMPLE_STRING_P, SLOT_VALUE, STRING, stringp, STRINGP, subtract, subtract, SVREF, svset, sxhash, SYMBOLP, truncate, unreadableString, unreadableString, unreadableString, unreadableString, VECTOR_PUSH_EXTEND, VECTOR_PUSH_EXTEND, vectorp, VECTORP, vectorPushExtend, zerop, ZEROP
static boolean use_fast_calls
static final ConcurrentHashMap<Thread,LispThread> map
LispObject threadValue
private static ThreadLocal<LispThread> threads
final Thread javaThread
private boolean destroyed
final LispObject name
public LispObject[] _values
private boolean threadInterrupted
private LispObject pending
private Symbol wrapper
static final int UNASSIGNED_SPECIAL_INDEX
static final AtomicInteger lastSpecial
static final ConcurrentLinkedQueue<Integer> freeSpecialIndices
static final int specialsInitialSize
SpecialBinding[] specials
static final ConcurrentHashMap<Integer,WeakReference<Symbol>> specialNames
static final int specialsDelta
private SpecialBindingsMark savedSpecials
private LispObject catchTags
private StackFrame stack
private static final Primitive MAKE_THREAD
private static final Primitive THREADP
private static final Primitive THREAD_ALIVE_P
private static final Primitive THREAD_NAME
private static final Primitive THREAD_JOIN
private static final Primitive SLEEP
private static final Primitive MAPCAR_THREADS
private static final Primitive DESTROY_THREAD
private static final Primitive INTERRUPT_THREAD
private static final Primitive CURRENT_THREAD
private static final Primitive BACKTRACE
private static final Primitive FRAME_TO_STRING
private static final Primitive FRAME_TO_LIST
private static final Primitive USE_FAST_CALLS
private static final SpecialOperator SYNCHRONIZED_ON
private static final Primitive OBJECT_WAIT
private static final Primitive OBJECT_NOTIFY
private static final Primitive OBJECT_NOTIFY_ALL
LispThread(Thread javaThread)
LispThread(Function fun, LispObject name)
public static final LispThread currentThread()
public StackTraceElement[] getJavaStackTrace()
public LispObject typeOf()
typeOf
in class LispObject
public LispObject classOf()
classOf
in class LispObject
public LispObject typep(LispObject typeSpecifier)
typep
in class LispObject
public final boolean isDestroyed()
final boolean isInterrupted()
final void setDestroyed(boolean b)
final void interrupt(LispObject function, LispObject args)
final void processThreadInterrupts()
public final LispObject[] getValues()
public final LispObject[] getValues(LispObject result, int count)
public final LispObject[] accumulateValues(LispObject result, LispObject[] oldValues)
public final LispObject setValues()
public final LispObject setValues(LispObject value1)
public final LispObject setValues(LispObject value1, LispObject value2)
public final LispObject setValues(LispObject value1, LispObject value2, LispObject value3)
public final LispObject setValues(LispObject value1, LispObject value2, LispObject value3, LispObject value4)
public final LispObject setValues(LispObject[] values)
public final void clearValues()
public final LispObject nothing()
public final LispObject value(LispObject obj)
public final SpecialBindingsMark markSpecialBindings()
public final void resetSpecialBindings(SpecialBindingsMark mark)
final void clearSpecialBindings()
private void assignSpecialIndex(Symbol sym)
protected static void releaseSpecialIndex(Symbol sym)
private void growSpecials()
private SpecialBinding ensureSpecialBinding(int idx)
public final SpecialBinding bindSpecial(Symbol name, LispObject value)
public final SpecialBinding bindSpecialToCurrentValue(Symbol name)
public final LispObject lookupSpecial(Symbol name)
Symbol.symbolValue()
.name
- The name of the special variable, normally a symbolSymbol.symbolValue()
public final SpecialBinding getSpecialBinding(Symbol name)
public final LispObject setSpecialVariable(Symbol name, LispObject value)
public final LispObject pushSpecial(Symbol name, LispObject thing)
public final LispObject safeSymbolValue(Symbol name)
public final void rebindSpecial(Symbol name, LispObject value)
public void pushCatchTag(LispObject tag)
public void popCatchTag()
public void throwToTag(LispObject tag, LispObject result)
public final void pushStackFrame(StackFrame frame)
public final void popStackFrame()
public void resetStack()
public LispObject execute(LispObject function)
execute
in class LispObject
public LispObject execute(LispObject function, LispObject arg)
execute
in class LispObject
public LispObject execute(LispObject function, LispObject first, LispObject second)
execute
in class LispObject
public LispObject execute(LispObject function, LispObject first, LispObject second, LispObject third)
execute
in class LispObject
public LispObject execute(LispObject function, LispObject first, LispObject second, LispObject third, LispObject fourth)
execute
in class LispObject
public LispObject execute(LispObject function, LispObject first, LispObject second, LispObject third, LispObject fourth, LispObject fifth)
execute
in class LispObject
public LispObject execute(LispObject function, LispObject first, LispObject second, LispObject third, LispObject fourth, LispObject fifth, LispObject sixth)
execute
in class LispObject
public LispObject execute(LispObject function, LispObject first, LispObject second, LispObject third, LispObject fourth, LispObject fifth, LispObject sixth, LispObject seventh)
execute
in class LispObject
public LispObject execute(LispObject function, LispObject first, LispObject second, LispObject third, LispObject fourth, LispObject fifth, LispObject sixth, LispObject seventh, LispObject eighth)
public LispObject execute(LispObject function, LispObject[] args)
public void printBacktrace()
public void printBacktrace(int limit)
public LispObject backtrace(int limit)
public void incrementCallCounts()
private static void pprint(LispObject obj, int indentBy, Stream stream)
public String writeToString()
writeToString
in class LispObject
public static final long javaSleepInterval(LispObject lispSleep)