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
|