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)
|