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

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

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

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