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