2079 assert(frame_complete != -1, "Must be set");
2080 assert(stack_slots != -1, "Must be set");
2081 assert(vep_offset != -1, "Must be set");
2082 #endif
2083
2084 __ flush();
2085 nmethod* nm = nmethod::new_native_nmethod(method,
2086 compile_id,
2087 masm->code(),
2088 vep_offset,
2089 frame_complete,
2090 stack_slots,
2091 in_ByteSize(-1),
2092 in_ByteSize(-1),
2093 oop_maps,
2094 exception_offset);
2095 if (nm == nullptr) return nm;
2096 if (method->is_continuation_enter_intrinsic()) {
2097 ContinuationEntry::set_enter_code(nm, interpreted_entry_offset);
2098 } else if (method->is_continuation_yield_intrinsic()) {
2099 _cont_doYield_stub = nm;
2100 }
2101 return nm;
2102 }
2103
2104 if (method->is_method_handle_intrinsic()) {
2105 vmIntrinsics::ID iid = method->intrinsic_id();
2106 intptr_t start = (intptr_t)__ pc();
2107 int vep_offset = ((intptr_t)__ pc()) - start;
2108 gen_special_dispatch(masm,
2109 method,
2110 in_sig_bt,
2111 in_regs);
2112 int frame_complete = ((intptr_t)__ pc()) - start; // not complete, period
2113 __ flush();
2114 int stack_slots = SharedRuntime::out_preserve_stack_slots(); // no out slots at all, actually
2115 return nmethod::new_native_nmethod(method,
2116 compile_id,
2117 masm->code(),
2118 vep_offset,
2119 frame_complete,
|
2079 assert(frame_complete != -1, "Must be set");
2080 assert(stack_slots != -1, "Must be set");
2081 assert(vep_offset != -1, "Must be set");
2082 #endif
2083
2084 __ flush();
2085 nmethod* nm = nmethod::new_native_nmethod(method,
2086 compile_id,
2087 masm->code(),
2088 vep_offset,
2089 frame_complete,
2090 stack_slots,
2091 in_ByteSize(-1),
2092 in_ByteSize(-1),
2093 oop_maps,
2094 exception_offset);
2095 if (nm == nullptr) return nm;
2096 if (method->is_continuation_enter_intrinsic()) {
2097 ContinuationEntry::set_enter_code(nm, interpreted_entry_offset);
2098 } else if (method->is_continuation_yield_intrinsic()) {
2099 ContinuationEntry::set_yield_code(nm);
2100 }
2101 return nm;
2102 }
2103
2104 if (method->is_method_handle_intrinsic()) {
2105 vmIntrinsics::ID iid = method->intrinsic_id();
2106 intptr_t start = (intptr_t)__ pc();
2107 int vep_offset = ((intptr_t)__ pc()) - start;
2108 gen_special_dispatch(masm,
2109 method,
2110 in_sig_bt,
2111 in_regs);
2112 int frame_complete = ((intptr_t)__ pc()) - start; // not complete, period
2113 __ flush();
2114 int stack_slots = SharedRuntime::out_preserve_stack_slots(); // no out slots at all, actually
2115 return nmethod::new_native_nmethod(method,
2116 compile_id,
2117 masm->code(),
2118 vep_offset,
2119 frame_complete,
|