It's a special temporary variable that holds an error code. The special object array defines a list of error code that the VM can use to explain to the programmer why the primitive failed, which are currently symbols.
Right. In the VM primitive failure is indicated by a variable called primFailCode being non-zero. On activating a method with a failing primitive, if the index is in bounds of the primitiveFailCodes array in the specialObjectsArray then the failure code substitutes the symbol in the
primitiveFailCodes array, otherwise it supplies the integer value.This is simpler than the VW scheme which allocates a PrimFailCode that has a name inst car and a parameter. Our system has only the name.