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;
|