< prev index next >

src/hotspot/share/interpreter/abstractInterpreter.cpp

Print this page

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

150       case vmIntrinsics::_dsqrt_strict:      return java_lang_math_sqrt_strict;
151       case vmIntrinsics::_Reference_get:     return java_lang_ref_reference_get;
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     if (m->is_synchronized()) {
171       return m->has_upcall_on_method_entry() ? native_synchronized_upcalls : native_synchronized;
172     }
173     return m->has_upcall_on_method_entry() ? native_upcalls : native;
174   }
175 
176   // Synchronized?
177   if (m->is_synchronized()) {
178     return m->has_upcall_on_method_entry() ? zerolocals_synchronized_upcalls : zerolocals_synchronized;
179   }
180 
181   // Empty method?
182   if (m->is_empty_method()) {
183     return m->has_upcall_on_method_entry() ? empty_upcalls : 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 m->has_upcall_on_method_entry() ? zerolocals_upcalls : 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_cbrt        : return vmIntrinsics::_dcbrt;
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;
< prev index next >