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
|