< prev index next >

src/hotspot/share/interpreter/abstractInterpreter.hpp

Print this page




  72     java_lang_math_cos,                                         // implementation of java.lang.Math.cos   (x)
  73     java_lang_math_tan,                                         // implementation of java.lang.Math.tan   (x)
  74     java_lang_math_abs,                                         // implementation of java.lang.Math.abs   (x)
  75     java_lang_math_sqrt,                                        // implementation of java.lang.Math.sqrt  (x)
  76     java_lang_math_log,                                         // implementation of java.lang.Math.log   (x)
  77     java_lang_math_log10,                                       // implementation of java.lang.Math.log10 (x)
  78     java_lang_math_pow,                                         // implementation of java.lang.Math.pow   (x,y)
  79     java_lang_math_exp,                                         // implementation of java.lang.Math.exp   (x)
  80     java_lang_math_fmaF,                                        // implementation of java.lang.Math.fma   (x, y, z)
  81     java_lang_math_fmaD,                                        // implementation of java.lang.Math.fma   (x, y, z)
  82     java_lang_ref_reference_get,                                // implementation of java.lang.ref.Reference.get()
  83     java_util_zip_CRC32_update,                                 // implementation of java.util.zip.CRC32.update()
  84     java_util_zip_CRC32_updateBytes,                            // implementation of java.util.zip.CRC32.updateBytes()
  85     java_util_zip_CRC32_updateByteBuffer,                       // implementation of java.util.zip.CRC32.updateByteBuffer()
  86     java_util_zip_CRC32C_updateBytes,                           // implementation of java.util.zip.CRC32C.updateBytes(crc, b[], off, end)
  87     java_util_zip_CRC32C_updateDirectByteBuffer,                // implementation of java.util.zip.CRC32C.updateDirectByteBuffer(crc, address, off, end)
  88     java_lang_Float_intBitsToFloat,                             // implementation of java.lang.Float.intBitsToFloat()
  89     java_lang_Float_floatToRawIntBits,                          // implementation of java.lang.Float.floatToRawIntBits()
  90     java_lang_Double_longBitsToDouble,                          // implementation of java.lang.Double.longBitsToDouble()
  91     java_lang_Double_doubleToRawLongBits,                       // implementation of java.lang.Double.doubleToRawLongBits()


  92     number_of_method_entries,
  93     invalid = -1
  94   };
  95 
  96   // Conversion from the part of the above enum to vmIntrinsics::_invokeExact, etc.
  97   static vmIntrinsics::ID method_handle_intrinsic(MethodKind kind) {
  98     if (kind >= method_handle_invoke_FIRST && kind <= method_handle_invoke_LAST)
  99       return (vmIntrinsics::ID)( vmIntrinsics::FIRST_MH_SIG_POLY + (kind - method_handle_invoke_FIRST) );
 100     else
 101       return vmIntrinsics::_none;
 102   }
 103 
 104   enum SomeConstants {
 105     number_of_result_handlers = 10                              // number of result handlers for native calls
 106   };
 107 
 108  protected:
 109   static StubQueue* _code;                                      // the interpreter code (codelets)
 110 
 111   static bool       _notice_safepoints;                         // true if safepoints are activated


 138   static address entry_for_cds_method(const methodHandle& m) {
 139     MethodKind k = method_kind(m);
 140     assert(0 <= k && k < number_of_method_entries, "illegal kind");
 141     return _cds_entry_table[k];
 142   }
 143 
 144   // used by class data sharing
 145   static void       update_cds_entry_table(MethodKind kind) NOT_CDS_RETURN;
 146 
 147   static address    get_trampoline_code_buffer(AbstractInterpreter::MethodKind kind) NOT_CDS_RETURN_(0);
 148 
 149   // used for bootstrapping method handles:
 150   static void       set_entry_for_kind(MethodKind k, address e);
 151 
 152   static void       print_method_kind(MethodKind kind)          PRODUCT_RETURN;
 153 
 154   // These should never be compiled since the interpreter will prefer
 155   // the compiled version to the intrinsic version.
 156   static bool       can_be_compiled(const methodHandle& m) {
 157     switch (m->intrinsic_id()) {


 158       case vmIntrinsics::_dsin  : // fall thru
 159       case vmIntrinsics::_dcos  : // fall thru
 160       case vmIntrinsics::_dtan  : // fall thru
 161       case vmIntrinsics::_dabs  : // fall thru
 162       case vmIntrinsics::_dsqrt : // fall thru
 163       case vmIntrinsics::_dlog  : // fall thru
 164       case vmIntrinsics::_dlog10: // fall thru
 165       case vmIntrinsics::_dpow  : // fall thru
 166       case vmIntrinsics::_dexp  : // fall thru
 167       case vmIntrinsics::_fmaD  : // fall thru
 168       case vmIntrinsics::_fmaF  : // fall thru
 169         return false;
 170       default:
 171         return true;
 172     }
 173   }
 174 
 175   // Runtime support
 176 
 177   // length = invoke bytecode length (to advance to next bytecode)




  72     java_lang_math_cos,                                         // implementation of java.lang.Math.cos   (x)
  73     java_lang_math_tan,                                         // implementation of java.lang.Math.tan   (x)
  74     java_lang_math_abs,                                         // implementation of java.lang.Math.abs   (x)
  75     java_lang_math_sqrt,                                        // implementation of java.lang.Math.sqrt  (x)
  76     java_lang_math_log,                                         // implementation of java.lang.Math.log   (x)
  77     java_lang_math_log10,                                       // implementation of java.lang.Math.log10 (x)
  78     java_lang_math_pow,                                         // implementation of java.lang.Math.pow   (x,y)
  79     java_lang_math_exp,                                         // implementation of java.lang.Math.exp   (x)
  80     java_lang_math_fmaF,                                        // implementation of java.lang.Math.fma   (x, y, z)
  81     java_lang_math_fmaD,                                        // implementation of java.lang.Math.fma   (x, y, z)
  82     java_lang_ref_reference_get,                                // implementation of java.lang.ref.Reference.get()
  83     java_util_zip_CRC32_update,                                 // implementation of java.util.zip.CRC32.update()
  84     java_util_zip_CRC32_updateBytes,                            // implementation of java.util.zip.CRC32.updateBytes()
  85     java_util_zip_CRC32_updateByteBuffer,                       // implementation of java.util.zip.CRC32.updateByteBuffer()
  86     java_util_zip_CRC32C_updateBytes,                           // implementation of java.util.zip.CRC32C.updateBytes(crc, b[], off, end)
  87     java_util_zip_CRC32C_updateDirectByteBuffer,                // implementation of java.util.zip.CRC32C.updateDirectByteBuffer(crc, address, off, end)
  88     java_lang_Float_intBitsToFloat,                             // implementation of java.lang.Float.intBitsToFloat()
  89     java_lang_Float_floatToRawIntBits,                          // implementation of java.lang.Float.floatToRawIntBits()
  90     java_lang_Double_longBitsToDouble,                          // implementation of java.lang.Double.longBitsToDouble()
  91     java_lang_Double_doubleToRawLongBits,                       // implementation of java.lang.Double.doubleToRawLongBits()
  92     java_lang_System_setBit,
  93     java_lang_System_clrBit,
  94     number_of_method_entries,
  95     invalid = -1
  96   };
  97 
  98   // Conversion from the part of the above enum to vmIntrinsics::_invokeExact, etc.
  99   static vmIntrinsics::ID method_handle_intrinsic(MethodKind kind) {
 100     if (kind >= method_handle_invoke_FIRST && kind <= method_handle_invoke_LAST)
 101       return (vmIntrinsics::ID)( vmIntrinsics::FIRST_MH_SIG_POLY + (kind - method_handle_invoke_FIRST) );
 102     else
 103       return vmIntrinsics::_none;
 104   }
 105 
 106   enum SomeConstants {
 107     number_of_result_handlers = 10                              // number of result handlers for native calls
 108   };
 109 
 110  protected:
 111   static StubQueue* _code;                                      // the interpreter code (codelets)
 112 
 113   static bool       _notice_safepoints;                         // true if safepoints are activated


 140   static address entry_for_cds_method(const methodHandle& m) {
 141     MethodKind k = method_kind(m);
 142     assert(0 <= k && k < number_of_method_entries, "illegal kind");
 143     return _cds_entry_table[k];
 144   }
 145 
 146   // used by class data sharing
 147   static void       update_cds_entry_table(MethodKind kind) NOT_CDS_RETURN;
 148 
 149   static address    get_trampoline_code_buffer(AbstractInterpreter::MethodKind kind) NOT_CDS_RETURN_(0);
 150 
 151   // used for bootstrapping method handles:
 152   static void       set_entry_for_kind(MethodKind k, address e);
 153 
 154   static void       print_method_kind(MethodKind kind)          PRODUCT_RETURN;
 155 
 156   // These should never be compiled since the interpreter will prefer
 157   // the compiled version to the intrinsic version.
 158   static bool       can_be_compiled(const methodHandle& m) {
 159     switch (m->intrinsic_id()) {
 160       case vmIntrinsics::_setBit: // fall thru
 161       case vmIntrinsics::_clrBit: // fall thru
 162       case vmIntrinsics::_dsin  : // fall thru
 163       case vmIntrinsics::_dcos  : // fall thru
 164       case vmIntrinsics::_dtan  : // fall thru
 165       case vmIntrinsics::_dabs  : // fall thru
 166       case vmIntrinsics::_dsqrt : // fall thru
 167       case vmIntrinsics::_dlog  : // fall thru
 168       case vmIntrinsics::_dlog10: // fall thru
 169       case vmIntrinsics::_dpow  : // fall thru
 170       case vmIntrinsics::_dexp  : // fall thru
 171       case vmIntrinsics::_fmaD  : // fall thru
 172       case vmIntrinsics::_fmaF  : // fall thru
 173         return false;
 174       default:
 175         return true;
 176     }
 177   }
 178 
 179   // Runtime support
 180 
 181   // length = invoke bytecode length (to advance to next bytecode)


< prev index next >