When an error occurs during the execution of a miscop, a call to %SP-Internal-Error is performed. This call is a break-type call, so if the error is proceeded (with a Break-Return instruction), no value will be returned.
%SP-Internal-Error is passed a fixnum error code as its first argument. The second argument is a fixnum offset into the current code vector that points to the location immediately following the instruction that encountered the trouble. From this offset, the Lisp-level error handler can reconstruct the PC of the losing instruction, which is not readily available in the micro-machine. Following the offset, there may be 0 - 2 additional arguments that provide information of possible use to the error handler. For example, an unbound-symbol error will pass the symbol in question as the third arg.
The following error codes are currently defined. Unless otherwise specified, only the error code and the code-vector offset are passed as arguments.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object (which is not an array or function header) is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
The object is passed as the third argument.
A complex number has been passed to the comparison routine for < or >. The complex number is passed as the third argument.
Attempted access to the special value of an unbound symbol. Passes the symbol as the third argument to %Sp-Internal-Error.
Attempted access to the definition cell of an undefined symbol. Passes the symbol as the third argument to %Sp-Internal-Error.
Attempt to bind or setq the special value of NIL.
Attempt to bind or setq the special value of T.
The specified access type is returned as the third argument.
Attempt to allocate a vector with negative size or size too large for vectors of this type. Passes the requested size as the third argument.
The specified index is out of bounds for this vector. The bad index is passed as the third argument.
The specified index is not a positive fixnum. The bad index is passed as the third argument.
The specified value to shrink a vector to is not a positive fixnum. The bad value is passed as the third argument.
The specified value is greater than the current size of the vector being shrunk. The bad value is passed as the third argument.
The data vector of an array is illegal. The bad vector is passed as the third value.
An attempt has been made to access an array as a two or three dimensional array when it has fewer than two or three dimensions, respectively.
An attempt has been made to access an array as a two or three dimensional array when it has more than two or three dimensions, respectively.
A bad byte specifier has been passed to one of the byte manipulation miscops. The offending byte specifier is passed as the third argument.
A bad position has been given in a byte specifier that has been passed to one of the byte manipulation miscops. The offending byte specifier is passed as the third argument.
A bad size has been given in a byte specifier that has been passed to one of the byte manipulation miscops. The offending byte specifier is passed as the third argument.
A shift miscop has encountered non fixnum shift count. The offending shift count is passed as the third argument.
The operation code passed to the boole miscop is either not a fixnum or is out of range. The operation code is passed as the third argument.
Too few arguments have been passed to a function. The number of arguments actually passed is passed as the third argument, and the function is passed as the fourth.
Too many arguments have been passed to a function. The number of arguments actually passed is passed as the third argument, and the function is passed as the fourth.
The last argument to a function being invoked by apply is not a list. The last argument is passed as the third argument.
An attempt has been made to call a function through a link table entry which no longer exists. This is a serious internal error and should never happen.
The check-<= miscop will invoke this error if the condition is false. The two arguments are passed as the third and fourth arguments to %SP-internal-error.
An division operation has done a division by zero. The two operands are passed as the third and fourth arguments.
An attempt has been made to throw to a tag that is not in the current catch hierarchy. The offending tag is passed as the third argument.
A short float operation has resulted in underflow. The two arguments to the operation are passed as the third and fourth arguments.
A short float operation has resulted in overflow. The two arguments to the operation are passed as the third and fourth arguments.
A single float operation has resulted in underflow. The two arguments to the operation are passed as the third and fourth arguments.
A single float operation has resulted in overflow. The two arguments to the operation are passed as the third and fourth arguments.
A long float operation has resulted in underflow. The two arguments to the operation are passed as the third and fourth arguments.
A long float operation has resulted in overflow. The two arguments to the operation are passed as the third and fourth arguments.
A short float operation has resulted in underflow. The argument to the operation is passed as the third argument.
A short float operation has resulted in overflow. The argument to the operation is passed as the third argument.
A long float operation has resulted in underflow. The argument to the operation is passed as the third argument.
A long float operation has resulted in overflow. The argument to the operation is passed as the third argument.