< prev index next >

src/hotspot/share/interpreter/abstractInterpreter.hpp

Print this page

 42 // (aka c++ interpreter). Th division of labor is as follows:
 43 
 44 // Template Interpreter          Zero Interpreter       Functionality
 45 //
 46 // templateTable*                bytecodeInterpreter*   actual interpretation of bytecodes
 47 //
 48 // templateInterpreter*          zeroInterpreter*       generation of assembly code that creates
 49 //                                                      and manages interpreter runtime frames.
 50 //
 51 
 52 class InterpreterMacroAssembler;
 53 
 54 class AbstractInterpreter: AllStatic {
 55   friend class VMStructs;
 56   friend class ZeroInterpreterGenerator;
 57   friend class TemplateInterpreterGenerator;
 58  public:
 59   enum MethodKind {
 60     zerolocals,                                                 // method needs locals initialization
 61     zerolocals_synchronized,                                    // method needs locals initialization & is synchronized


 62     native,                                                     // native method
 63     native_synchronized,                                        // native method & is synchronized


 64     empty,                                                      // empty method (code: _return)

 65     getter,                                                     // getter method
 66     setter,                                                     // setter method
 67     abstract,                                                   // abstract method (throws an AbstractMethodException)
 68     method_handle_invoke_FIRST,                                 // java.lang.invoke.MethodHandles::invokeExact, etc.
 69     method_handle_invoke_LAST                                   = (method_handle_invoke_FIRST
 70                                                                    + (static_cast<int>(vmIntrinsics::LAST_MH_SIG_POLY)
 71                                                                       - static_cast<int>(vmIntrinsics::FIRST_MH_SIG_POLY))),
 72     java_lang_math_sin,                                         // implementation of java.lang.Math.sin   (x)
 73     java_lang_math_cos,                                         // implementation of java.lang.Math.cos   (x)
 74     java_lang_math_tan,                                         // implementation of java.lang.Math.tan   (x)
 75     java_lang_math_tanh,                                        // implementation of java.lang.Math.tanh  (x)
 76     java_lang_math_abs,                                         // implementation of java.lang.Math.abs   (x)
 77     java_lang_math_sqrt,                                        // implementation of java.lang.Math.sqrt  (x)
 78     java_lang_math_sqrt_strict,                                 // implementation of java.lang.StrictMath.sqrt(x)
 79     java_lang_math_log,                                         // implementation of java.lang.Math.log   (x)
 80     java_lang_math_log10,                                       // implementation of java.lang.Math.log10 (x)
 81     java_lang_math_pow,                                         // implementation of java.lang.Math.pow   (x,y)
 82     java_lang_math_exp,                                         // implementation of java.lang.Math.exp   (x)
 83     java_lang_math_fmaF,                                        // implementation of java.lang.Math.fma   (x, y, z)
 84     java_lang_math_fmaD,                                        // implementation of java.lang.Math.fma   (x, y, z)

 42 // (aka c++ interpreter). Th division of labor is as follows:
 43 
 44 // Template Interpreter          Zero Interpreter       Functionality
 45 //
 46 // templateTable*                bytecodeInterpreter*   actual interpretation of bytecodes
 47 //
 48 // templateInterpreter*          zeroInterpreter*       generation of assembly code that creates
 49 //                                                      and manages interpreter runtime frames.
 50 //
 51 
 52 class InterpreterMacroAssembler;
 53 
 54 class AbstractInterpreter: AllStatic {
 55   friend class VMStructs;
 56   friend class ZeroInterpreterGenerator;
 57   friend class TemplateInterpreterGenerator;
 58  public:
 59   enum MethodKind {
 60     zerolocals,                                                 // method needs locals initialization
 61     zerolocals_synchronized,                                    // method needs locals initialization & is synchronized
 62     zerolocals_upcalls,                                         // method needs locals initialization & has runtime upcalls
 63     zerolocals_synchronized_upcalls,                            // method needs locals initialization & is synchronized & has runtime upcalls
 64     native,                                                     // native method
 65     native_synchronized,                                        // native method & is synchronized
 66     native_upcalls,                                             // native method & has runtime upcalls
 67     native_synchronized_upcalls,                                // native method & is synchronized & has runtime upcalls
 68     empty,                                                      // empty method (code: _return)
 69     empty_upcalls,                                              // empty method & has runtime upcalls (code: _return)
 70     getter,                                                     // getter method
 71     setter,                                                     // setter method
 72     abstract,                                                   // abstract method (throws an AbstractMethodException)
 73     method_handle_invoke_FIRST,                                 // java.lang.invoke.MethodHandles::invokeExact, etc.
 74     method_handle_invoke_LAST                                   = (method_handle_invoke_FIRST
 75                                                                    + (static_cast<int>(vmIntrinsics::LAST_MH_SIG_POLY)
 76                                                                       - static_cast<int>(vmIntrinsics::FIRST_MH_SIG_POLY))),
 77     java_lang_math_sin,                                         // implementation of java.lang.Math.sin   (x)
 78     java_lang_math_cos,                                         // implementation of java.lang.Math.cos   (x)
 79     java_lang_math_tan,                                         // implementation of java.lang.Math.tan   (x)
 80     java_lang_math_tanh,                                        // implementation of java.lang.Math.tanh  (x)
 81     java_lang_math_abs,                                         // implementation of java.lang.Math.abs   (x)
 82     java_lang_math_sqrt,                                        // implementation of java.lang.Math.sqrt  (x)
 83     java_lang_math_sqrt_strict,                                 // implementation of java.lang.StrictMath.sqrt(x)
 84     java_lang_math_log,                                         // implementation of java.lang.Math.log   (x)
 85     java_lang_math_log10,                                       // implementation of java.lang.Math.log10 (x)
 86     java_lang_math_pow,                                         // implementation of java.lang.Math.pow   (x,y)
 87     java_lang_math_exp,                                         // implementation of java.lang.Math.exp   (x)
 88     java_lang_math_fmaF,                                        // implementation of java.lang.Math.fma   (x, y, z)
 89     java_lang_math_fmaD,                                        // implementation of java.lang.Math.fma   (x, y, z)
< prev index next >