Package gnu.mapping

Class Procedure

    • Field Detail

      • applyToObjectMethod

        protected java.lang.invoke.MethodHandle applyToObjectMethod
        A static method with signature ??apply(Procedure,CallContext)
      • applyToConsumerMethod

        protected java.lang.invoke.MethodHandle applyToConsumerMethod
      • validateApplyKey

        public static final Symbol validateApplyKey
        Key for a property used by gnu.expr.Inlinecalls. The property value is either a String of the form "CLASSNAME:METHODNAME", or a java.lang.reflect.Method (or FUTURE: MethodHandle) for a static method whose parameters are (ApplyExp exp, InlineCalls visitor, Type required, Procedure proc) and returns a re-written/validated Expression.
      • validateXApplyKey

        public static final Symbol validateXApplyKey
        Same as validateApplyKey but handles splice args.
      • compilerXKey

        public static final Symbol compilerXKey
      • inlineIfConstantSymbol

        public static final Symbol inlineIfConstantSymbol
      • applyMethodType

        public static final java.lang.invoke.MethodType applyMethodType
      • applyToObjectDefault

        public static final java.lang.invoke.MethodHandle applyToObjectDefault
      • applyToConsumerDefault

        public static final java.lang.invoke.MethodHandle applyToConsumerDefault
    • Constructor Detail

      • Procedure

        public Procedure()
      • Procedure

        public Procedure​(java.lang.String n)
      • Procedure

        public Procedure​(boolean resultGoesToConsumer,
                         java.lang.invoke.MethodHandle applyMethod)
      • Procedure

        public Procedure​(boolean resultGoesToConsumer,
                         java.lang.invoke.MethodHandle applyMethod,
                         java.lang.String n)
    • Method Detail

      • setSourceLocation

        public void setSourceLocation​(java.lang.String file,
                                      int line)
      • getSourceLocation

        public java.lang.String getSourceLocation()
      • getApplyToConsumerMethod

        public final java.lang.invoke.MethodHandle getApplyToConsumerMethod()
      • getApplyToObjectMethod

        public final java.lang.invoke.MethodHandle getApplyToObjectMethod()
      • applyToConsumerDefault

        public static java.lang.Object applyToConsumerDefault​(Procedure proc,
                                                              CallContext ctx)
                                                       throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • applyToObjectDefault

        public static java.lang.Object applyToObjectDefault​(Procedure proc,
                                                            CallContext ctx)
                                                     throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • getApplyMethod

        public java.lang.invoke.MethodHandle getApplyMethod()
      • checkBadCode

        public void checkBadCode​(CallContext ctx)
      • applyL

        public java.lang.Object applyL​(ArgList args)
                                throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • applyN

        public java.lang.Object applyN​(java.lang.Object[] args)
                                throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • apply0

        public java.lang.Object apply0()
                                throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • apply1

        public java.lang.Object apply1​(java.lang.Object arg1)
                                throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • apply2

        public java.lang.Object apply2​(java.lang.Object arg1,
                                       java.lang.Object arg2)
                                throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • apply3

        public java.lang.Object apply3​(java.lang.Object arg1,
                                       java.lang.Object arg2,
                                       java.lang.Object arg3)
                                throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • apply4

        public java.lang.Object apply4​(java.lang.Object arg1,
                                       java.lang.Object arg2,
                                       java.lang.Object arg3,
                                       java.lang.Object arg4)
                                throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • minArgs

        public final int minArgs()
        Minimum number of arguments required.
      • maxArgs

        public final int maxArgs()
        Maximum number of arguments allowed, or -1 for unlimited. (May also return -1 if there are keyword arguments, for implementation reasons - FIXME.)
      • numArgs

        public int numArgs()
        Return minArgs()|(maxArgs<<12). We use a single virtual function to reduce the number of methods in the system, as well as the number of virtual method table entries. We shift by 12 so the number can normally be represented using a sipush instruction, without requiring a constant pool entry.
      • minArgs

        public static int minArgs​(int num)
        Extract minimum number of arguments from numArgs() encoding.
      • maxArgs

        public static int maxArgs​(int num)
        Extract maximum number of arguments from numArgs() encoding.
      • checkArgCount

        public static void checkArgCount​(Procedure proc,
                                         int argCount)
        Check that the number of arguments in a call is valid.
        Parameters:
        proc - the Procedure being called
        argCount - the number of arguments in the call
        Throws:
        WrongArguments - there are too many or too few actual arguments
      • setSetter

        public void setSetter​(Procedure setter)
      • set0

        public void set0​(java.lang.Object result)
                  throws java.lang.Throwable
        If HasSetter, the Procedure is called in the LHS of an assignment.
        Throws:
        java.lang.Throwable
      • set1

        public void set1​(java.lang.Object arg1,
                         java.lang.Object value)
                  throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • setN

        public void setN​(java.lang.Object[] args)
                  throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • isSideEffectFree

        public boolean isSideEffectFree()
        True if this Procedure (definitely) has no side-effects. Note side-effect-free does not imply idempotent if this allocates an object with "identity".
      • getReturnType

        public Type getReturnType​(Expression[] args)
        Semi-deprecated - instead should be set at Inline time. FIXME
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • lookupApplyHandle

        public static java.lang.invoke.MethodHandle lookupApplyHandle​(java.lang.Class clas,
                                                                      java.lang.String mname)