Jatha Software

org.jatha.machine
Class opTEST

java.lang.Object
  extended by org.jatha.dynatype.StandardLispValue
      extended by org.jatha.compile.LispPrimitive
          extended by org.jatha.machine.SECDop
              extended by org.jatha.machine.opTEST
All Implemented Interfaces:
Comparable, LispValue

 class opTEST
extends SECDop

opTEST is a variation of SEL that optimizes for recursion in the else part. It eliminates pushing anything on the Dump. Modifes S register.

See Also:
SECDMachine, opSEL

Field Summary
 
Fields inherited from class org.jatha.compile.LispPrimitive
functionName, functionNameSymbol, inlineP, maxNumberOfArgs, minNumberOfArgs
 
Fields inherited from class org.jatha.dynatype.StandardLispValue
f_lisp
 
Constructor Summary
opTEST(Jatha lisp)
          It calls SECDop() with the machine argument and the label of this instruction.
 
Method Summary
 void Execute(SECDMachine machine)
          Execute performs the operation using the abstract machine registers.
 LispValue grindef(LispValue code, int indentAmount)
           
 
Methods inherited from class org.jatha.machine.SECDop
getComponentAt, loc, setComponentAt, setLoc, toString
 
Methods inherited from class org.jatha.compile.LispPrimitive
basic_functionp, CompileArgs, CompileArgs, indent, internal_prin1, internal_princ, internal_print, LispFunctionNameString, LispFunctionNameSymbol, parameterCountString, printCode, printCode, validArgumentList
 
Methods inherited from class org.jatha.dynatype.StandardLispValue
abs, acos, add, adjustSpecialCount, append, apply, apropos_print, asin, assoc, atan, atan2, atom, basic_atom, basic_bignump, basic_consp, basic_constantp, basic_floatp, basic_foreignp, basic_integerp, basic_keywordp, basic_length, basic_listp, basic_macrop, basic_null, basic_numberp, basic_stringp, basic_symbolp, bignump, boundp, butlast, car, cdr, ceiling, characterp, clrhash, compareTo, concatenate, consp, constantp, contains, copy_list, copy, cos, cot, csc, degreesToRadians, divide, documentation, eighth, elt, elt, eq, eql, equal, equalNumeric, factorial, fboundp, fifth, first, floatp, floor, fourth, funcall, functionp, get_specialCount, gethash, gethash, getLisp, greaterThan, greaterThanOrEqual, hash_table_count, hash_table_rehash_size, hash_table_rehash_threshold, hash_table_size, hash_table_test, hashtablep, integerp, internal_getName, internal_prin1_as_cdr, internal_princ_as_cdr, internal_print_as_cdr, iterator, keywordp, last, length, lessThan, lessThanOrEqual, lisp_null, list, listp, max, member, min, multiply, nconc, negate, neql, ninth, nreverse, nstringCapitalize, nstringDowncase, nstringUpcase, numberp, pop, position, prin1, princ, print, push, radiansToDegrees, rassoc, readFromString, reciprocal, remhash, remove, rest, reverse, rplaca, rplacd, sec, second, set_special, setf_documentation, setf_gethash, setf_symbol_function, setf_symbol_plist, setf_symbol_value, setLisp, setPackage, setq, seventh, showStackTrace, sin, sixth, specialP, sqrt, string, stringCapitalize, stringDowncase, stringEndsWith, stringEq, stringEqual, stringGreaterP, stringGreaterThan, stringGreaterThanOrEqual, stringLeftTrim, stringLeftTrim, stringLessP, stringLessThan, stringLessThanOrEqual, stringNeq, stringNotGreaterP, stringNotLessP, stringp, stringRightTrim, stringRightTrim, stringStartsWith, stringTrim, stringTrim, stringUpcase, subst, substring, substring, subtract, symbol_function, symbol_name, symbol_package, symbol_plist, symbol_value, symbolp, tan, tenth, third, toCollection, toJava, toJava, toString, toStringAsCdr_internal, toStringAsCdr, toStringShort, toStringShort, toStringSimple, type_of, typep, uses, zerop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

opTEST

public opTEST(Jatha lisp)
It calls SECDop() with the machine argument and the label of this instruction.

See Also:
SECDMachine
Method Detail

Execute

public void Execute(SECDMachine machine)
Description copied from class: LispPrimitive
Execute performs the operation using the abstract machine registers. Arguments are found on the S register stack, in reverse order. UNLIMITED argument lists are collected into a list which is the top element on the stack. The implementation should pop an appropriate number of arguments from the stack, perform a computation, then push a result back on the S stack. The instruction should then be popped from the C (code) register. A LispValueFactory objects is available in the static variable LispValueFactory. Example implementations:
   FIRST
   class FirstPrimitive extends LispPrimitive
   {
     public First()
     {
       super("FIRST", 1);   // 1 argument
     }

     public void Execute(SECDMachine machine)
     {
       LispValue arg = machine.S.pop();

       machine.S.push(my_first(arg));
       machine.C.pop();
     }
   }
 
A multi-argument function must pop the arguments in reverse order.
     public void Execute(SECDMachine machine)
     {
       LispValue arg2 = machine.S.pop();
       LispValue arg1 = machine.S.pop();

       machine.S.push(my_new_function(arg1, arg2));
       machine.C.pop();
     }
   }
 
To register the new primitive, call:
    Jatha.COMPILER.Register(new FirstPrimitive());
 

Specified by:
Execute in class LispPrimitive
Parameters:
machine - The abstract machine instance.
See Also:
LispCompiler

grindef

public LispValue grindef(LispValue code,
                         int indentAmount)
Overrides:
grindef in class LispPrimitive

Jatha Software