1791 assert(frame_complete != -1, "Must be set");
1792 assert(stack_slots != -1, "Must be set");
1793 assert(vep_offset != -1, "Must be set");
1794 #endif
1795
1796 __ flush();
1797 nmethod* nm = nmethod::new_native_nmethod(method,
1798 compile_id,
1799 masm->code(),
1800 vep_offset,
1801 frame_complete,
1802 stack_slots,
1803 in_ByteSize(-1),
1804 in_ByteSize(-1),
1805 oop_maps,
1806 exception_offset);
1807 if (nm == nullptr) return nm;
1808 if (method->is_continuation_enter_intrinsic()) {
1809 ContinuationEntry::set_enter_code(nm, interpreted_entry_offset);
1810 } else if (method->is_continuation_yield_intrinsic()) {
1811 _cont_doYield_stub = nm;
1812 }
1813 return nm;
1814 }
1815
1816 if (method->is_method_handle_intrinsic()) {
1817 vmIntrinsics::ID iid = method->intrinsic_id();
1818 intptr_t start = (intptr_t)__ pc();
1819 int vep_offset = ((intptr_t)__ pc()) - start;
1820 gen_special_dispatch(masm,
1821 method,
1822 in_sig_bt,
1823 in_regs);
1824 int frame_complete = ((intptr_t)__ pc()) - start; // not complete, period
1825 __ flush();
1826 int stack_slots = SharedRuntime::out_preserve_stack_slots(); // no out slots at all, actually
1827 return nmethod::new_native_nmethod(method,
1828 compile_id,
1829 masm->code(),
1830 vep_offset,
1831 frame_complete,
|
1791 assert(frame_complete != -1, "Must be set");
1792 assert(stack_slots != -1, "Must be set");
1793 assert(vep_offset != -1, "Must be set");
1794 #endif
1795
1796 __ flush();
1797 nmethod* nm = nmethod::new_native_nmethod(method,
1798 compile_id,
1799 masm->code(),
1800 vep_offset,
1801 frame_complete,
1802 stack_slots,
1803 in_ByteSize(-1),
1804 in_ByteSize(-1),
1805 oop_maps,
1806 exception_offset);
1807 if (nm == nullptr) return nm;
1808 if (method->is_continuation_enter_intrinsic()) {
1809 ContinuationEntry::set_enter_code(nm, interpreted_entry_offset);
1810 } else if (method->is_continuation_yield_intrinsic()) {
1811 ContinuationEntry::set_yield_code(nm);
1812 }
1813 return nm;
1814 }
1815
1816 if (method->is_method_handle_intrinsic()) {
1817 vmIntrinsics::ID iid = method->intrinsic_id();
1818 intptr_t start = (intptr_t)__ pc();
1819 int vep_offset = ((intptr_t)__ pc()) - start;
1820 gen_special_dispatch(masm,
1821 method,
1822 in_sig_bt,
1823 in_regs);
1824 int frame_complete = ((intptr_t)__ pc()) - start; // not complete, period
1825 __ flush();
1826 int stack_slots = SharedRuntime::out_preserve_stack_slots(); // no out slots at all, actually
1827 return nmethod::new_native_nmethod(method,
1828 compile_id,
1829 masm->code(),
1830 vep_offset,
1831 frame_complete,
|