< prev index next >

src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp

Print this page




 354 
 355 void C1_MacroAssembler::remove_frame(int framesize, bool needs_stack_repair) {
 356 
 357   guarantee(needs_stack_repair == false, "Stack repair should not be true");
 358 
 359   MacroAssembler::remove_frame(framesize + 2 * wordSize);
 360 }
 361 
 362 void C1_MacroAssembler::verified_value_entry() {
 363   if (C1Breakpoint || VerifyFPU || !UseStackBanging) {
 364     // Verified Entry first instruction should be 5 bytes long for correct
 365     // patching by patch_verified_entry().
 366     //
 367     // C1Breakpoint and VerifyFPU have one byte first instruction.
 368     // Also first instruction will be one byte "push(rbp)" if stack banging
 369     // code is not generated (see build_frame() above).
 370     // For all these cases generate long instruction first.
 371     nop();
 372   }
 373   

 374   // build frame
 375   // verify_FPU(0, "method_entry");
 376 }
 377 
 378 int C1_MacroAssembler::scalarized_entry(const CompiledEntrySignature *ces, int frame_size_in_bytes, int bang_size_in_bytes, Label& verified_value_entry_label, bool is_value_ro_entry) {
 379   // This function required to support for ValueTypePassFieldsAsArgs
 380   if (C1Breakpoint || VerifyFPU || !UseStackBanging) {
 381     // Verified Entry first instruction should be 5 bytes long for correct
 382     // patching by patch_verified_entry().
 383     //
 384     // C1Breakpoint and VerifyFPU have one byte first instruction.
 385     // Also first instruction will be one byte "push(rbp)" if stack banging
 386     // code is not generated (see build_frame() above).
 387     // For all these cases generate long instruction first.
 388     nop();
 389   }
 390 

 391   // verify_FPU(0, "method_entry");
 392 
 393   assert(ValueTypePassFieldsAsArgs, "sanity");
 394 
 395   GrowableArray<SigEntry>* sig   = &ces->sig();
 396   GrowableArray<SigEntry>* sig_cc = is_value_ro_entry ? &ces->sig_cc_ro() : &ces->sig_cc();
 397   VMRegPair* regs      = ces->regs();
 398   VMRegPair* regs_cc   = is_value_ro_entry ? ces->regs_cc_ro() : ces->regs_cc();
 399   int args_on_stack    = ces->args_on_stack();
 400   int args_on_stack_cc = is_value_ro_entry ? ces->args_on_stack_cc_ro() : ces->args_on_stack_cc();
 401 
 402   assert(sig->length() <= sig_cc->length(), "Zero-sized value class not allowed!");
 403   BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType, sig_cc->length());
 404   int args_passed = sig->length();
 405   int args_passed_cc = SigEntry::fill_sig_bt(sig_cc, sig_bt);
 406 
 407   int extra_stack_offset = wordSize; // tos is return address.
 408 
 409   // Create a temp frame so we can call into runtime. It must be properly set up to accomodate GC.
 410   int sp_inc = (args_on_stack - args_on_stack_cc) * VMRegImpl::stack_slot_size;




 354 
 355 void C1_MacroAssembler::remove_frame(int framesize, bool needs_stack_repair) {
 356 
 357   guarantee(needs_stack_repair == false, "Stack repair should not be true");
 358 
 359   MacroAssembler::remove_frame(framesize + 2 * wordSize);
 360 }
 361 
 362 void C1_MacroAssembler::verified_value_entry() {
 363   if (C1Breakpoint || VerifyFPU || !UseStackBanging) {
 364     // Verified Entry first instruction should be 5 bytes long for correct
 365     // patching by patch_verified_entry().
 366     //
 367     // C1Breakpoint and VerifyFPU have one byte first instruction.
 368     // Also first instruction will be one byte "push(rbp)" if stack banging
 369     // code is not generated (see build_frame() above).
 370     // For all these cases generate long instruction first.
 371     nop();
 372   }
 373   
 374   nop();
 375   // build frame
 376   // verify_FPU(0, "method_entry");
 377 }
 378 
 379 int C1_MacroAssembler::scalarized_entry(const CompiledEntrySignature *ces, int frame_size_in_bytes, int bang_size_in_bytes, Label& verified_value_entry_label, bool is_value_ro_entry) {
 380   // This function required to support for ValueTypePassFieldsAsArgs
 381   if (C1Breakpoint || VerifyFPU || !UseStackBanging) {
 382     // Verified Entry first instruction should be 5 bytes long for correct
 383     // patching by patch_verified_entry().
 384     //
 385     // C1Breakpoint and VerifyFPU have one byte first instruction.
 386     // Also first instruction will be one byte "push(rbp)" if stack banging
 387     // code is not generated (see build_frame() above).
 388     // For all these cases generate long instruction first.
 389     nop();
 390   }
 391 
 392   nop();
 393   // verify_FPU(0, "method_entry");
 394 
 395   assert(ValueTypePassFieldsAsArgs, "sanity");
 396 
 397   GrowableArray<SigEntry>* sig   = &ces->sig();
 398   GrowableArray<SigEntry>* sig_cc = is_value_ro_entry ? &ces->sig_cc_ro() : &ces->sig_cc();
 399   VMRegPair* regs      = ces->regs();
 400   VMRegPair* regs_cc   = is_value_ro_entry ? ces->regs_cc_ro() : ces->regs_cc();
 401   int args_on_stack    = ces->args_on_stack();
 402   int args_on_stack_cc = is_value_ro_entry ? ces->args_on_stack_cc_ro() : ces->args_on_stack_cc();
 403 
 404   assert(sig->length() <= sig_cc->length(), "Zero-sized value class not allowed!");
 405   BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType, sig_cc->length());
 406   int args_passed = sig->length();
 407   int args_passed_cc = SigEntry::fill_sig_bt(sig_cc, sig_bt);
 408 
 409   int extra_stack_offset = wordSize; // tos is return address.
 410 
 411   // Create a temp frame so we can call into runtime. It must be properly set up to accomodate GC.
 412   int sp_inc = (args_on_stack - args_on_stack_cc) * VMRegImpl::stack_slot_size;


< prev index next >