Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

nice.lang.inline
Class ReferenceOp  view ReferenceOp download ReferenceOp.java

java.lang.Object
  extended bygnu.mapping.Procedure
      extended bygnu.mapping.Procedure2
          extended bynice.lang.inline.ReferenceOp
All Implemented Interfaces:
gnu.expr.Branchable, gnu.expr.Inlineable, bossa.syntax.Macro, gnu.mapping.Named

public class ReferenceOp
extends gnu.mapping.Procedure2
implements gnu.expr.Branchable, bossa.syntax.Macro

Inlining of native reference operators.


Field Summary
private static int Eq
           
private  int kind
           
private static int Ne
           
private static gnu.bytecode.Type retType
           
 
Fields inherited from class gnu.mapping.Procedure
 
Constructor Summary
private ReferenceOp(int kind)
           
 
Method Summary
 java.lang.Object apply2(java.lang.Object arg1, java.lang.Object arg2)
           
 void checkSpecialRequirements(bossa.syntax.Expression[] arguments)
          For each call site, this method is called with the actual arguments of the macro.
 void compile(gnu.expr.ApplyExp exp, gnu.expr.Compilation comp, gnu.expr.Target target)
           
 void compileJump(gnu.expr.Compilation comp, gnu.expr.Expression[] args, gnu.bytecode.Label to)
          Jump to label if the expression yields true.
 void compileJumpNot(gnu.expr.Compilation comp, gnu.expr.Expression[] args, gnu.bytecode.Label to)
          Jump to label if the expression yields false.
static ReferenceOp create(java.lang.String param)
           
 gnu.bytecode.Type getReturnType(gnu.expr.Expression[] args)
           
 
Methods inherited from class gnu.mapping.Procedure2
apply0, apply1, apply3, apply4, applyN, numArgs
 
Methods inherited from class gnu.mapping.Procedure
apply, checkArgCount, getName, getProperty, getSetter, maxArgs, minArgs, name, removeProperty, set0, set1, setN, setName, setProperty, setProperty, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

Eq

private static final int Eq
See Also:
Constant Field Values

Ne

private static final int Ne
See Also:
Constant Field Values

kind

private final int kind

retType

private static final gnu.bytecode.Type retType
Constructor Detail

ReferenceOp

private ReferenceOp(int kind)
Method Detail

create

public static ReferenceOp create(java.lang.String param)

compile

public void compile(gnu.expr.ApplyExp exp,
                    gnu.expr.Compilation comp,
                    gnu.expr.Target target)
Specified by:
compile in interface gnu.expr.Inlineable

compileJump

public void compileJump(gnu.expr.Compilation comp,
                        gnu.expr.Expression[] args,
                        gnu.bytecode.Label to)
Description copied from interface: gnu.expr.Branchable
Jump to label if the expression yields true.

Specified by:
compileJump in interface gnu.expr.Branchable

compileJumpNot

public void compileJumpNot(gnu.expr.Compilation comp,
                           gnu.expr.Expression[] args,
                           gnu.bytecode.Label to)
Description copied from interface: gnu.expr.Branchable
Jump to label if the expression yields false.

Specified by:
compileJumpNot in interface gnu.expr.Branchable

getReturnType

public gnu.bytecode.Type getReturnType(gnu.expr.Expression[] args)
Specified by:
getReturnType in interface gnu.expr.Inlineable

checkSpecialRequirements

public void checkSpecialRequirements(bossa.syntax.Expression[] arguments)
Description copied from interface: bossa.syntax.Macro
For each call site, this method is called with the actual arguments of the macro. This can be used to check special requirements on the arguments that could not be expressed in the type of the macro. For instance, it might be necessary to check that a certain argument is assignable if it is modified by the macro.

Specified by:
checkSpecialRequirements in interface bossa.syntax.Macro

apply2

public java.lang.Object apply2(java.lang.Object arg1,
                               java.lang.Object arg2)