< prev index next >

src/hotspot/share/interpreter/abstractInterpreter.cpp

Print this page

154       case vmIntrinsics::_dsqrt_strict:      return java_lang_math_sqrt_strict;
155       case vmIntrinsics::_Reference_get:     return java_lang_ref_reference_get;
156       case vmIntrinsics::_Object_init:
157         if (m->code_size() == 1) {
158           // We need to execute the special return bytecode to check for
159           // finalizer registration so create a normal frame.
160           return zerolocals;
161         }
162         break;
163       default: break;
164     }
165   }
166 
167   // Native method?
168   if (m->is_native()) {
169     if (m->is_continuation_native_intrinsic()) {
170       // This entry will never be called.  The real entry gets generated later, like for MH intrinsics.
171       return abstract;
172     }
173     assert(!m->is_method_handle_intrinsic(), "overlapping bits here, watch out");
174     return m->is_synchronized() ? native_synchronized : native;



175   }
176 
177   // Synchronized?
178   if (m->is_synchronized()) {
179     return zerolocals_synchronized;
180   }
181 
182   // Empty method?
183   if (m->is_empty_method()) {
184     return empty;
185   }
186 
187   // Getter method?
188   if (m->is_getter()) {
189     return getter;
190   }
191 
192   // Setter method?
193   if (m->is_setter()) {
194     return setter;
195   }
196 
197   // Note: for now: zero locals for all non-empty methods
198   return zerolocals;
199 }
200 
201 vmIntrinsics::ID AbstractInterpreter::method_intrinsic(MethodKind kind) {
202   switch (kind) {
203   case java_lang_math_sin         : return vmIntrinsics::_dsin;
204   case java_lang_math_cos         : return vmIntrinsics::_dcos;
205   case java_lang_math_tan         : return vmIntrinsics::_dtan;
206   case java_lang_math_tanh        : return vmIntrinsics::_dtanh;
207   case java_lang_math_abs         : return vmIntrinsics::_dabs;
208   case java_lang_math_log         : return vmIntrinsics::_dlog;
209   case java_lang_math_log10       : return vmIntrinsics::_dlog10;
210   case java_lang_math_sqrt        : return vmIntrinsics::_dsqrt;
211   case java_lang_math_sqrt_strict : return vmIntrinsics::_dsqrt_strict;
212   case java_lang_math_pow         : return vmIntrinsics::_dpow;
213   case java_lang_math_exp         : return vmIntrinsics::_dexp;
214   case java_lang_math_fmaD        : return vmIntrinsics::_fmaD;
215   case java_lang_math_fmaF        : return vmIntrinsics::_fmaF;
216   case java_lang_ref_reference_get: return vmIntrinsics::_Reference_get;
217   case java_util_zip_CRC32_update : return vmIntrinsics::_updateCRC32;
218   case java_util_zip_CRC32_updateBytes

154       case vmIntrinsics::_dsqrt_strict:      return java_lang_math_sqrt_strict;
155       case vmIntrinsics::_Reference_get:     return java_lang_ref_reference_get;
156       case vmIntrinsics::_Object_init:
157         if (m->code_size() == 1) {
158           // We need to execute the special return bytecode to check for
159           // finalizer registration so create a normal frame.
160           return zerolocals;
161         }
162         break;
163       default: break;
164     }
165   }
166 
167   // Native method?
168   if (m->is_native()) {
169     if (m->is_continuation_native_intrinsic()) {
170       // This entry will never be called.  The real entry gets generated later, like for MH intrinsics.
171       return abstract;
172     }
173     assert(!m->is_method_handle_intrinsic(), "overlapping bits here, watch out");
174     if (m->is_synchronized()) {
175       return m->has_upcall_on_method_entry() ? native_synchronized_upcalls : native_synchronized;
176     }
177     return m->has_upcall_on_method_entry() ? native_upcalls : native;
178   }
179 
180   // Synchronized?
181   if (m->is_synchronized()) {
182     return m->has_upcall_on_method_entry() ? zerolocals_synchronized_upcalls : zerolocals_synchronized;
183   }
184 
185   // Empty method?
186   if (m->is_empty_method()) {
187     return m->has_upcall_on_method_entry() ? empty_upcalls : empty;
188   }
189 
190   // Getter method?
191   if (m->is_getter()) {
192     return getter;
193   }
194 
195   // Setter method?
196   if (m->is_setter()) {
197     return setter;
198   }
199 
200   // Note: for now: zero locals for all non-empty methods
201   return m->has_upcall_on_method_entry() ? zerolocals_upcalls : zerolocals;
202 }
203 
204 vmIntrinsics::ID AbstractInterpreter::method_intrinsic(MethodKind kind) {
205   switch (kind) {
206   case java_lang_math_sin         : return vmIntrinsics::_dsin;
207   case java_lang_math_cos         : return vmIntrinsics::_dcos;
208   case java_lang_math_tan         : return vmIntrinsics::_dtan;
209   case java_lang_math_tanh        : return vmIntrinsics::_dtanh;
210   case java_lang_math_abs         : return vmIntrinsics::_dabs;
211   case java_lang_math_log         : return vmIntrinsics::_dlog;
212   case java_lang_math_log10       : return vmIntrinsics::_dlog10;
213   case java_lang_math_sqrt        : return vmIntrinsics::_dsqrt;
214   case java_lang_math_sqrt_strict : return vmIntrinsics::_dsqrt_strict;
215   case java_lang_math_pow         : return vmIntrinsics::_dpow;
216   case java_lang_math_exp         : return vmIntrinsics::_dexp;
217   case java_lang_math_fmaD        : return vmIntrinsics::_fmaD;
218   case java_lang_math_fmaF        : return vmIntrinsics::_fmaF;
219   case java_lang_ref_reference_get: return vmIntrinsics::_Reference_get;
220   case java_util_zip_CRC32_update : return vmIntrinsics::_updateCRC32;
221   case java_util_zip_CRC32_updateBytes
< prev index next >