< prev index next >

src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp

Print this page

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,
< prev index next >