< prev index next >

src/hotspot/share/interpreter/abstractInterpreter.cpp

Print this page

136       case vmIntrinsics::_dsin:              return java_lang_math_sin;
137       case vmIntrinsics::_dcos:              return java_lang_math_cos;
138       case vmIntrinsics::_dtan:              return java_lang_math_tan;
139       case vmIntrinsics::_dsinh:             return java_lang_math_sinh;
140       case vmIntrinsics::_dtanh:             return java_lang_math_tanh;
141       case vmIntrinsics::_dcbrt:             return java_lang_math_cbrt;
142       case vmIntrinsics::_dabs:              return java_lang_math_abs;
143       case vmIntrinsics::_dlog:              return java_lang_math_log;
144       case vmIntrinsics::_dlog10:            return java_lang_math_log10;
145       case vmIntrinsics::_dpow:              return java_lang_math_pow;
146       case vmIntrinsics::_dexp:              return java_lang_math_exp;
147       case vmIntrinsics::_fmaD:              return java_lang_math_fmaD;
148       case vmIntrinsics::_fmaF:              return java_lang_math_fmaF;
149       case vmIntrinsics::_dsqrt:             return java_lang_math_sqrt;
150       case vmIntrinsics::_dsqrt_strict:      return java_lang_math_sqrt_strict;
151       case vmIntrinsics::_Reference_get0:    return java_lang_ref_reference_get0;
152       case vmIntrinsics::_Object_init:
153         if (m->code_size() == 1) {
154           // We need to execute the special return bytecode to check for
155           // finalizer registration so create a normal frame.


156           return zerolocals;




157         }
158         break;
159       default: break;
160     }
161   }
162 
163   // Native method?
164   if (m->is_native()) {
165     if (m->is_continuation_native_intrinsic()) {
166       // This entry will never be called.  The real entry gets generated later, like for MH intrinsics.
167       return abstract;
168     }
169     assert(!m->is_method_handle_intrinsic(), "overlapping bits here, watch out");
170     return m->is_synchronized() ? native_synchronized : native;
171   }
172 
173   // Synchronized?
174   if (m->is_synchronized()) {
175     return zerolocals_synchronized;
176   }

285   if (ientry != entry_for_kind(AbstractInterpreter::zerolocals) &&
286       ientry != entry_for_kind(AbstractInterpreter::zerolocals_synchronized))
287     return false;  // interpreter does not run this method!
288 
289   // otherwise, we can be sure this bytecode has never been executed
290   return true;
291 }
292 
293 
294 #ifndef PRODUCT
295 void AbstractInterpreter::print_method_kind(MethodKind kind) {
296   switch (kind) {
297     case zerolocals             : tty->print("zerolocals"             ); break;
298     case zerolocals_synchronized: tty->print("zerolocals_synchronized"); break;
299     case native                 : tty->print("native"                 ); break;
300     case native_synchronized    : tty->print("native_synchronized"    ); break;
301     case empty                  : tty->print("empty"                  ); break;
302     case getter                 : tty->print("getter"                 ); break;
303     case setter                 : tty->print("setter"                 ); break;
304     case abstract               : tty->print("abstract"               ); break;

305     case java_lang_math_sin     : tty->print("java_lang_math_sin"     ); break;
306     case java_lang_math_cos     : tty->print("java_lang_math_cos"     ); break;
307     case java_lang_math_tan     : tty->print("java_lang_math_tan"     ); break;
308     case java_lang_math_sinh    : tty->print("java_lang_math_sinh"    ); break;
309     case java_lang_math_tanh    : tty->print("java_lang_math_tanh"    ); break;
310     case java_lang_math_cbrt    : tty->print("java_lang_math_cbrt"    ); break;
311     case java_lang_math_abs     : tty->print("java_lang_math_abs"     ); break;
312     case java_lang_math_log     : tty->print("java_lang_math_log"     ); break;
313     case java_lang_math_log10   : tty->print("java_lang_math_log10"   ); break;
314     case java_lang_math_pow     : tty->print("java_lang_math_pow"     ); break;
315     case java_lang_math_exp     : tty->print("java_lang_math_exp"     ); break;
316     case java_lang_math_fmaD    : tty->print("java_lang_math_fmaD"    ); break;
317     case java_lang_math_fmaF    : tty->print("java_lang_math_fmaF"    ); break;
318     case java_lang_math_sqrt    : tty->print("java_lang_math_sqrt"    ); break;
319     case java_lang_math_sqrt_strict           : tty->print("java_lang_math_sqrt_strict"); break;
320     case java_util_zip_CRC32_update           : tty->print("java_util_zip_CRC32_update"); break;
321     case java_util_zip_CRC32_updateBytes      : tty->print("java_util_zip_CRC32_updateBytes"); break;
322     case java_util_zip_CRC32_updateByteBuffer : tty->print("java_util_zip_CRC32_updateByteBuffer"); break;
323     case java_util_zip_CRC32C_updateBytes     : tty->print("java_util_zip_CRC32C_updateBytes"); break;
324     case java_util_zip_CRC32C_updateDirectByteBuffer: tty->print("java_util_zip_CRC32C_updateDirectByteByffer"); break;

136       case vmIntrinsics::_dsin:              return java_lang_math_sin;
137       case vmIntrinsics::_dcos:              return java_lang_math_cos;
138       case vmIntrinsics::_dtan:              return java_lang_math_tan;
139       case vmIntrinsics::_dsinh:             return java_lang_math_sinh;
140       case vmIntrinsics::_dtanh:             return java_lang_math_tanh;
141       case vmIntrinsics::_dcbrt:             return java_lang_math_cbrt;
142       case vmIntrinsics::_dabs:              return java_lang_math_abs;
143       case vmIntrinsics::_dlog:              return java_lang_math_log;
144       case vmIntrinsics::_dlog10:            return java_lang_math_log10;
145       case vmIntrinsics::_dpow:              return java_lang_math_pow;
146       case vmIntrinsics::_dexp:              return java_lang_math_exp;
147       case vmIntrinsics::_fmaD:              return java_lang_math_fmaD;
148       case vmIntrinsics::_fmaF:              return java_lang_math_fmaF;
149       case vmIntrinsics::_dsqrt:             return java_lang_math_sqrt;
150       case vmIntrinsics::_dsqrt_strict:      return java_lang_math_sqrt_strict;
151       case vmIntrinsics::_Reference_get0:    return java_lang_ref_reference_get0;
152       case vmIntrinsics::_Object_init:
153         if (m->code_size() == 1) {
154           // We need to execute the special return bytecode to check for
155           // finalizer registration so create a normal frame.
156           // No need to use the method kind with a memory barrier on entry
157           // because the method is empty and already has a memory barrier on return
158           return zerolocals;
159         } else if (EnableValhalla) {
160           // For non-empty Object constructors, we need a memory barrier
161           // when entering the method to ensure correctness of strict fields
162           return object_init;
163         }
164         break;
165       default: break;
166     }
167   }
168 
169   // Native method?
170   if (m->is_native()) {
171     if (m->is_continuation_native_intrinsic()) {
172       // This entry will never be called.  The real entry gets generated later, like for MH intrinsics.
173       return abstract;
174     }
175     assert(!m->is_method_handle_intrinsic(), "overlapping bits here, watch out");
176     return m->is_synchronized() ? native_synchronized : native;
177   }
178 
179   // Synchronized?
180   if (m->is_synchronized()) {
181     return zerolocals_synchronized;
182   }

291   if (ientry != entry_for_kind(AbstractInterpreter::zerolocals) &&
292       ientry != entry_for_kind(AbstractInterpreter::zerolocals_synchronized))
293     return false;  // interpreter does not run this method!
294 
295   // otherwise, we can be sure this bytecode has never been executed
296   return true;
297 }
298 
299 
300 #ifndef PRODUCT
301 void AbstractInterpreter::print_method_kind(MethodKind kind) {
302   switch (kind) {
303     case zerolocals             : tty->print("zerolocals"             ); break;
304     case zerolocals_synchronized: tty->print("zerolocals_synchronized"); break;
305     case native                 : tty->print("native"                 ); break;
306     case native_synchronized    : tty->print("native_synchronized"    ); break;
307     case empty                  : tty->print("empty"                  ); break;
308     case getter                 : tty->print("getter"                 ); break;
309     case setter                 : tty->print("setter"                 ); break;
310     case abstract               : tty->print("abstract"               ); break;
311     case object_init            : tty->print("object_init"            ); break;
312     case java_lang_math_sin     : tty->print("java_lang_math_sin"     ); break;
313     case java_lang_math_cos     : tty->print("java_lang_math_cos"     ); break;
314     case java_lang_math_tan     : tty->print("java_lang_math_tan"     ); break;
315     case java_lang_math_sinh    : tty->print("java_lang_math_sinh"    ); break;
316     case java_lang_math_tanh    : tty->print("java_lang_math_tanh"    ); break;
317     case java_lang_math_cbrt    : tty->print("java_lang_math_cbrt"    ); break;
318     case java_lang_math_abs     : tty->print("java_lang_math_abs"     ); break;
319     case java_lang_math_log     : tty->print("java_lang_math_log"     ); break;
320     case java_lang_math_log10   : tty->print("java_lang_math_log10"   ); break;
321     case java_lang_math_pow     : tty->print("java_lang_math_pow"     ); break;
322     case java_lang_math_exp     : tty->print("java_lang_math_exp"     ); break;
323     case java_lang_math_fmaD    : tty->print("java_lang_math_fmaD"    ); break;
324     case java_lang_math_fmaF    : tty->print("java_lang_math_fmaF"    ); break;
325     case java_lang_math_sqrt    : tty->print("java_lang_math_sqrt"    ); break;
326     case java_lang_math_sqrt_strict           : tty->print("java_lang_math_sqrt_strict"); break;
327     case java_util_zip_CRC32_update           : tty->print("java_util_zip_CRC32_update"); break;
328     case java_util_zip_CRC32_updateBytes      : tty->print("java_util_zip_CRC32_updateBytes"); break;
329     case java_util_zip_CRC32_updateByteBuffer : tty->print("java_util_zip_CRC32_updateByteBuffer"); break;
330     case java_util_zip_CRC32C_updateBytes     : tty->print("java_util_zip_CRC32C_updateBytes"); break;
331     case java_util_zip_CRC32C_updateDirectByteBuffer: tty->print("java_util_zip_CRC32C_updateDirectByteByffer"); break;
< prev index next >