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
|