Class Interpreter

    • Constructor Detail

      • Interpreter

        public Interpreter()
    • Method Detail

      • compile

        public java.lang.Object compile​(CompilerEnvirons compilerEnv,
                                        ScriptNode tree,
                                        java.lang.String encodedSource,
                                        boolean returnFunction)
        Description copied from interface: Evaluator
        Compile the script or function from intermediate representation tree into an executable form.
        Specified by:
        compile in interface Evaluator
        Parameters:
        compilerEnv - Compiler environment
        tree - parse tree
        encodedSource - encoding of the source code for decompilation
        returnFunction - if true, compiling a function
        Returns:
        an opaque object that can be passed to either createFunctionObject or createScriptObject, depending on the value of returnFunction
      • createScriptObject

        public Script createScriptObject​(java.lang.Object bytecode,
                                         java.lang.Object staticSecurityDomain)
        Description copied from interface: Evaluator
        Create a script object.
        Specified by:
        createScriptObject in interface Evaluator
        Parameters:
        bytecode - opaque object returned by compile
        staticSecurityDomain - security domain
        Returns:
        Script object that can be evaluated
      • setEvalScriptFlag

        public void setEvalScriptFlag​(Script script)
        Description copied from interface: Evaluator
        Mark the given script to indicate it was created by a call to eval() or to a Function constructor.
        Specified by:
        setEvalScriptFlag in interface Evaluator
        Parameters:
        script - script to mark as from eval
      • createFunctionObject

        public Function createFunctionObject​(Context cx,
                                             Scriptable scope,
                                             java.lang.Object bytecode,
                                             java.lang.Object staticSecurityDomain)
        Description copied from interface: Evaluator
        Create a function object.
        Specified by:
        createFunctionObject in interface Evaluator
        Parameters:
        cx - Current context
        scope - scope of the function
        bytecode - opaque object returned by compile
        staticSecurityDomain - security domain
        Returns:
        Function object that can be called
      • getShort

        private static int getShort​(byte[] iCode,
                                    int pc)
      • getIndex

        private static int getIndex​(byte[] iCode,
                                    int pc)
      • getInt

        private static int getInt​(byte[] iCode,
                                  int pc)
      • getExceptionHandler

        private static int getExceptionHandler​(Interpreter.CallFrame frame,
                                               boolean onlyFinally)
      • bytecodeSpan

        private static int bytecodeSpan​(int bytecode)
      • captureStackInfo

        public void captureStackInfo​(RhinoException ex)
        Description copied from interface: Evaluator
        Capture stack information from the given exception.
        Specified by:
        captureStackInfo in interface Evaluator
        Parameters:
        ex - an exception thrown during execution
      • getSourcePositionFromStack

        public java.lang.String getSourcePositionFromStack​(Context cx,
                                                           int[] linep)
        Description copied from interface: Evaluator
        Get the source position information by examining the stack.
        Specified by:
        getSourcePositionFromStack in interface Evaluator
        Parameters:
        cx - Context
        linep - Array object of length >= 1; getSourcePositionFromStack will assign the line number to linep[0].
        Returns:
        the name of the file or other source container
      • getPatchedStack

        public java.lang.String getPatchedStack​(RhinoException ex,
                                                java.lang.String nativeStackTrace)
        Description copied from interface: Evaluator
        Given a native stack trace, patch it with script-specific source and line information
        Specified by:
        getPatchedStack in interface Evaluator
        Parameters:
        ex - exception
        nativeStackTrace - the native stack trace
        Returns:
        patched stack trace
      • getScriptStack

        public java.util.List<java.lang.String> getScriptStack​(RhinoException ex)
        Description copied from interface: Evaluator
        Get the script stack for the given exception
        Specified by:
        getScriptStack in interface Evaluator
        Parameters:
        ex - exception from execution
        Returns:
        list of strings for the stack trace
      • getEncodedSource

        static java.lang.String getEncodedSource​(InterpreterData idata)
      • resumeGenerator

        public static java.lang.Object resumeGenerator​(Context cx,
                                                       Scriptable scope,
                                                       int operation,
                                                       java.lang.Object savedState,
                                                       java.lang.Object value)
      • doInOrInstanceof

        private static int doInOrInstanceof​(Context cx,
                                            int op,
                                            java.lang.Object[] stack,
                                            double[] sDbl,
                                            int stackTop)
      • doCompare

        private static int doCompare​(Interpreter.CallFrame frame,
                                     int op,
                                     java.lang.Object[] stack,
                                     double[] sDbl,
                                     int stackTop)
      • doBitOp

        private static int doBitOp​(Interpreter.CallFrame frame,
                                   int op,
                                   java.lang.Object[] stack,
                                   double[] sDbl,
                                   int stackTop)
      • doDelName

        private static int doDelName​(Context cx,
                                     Interpreter.CallFrame frame,
                                     int op,
                                     java.lang.Object[] stack,
                                     double[] sDbl,
                                     int stackTop)
      • doGetElem

        private static int doGetElem​(Context cx,
                                     Interpreter.CallFrame frame,
                                     java.lang.Object[] stack,
                                     double[] sDbl,
                                     int stackTop)
      • doSetElem

        private static int doSetElem​(Context cx,
                                     Interpreter.CallFrame frame,
                                     java.lang.Object[] stack,
                                     double[] sDbl,
                                     int stackTop)
      • doElemIncDec

        private static int doElemIncDec​(Context cx,
                                        Interpreter.CallFrame frame,
                                        byte[] iCode,
                                        java.lang.Object[] stack,
                                        double[] sDbl,
                                        int stackTop)
      • doCallSpecial

        private static int doCallSpecial​(Context cx,
                                         Interpreter.CallFrame frame,
                                         java.lang.Object[] stack,
                                         double[] sDbl,
                                         int stackTop,
                                         byte[] iCode,
                                         int indexReg)
      • doSetConstVar

        private static int doSetConstVar​(Interpreter.CallFrame frame,
                                         java.lang.Object[] stack,
                                         double[] sDbl,
                                         int stackTop,
                                         java.lang.Object[] vars,
                                         double[] varDbls,
                                         int[] varAttributes,
                                         int indexReg)
      • doSetVar

        private static int doSetVar​(Interpreter.CallFrame frame,
                                    java.lang.Object[] stack,
                                    double[] sDbl,
                                    int stackTop,
                                    java.lang.Object[] vars,
                                    double[] varDbls,
                                    int[] varAttributes,
                                    int indexReg)
      • doGetVar

        private static int doGetVar​(Interpreter.CallFrame frame,
                                    java.lang.Object[] stack,
                                    double[] sDbl,
                                    int stackTop,
                                    java.lang.Object[] vars,
                                    double[] varDbls,
                                    int indexReg)
      • doVarIncDec

        private static int doVarIncDec​(Context cx,
                                       Interpreter.CallFrame frame,
                                       java.lang.Object[] stack,
                                       double[] sDbl,
                                       int stackTop,
                                       java.lang.Object[] vars,
                                       double[] varDbls,
                                       int[] varAttributes,
                                       int indexReg)
      • doRefMember

        private static int doRefMember​(Context cx,
                                       java.lang.Object[] stack,
                                       double[] sDbl,
                                       int stackTop,
                                       int flags)
      • doRefNsMember

        private static int doRefNsMember​(Context cx,
                                         java.lang.Object[] stack,
                                         double[] sDbl,
                                         int stackTop,
                                         int flags)
      • doRefNsName

        private static int doRefNsName​(Context cx,
                                       Interpreter.CallFrame frame,
                                       java.lang.Object[] stack,
                                       double[] sDbl,
                                       int stackTop,
                                       int flags)
      • doEquals

        private static boolean doEquals​(java.lang.Object[] stack,
                                        double[] sDbl,
                                        int stackTop)
      • doShallowEquals

        private static boolean doShallowEquals​(java.lang.Object[] stack,
                                               double[] sDbl,
                                               int stackTop)
      • enterFrame

        private static void enterFrame​(Context cx,
                                       Interpreter.CallFrame frame,
                                       java.lang.Object[] args,
                                       boolean continuationRestart)
      • setCallResult

        private static void setCallResult​(Interpreter.CallFrame frame,
                                          java.lang.Object callResult,
                                          double callResultDbl)
      • doAdd

        private static void doAdd​(java.lang.Object[] stack,
                                  double[] sDbl,
                                  int stackTop,
                                  Context cx)
      • doArithmetic

        private static int doArithmetic​(Interpreter.CallFrame frame,
                                        int op,
                                        java.lang.Object[] stack,
                                        double[] sDbl,
                                        int stackTop)
      • getArgsArray

        private static java.lang.Object[] getArgsArray​(java.lang.Object[] stack,
                                                       double[] sDbl,
                                                       int shift,
                                                       int count)