2035 assert(frame_complete != -1, "Must be set");
2036 assert(stack_slots != -1, "Must be set");
2037 assert(vep_offset != -1, "Must be set");
2038 #endif
2039
2040 __ flush();
2041 nmethod* nm = nmethod::new_native_nmethod(method,
2042 compile_id,
2043 masm->code(),
2044 vep_offset,
2045 frame_complete,
2046 stack_slots,
2047 in_ByteSize(-1),
2048 in_ByteSize(-1),
2049 oop_maps,
2050 exception_offset);
2051 if (nm == nullptr) return nm;
2052 if (method->is_continuation_enter_intrinsic()) {
2053 ContinuationEntry::set_enter_code(nm, interpreted_entry_offset);
2054 } else if (method->is_continuation_yield_intrinsic()) {
2055 _cont_doYield_stub = nm;
2056 }
2057 return nm;
2058 }
2059
2060 if (method->is_method_handle_intrinsic()) {
2061 vmIntrinsics::ID iid = method->intrinsic_id();
2062 intptr_t start = (intptr_t)__ pc();
2063 int vep_offset = ((intptr_t)__ pc()) - start;
2064 gen_special_dispatch(masm,
2065 method,
2066 in_sig_bt,
2067 in_regs);
2068 int frame_complete = ((intptr_t)__ pc()) - start; // not complete, period
2069 __ flush();
2070 int stack_slots = SharedRuntime::out_preserve_stack_slots(); // no out slots at all, actually
2071 return nmethod::new_native_nmethod(method,
2072 compile_id,
2073 masm->code(),
2074 vep_offset,
2075 frame_complete,
|
2035 assert(frame_complete != -1, "Must be set");
2036 assert(stack_slots != -1, "Must be set");
2037 assert(vep_offset != -1, "Must be set");
2038 #endif
2039
2040 __ flush();
2041 nmethod* nm = nmethod::new_native_nmethod(method,
2042 compile_id,
2043 masm->code(),
2044 vep_offset,
2045 frame_complete,
2046 stack_slots,
2047 in_ByteSize(-1),
2048 in_ByteSize(-1),
2049 oop_maps,
2050 exception_offset);
2051 if (nm == nullptr) return nm;
2052 if (method->is_continuation_enter_intrinsic()) {
2053 ContinuationEntry::set_enter_code(nm, interpreted_entry_offset);
2054 } else if (method->is_continuation_yield_intrinsic()) {
2055 ContinuationEntry::set_yield_code(nm);
2056 }
2057 return nm;
2058 }
2059
2060 if (method->is_method_handle_intrinsic()) {
2061 vmIntrinsics::ID iid = method->intrinsic_id();
2062 intptr_t start = (intptr_t)__ pc();
2063 int vep_offset = ((intptr_t)__ pc()) - start;
2064 gen_special_dispatch(masm,
2065 method,
2066 in_sig_bt,
2067 in_regs);
2068 int frame_complete = ((intptr_t)__ pc()) - start; // not complete, period
2069 __ flush();
2070 int stack_slots = SharedRuntime::out_preserve_stack_slots(); // no out slots at all, actually
2071 return nmethod::new_native_nmethod(method,
2072 compile_id,
2073 masm->code(),
2074 vep_offset,
2075 frame_complete,
|