< prev index next >

src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp

Print this page

1379     assert(frame_complete != -1,    "Must be set");
1380     assert(stack_slots != -1,       "Must be set");
1381     assert(vep_offset != -1,        "Must be set");
1382 #endif
1383 
1384     __ flush();
1385     nmethod* nm = nmethod::new_native_nmethod(method,
1386                                               compile_id,
1387                                               masm->code(),
1388                                               vep_offset,
1389                                               frame_complete,
1390                                               stack_slots,
1391                                               in_ByteSize(-1),
1392                                               in_ByteSize(-1),
1393                                               oop_maps,
1394                                               exception_offset);
1395     if (nm == nullptr) return nm;
1396     if (method->is_continuation_enter_intrinsic()) {
1397       ContinuationEntry::set_enter_code(nm, interpreted_entry_offset);
1398     } else if (method->is_continuation_yield_intrinsic()) {
1399       _cont_doYield_stub = nm;
1400     } else {
1401       guarantee(false, "Unknown Continuation native intrinsic");
1402     }
1403     return nm;
1404   }
1405 
1406   if (method->is_method_handle_intrinsic()) {
1407     vmIntrinsics::ID iid = method->intrinsic_id();
1408     intptr_t start = (intptr_t)__ pc();
1409     int vep_offset = ((intptr_t)__ pc()) - start;
1410 
1411     // First instruction must be a nop as it may need to be patched on deoptimisation
1412     __ nop();
1413     gen_special_dispatch(masm,
1414                          method,
1415                          in_sig_bt,
1416                          in_regs);
1417     int frame_complete = ((intptr_t)__ pc()) - start;  // not complete, period
1418     __ flush();
1419     int stack_slots = SharedRuntime::out_preserve_stack_slots();  // no out slots at all, actually

1379     assert(frame_complete != -1,    "Must be set");
1380     assert(stack_slots != -1,       "Must be set");
1381     assert(vep_offset != -1,        "Must be set");
1382 #endif
1383 
1384     __ flush();
1385     nmethod* nm = nmethod::new_native_nmethod(method,
1386                                               compile_id,
1387                                               masm->code(),
1388                                               vep_offset,
1389                                               frame_complete,
1390                                               stack_slots,
1391                                               in_ByteSize(-1),
1392                                               in_ByteSize(-1),
1393                                               oop_maps,
1394                                               exception_offset);
1395     if (nm == nullptr) return nm;
1396     if (method->is_continuation_enter_intrinsic()) {
1397       ContinuationEntry::set_enter_code(nm, interpreted_entry_offset);
1398     } else if (method->is_continuation_yield_intrinsic()) {
1399       ContinuationEntry::set_yield_code(nm);
1400     } else {
1401       guarantee(false, "Unknown Continuation native intrinsic");
1402     }
1403     return nm;
1404   }
1405 
1406   if (method->is_method_handle_intrinsic()) {
1407     vmIntrinsics::ID iid = method->intrinsic_id();
1408     intptr_t start = (intptr_t)__ pc();
1409     int vep_offset = ((intptr_t)__ pc()) - start;
1410 
1411     // First instruction must be a nop as it may need to be patched on deoptimisation
1412     __ nop();
1413     gen_special_dispatch(masm,
1414                          method,
1415                          in_sig_bt,
1416                          in_regs);
1417     int frame_complete = ((intptr_t)__ pc()) - start;  // not complete, period
1418     __ flush();
1419     int stack_slots = SharedRuntime::out_preserve_stack_slots();  // no out slots at all, actually
< prev index next >