< prev index next >

src/hotspot/share/interpreter/abstractInterpreter.cpp

Print this page

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



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

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