< prev index next >

src/hotspot/share/interpreter/abstractInterpreter.cpp

Print this page

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



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

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