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