177 return (ref_kind == JVM_REF_invokeVirtual ||
178 ref_kind == JVM_REF_invokeInterface);
179 }
180
181
182 #ifdef TARGET_ARCH_x86
183 # include "methodHandles_x86.hpp"
184 #endif
185 #ifdef TARGET_ARCH_sparc
186 # include "methodHandles_sparc.hpp"
187 #endif
188 #ifdef TARGET_ARCH_zero
189 # include "methodHandles_zero.hpp"
190 #endif
191 #ifdef TARGET_ARCH_arm
192 # include "methodHandles_arm.hpp"
193 #endif
194 #ifdef TARGET_ARCH_ppc
195 # include "methodHandles_ppc.hpp"
196 #endif
197
198 // Tracing
199 static void trace_method_handle(MacroAssembler* _masm, const char* adaptername) PRODUCT_RETURN;
200 static void trace_method_handle_interpreter_entry(MacroAssembler* _masm, vmIntrinsics::ID iid) {
201 if (TraceMethodHandles) {
202 const char* name = vmIntrinsics::name_at(iid);
203 if (*name == '_') name += 1;
204 const size_t len = strlen(name) + 50;
205 char* qname = NEW_C_HEAP_ARRAY(char, len, mtInternal);
206 const char* suffix = "";
207 if (is_signature_polymorphic(iid)) {
208 if (is_signature_polymorphic_static(iid))
209 suffix = "/static";
210 else
211 suffix = "/private";
212 }
213 jio_snprintf(qname, len, "MethodHandle::interpreter_entry::%s%s", name, suffix);
214 trace_method_handle(_masm, qname);
215 // Note: Don't free the allocated char array because it's used
216 // during runtime.
|
177 return (ref_kind == JVM_REF_invokeVirtual ||
178 ref_kind == JVM_REF_invokeInterface);
179 }
180
181
182 #ifdef TARGET_ARCH_x86
183 # include "methodHandles_x86.hpp"
184 #endif
185 #ifdef TARGET_ARCH_sparc
186 # include "methodHandles_sparc.hpp"
187 #endif
188 #ifdef TARGET_ARCH_zero
189 # include "methodHandles_zero.hpp"
190 #endif
191 #ifdef TARGET_ARCH_arm
192 # include "methodHandles_arm.hpp"
193 #endif
194 #ifdef TARGET_ARCH_ppc
195 # include "methodHandles_ppc.hpp"
196 #endif
197 #ifdef TARGET_ARCH_aarch64
198 # include "methodHandles_aarch64.hpp"
199 #endif
200
201 // Tracing
202 static void trace_method_handle(MacroAssembler* _masm, const char* adaptername) PRODUCT_RETURN;
203 static void trace_method_handle_interpreter_entry(MacroAssembler* _masm, vmIntrinsics::ID iid) {
204 if (TraceMethodHandles) {
205 const char* name = vmIntrinsics::name_at(iid);
206 if (*name == '_') name += 1;
207 const size_t len = strlen(name) + 50;
208 char* qname = NEW_C_HEAP_ARRAY(char, len, mtInternal);
209 const char* suffix = "";
210 if (is_signature_polymorphic(iid)) {
211 if (is_signature_polymorphic_static(iid))
212 suffix = "/static";
213 else
214 suffix = "/private";
215 }
216 jio_snprintf(qname, len, "MethodHandle::interpreter_entry::%s%s", name, suffix);
217 trace_method_handle(_masm, qname);
218 // Note: Don't free the allocated char array because it's used
219 // during runtime.
|