src/share/vm/interpreter/abstractInterpreter.hpp

Print this page
rev 3227 : 7133857: exp() and pow() should use the x87 ISA on x86
Summary: use x87 instructions to implement exp() and pow() in interpreter/c1/c2.
Reviewed-by:


  90   friend class VMStructs;
  91   friend class Interpreter;
  92   friend class CppInterpreterGenerator;
  93  public:
  94   enum MethodKind {
  95     zerolocals,                                                 // method needs locals initialization
  96     zerolocals_synchronized,                                    // method needs locals initialization & is synchronized
  97     native,                                                     // native method
  98     native_synchronized,                                        // native method & is synchronized
  99     empty,                                                      // empty method (code: _return)
 100     accessor,                                                   // accessor method (code: _aload_0, _getfield, _(a|i)return)
 101     abstract,                                                   // abstract method (throws an AbstractMethodException)
 102     method_handle,                                              // java.lang.invoke.MethodHandles::invoke
 103     java_lang_math_sin,                                         // implementation of java.lang.Math.sin   (x)
 104     java_lang_math_cos,                                         // implementation of java.lang.Math.cos   (x)
 105     java_lang_math_tan,                                         // implementation of java.lang.Math.tan   (x)
 106     java_lang_math_abs,                                         // implementation of java.lang.Math.abs   (x)
 107     java_lang_math_sqrt,                                        // implementation of java.lang.Math.sqrt  (x)
 108     java_lang_math_log,                                         // implementation of java.lang.Math.log   (x)
 109     java_lang_math_log10,                                       // implementation of java.lang.Math.log10 (x)


 110     java_lang_ref_reference_get,                                // implementation of java.lang.ref.Reference.get()
 111     number_of_method_entries,
 112     invalid = -1
 113   };
 114 
 115   enum SomeConstants {
 116     number_of_result_handlers = 10                              // number of result handlers for native calls
 117   };
 118 
 119  protected:
 120   static StubQueue* _code;                                      // the interpreter code (codelets)
 121 
 122   static bool       _notice_safepoints;                         // true if safepoints are activated
 123 
 124   static address    _native_entry_begin;                        // Region for native entry code
 125   static address    _native_entry_end;
 126 
 127   // method entry points
 128   static address    _entry_table[number_of_method_entries];     // entry points for a given method
 129   static address    _native_abi_to_tosca[number_of_result_handlers];  // for native method result handlers




  90   friend class VMStructs;
  91   friend class Interpreter;
  92   friend class CppInterpreterGenerator;
  93  public:
  94   enum MethodKind {
  95     zerolocals,                                                 // method needs locals initialization
  96     zerolocals_synchronized,                                    // method needs locals initialization & is synchronized
  97     native,                                                     // native method
  98     native_synchronized,                                        // native method & is synchronized
  99     empty,                                                      // empty method (code: _return)
 100     accessor,                                                   // accessor method (code: _aload_0, _getfield, _(a|i)return)
 101     abstract,                                                   // abstract method (throws an AbstractMethodException)
 102     method_handle,                                              // java.lang.invoke.MethodHandles::invoke
 103     java_lang_math_sin,                                         // implementation of java.lang.Math.sin   (x)
 104     java_lang_math_cos,                                         // implementation of java.lang.Math.cos   (x)
 105     java_lang_math_tan,                                         // implementation of java.lang.Math.tan   (x)
 106     java_lang_math_abs,                                         // implementation of java.lang.Math.abs   (x)
 107     java_lang_math_sqrt,                                        // implementation of java.lang.Math.sqrt  (x)
 108     java_lang_math_log,                                         // implementation of java.lang.Math.log   (x)
 109     java_lang_math_log10,                                       // implementation of java.lang.Math.log10 (x)
 110     java_lang_math_pow,                                         // implementation of java.lang.Math.pow   (x,y)
 111     java_lang_math_exp,                                         // implementation of java.lang.Math.exp   (x)
 112     java_lang_ref_reference_get,                                // implementation of java.lang.ref.Reference.get()
 113     number_of_method_entries,
 114     invalid = -1
 115   };
 116 
 117   enum SomeConstants {
 118     number_of_result_handlers = 10                              // number of result handlers for native calls
 119   };
 120 
 121  protected:
 122   static StubQueue* _code;                                      // the interpreter code (codelets)
 123 
 124   static bool       _notice_safepoints;                         // true if safepoints are activated
 125 
 126   static address    _native_entry_begin;                        // Region for native entry code
 127   static address    _native_entry_end;
 128 
 129   // method entry points
 130   static address    _entry_table[number_of_method_entries];     // entry points for a given method
 131   static address    _native_abi_to_tosca[number_of_result_handlers];  // for native method result handlers