1838 assert(frame_complete != -1, "Must be set");
1839 assert(stack_slots != -1, "Must be set");
1840 assert(vep_offset != -1, "Must be set");
1841 #endif
1842
1843 __ flush();
1844 nmethod* nm = nmethod::new_native_nmethod(method,
1845 compile_id,
1846 masm->code(),
1847 vep_offset,
1848 frame_complete,
1849 stack_slots,
1850 in_ByteSize(-1),
1851 in_ByteSize(-1),
1852 oop_maps,
1853 exception_offset);
1854 if (nm == nullptr) return nm;
1855 if (method->is_continuation_enter_intrinsic()) {
1856 ContinuationEntry::set_enter_code(nm, interpreted_entry_offset);
1857 } else if (method->is_continuation_yield_intrinsic()) {
1858 _cont_doYield_stub = nm;
1859 }
1860 return nm;
1861 }
1862
1863 if (method->is_method_handle_intrinsic()) {
1864 vmIntrinsics::ID iid = method->intrinsic_id();
1865 intptr_t start = (intptr_t)__ pc();
1866 int vep_offset = ((intptr_t)__ pc()) - start;
1867 gen_special_dispatch(masm,
1868 method,
1869 in_sig_bt,
1870 in_regs);
1871 int frame_complete = ((intptr_t)__ pc()) - start; // not complete, period
1872 __ flush();
1873 int stack_slots = SharedRuntime::out_preserve_stack_slots(); // no out slots at all, actually
1874 return nmethod::new_native_nmethod(method,
1875 compile_id,
1876 masm->code(),
1877 vep_offset,
1878 frame_complete,
|
1838 assert(frame_complete != -1, "Must be set");
1839 assert(stack_slots != -1, "Must be set");
1840 assert(vep_offset != -1, "Must be set");
1841 #endif
1842
1843 __ flush();
1844 nmethod* nm = nmethod::new_native_nmethod(method,
1845 compile_id,
1846 masm->code(),
1847 vep_offset,
1848 frame_complete,
1849 stack_slots,
1850 in_ByteSize(-1),
1851 in_ByteSize(-1),
1852 oop_maps,
1853 exception_offset);
1854 if (nm == nullptr) return nm;
1855 if (method->is_continuation_enter_intrinsic()) {
1856 ContinuationEntry::set_enter_code(nm, interpreted_entry_offset);
1857 } else if (method->is_continuation_yield_intrinsic()) {
1858 ContinuationEntry::set_yield_code(nm);
1859 }
1860 return nm;
1861 }
1862
1863 if (method->is_method_handle_intrinsic()) {
1864 vmIntrinsics::ID iid = method->intrinsic_id();
1865 intptr_t start = (intptr_t)__ pc();
1866 int vep_offset = ((intptr_t)__ pc()) - start;
1867 gen_special_dispatch(masm,
1868 method,
1869 in_sig_bt,
1870 in_regs);
1871 int frame_complete = ((intptr_t)__ pc()) - start; // not complete, period
1872 __ flush();
1873 int stack_slots = SharedRuntime::out_preserve_stack_slots(); // no out slots at all, actually
1874 return nmethod::new_native_nmethod(method,
1875 compile_id,
1876 masm->code(),
1877 vep_offset,
1878 frame_complete,
|