src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/cpu/sparc/vm

src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp

Print this page
rev 6086 : 8032410: compiler/uncommontrap/TestStackBangRbp.java times out on Solaris-Sparc V9
Summary: make compiled code bang the stack by the worst case size of the interpreter frame at deoptimization points.
Reviewed-by:


  38 void C1_MacroAssembler::inline_cache_check(Register receiver, Register iCache) {
  39   Label L;
  40   const Register temp_reg = G3_scratch;
  41   // Note: needs more testing of out-of-line vs. inline slow case
  42   verify_oop(receiver);
  43   load_klass(receiver, temp_reg);
  44   cmp_and_brx_short(temp_reg, iCache, Assembler::equal, Assembler::pt, L);
  45   AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
  46   jump_to(ic_miss, temp_reg);
  47   delayed()->nop();
  48   align(CodeEntryAlignment);
  49   bind(L);
  50 }
  51 
  52 
  53 void C1_MacroAssembler::explicit_null_check(Register base) {
  54   Unimplemented();
  55 }
  56 
  57 
  58 void C1_MacroAssembler::build_frame(int frame_size_in_bytes) {
  59 
  60   generate_stack_overflow_check(frame_size_in_bytes);
  61   // Create the frame.
  62   save_frame_c1(frame_size_in_bytes);
  63 }
  64 
  65 
  66 void C1_MacroAssembler::unverified_entry(Register receiver, Register ic_klass) {
  67   if (C1Breakpoint) breakpoint_trap();
  68   inline_cache_check(receiver, ic_klass);
  69 }
  70 
  71 
  72 void C1_MacroAssembler::verified_entry() {
  73   if (C1Breakpoint) breakpoint_trap();
  74   // build frame
  75   verify_FPU(0, "method_entry");
  76 }
  77 
  78 
  79 void C1_MacroAssembler::lock_object(Register Rmark, Register Roop, Register Rbox, Register Rscratch, Label& slow_case) {
  80   assert_different_registers(Rmark, Roop, Rbox, Rscratch);




  38 void C1_MacroAssembler::inline_cache_check(Register receiver, Register iCache) {
  39   Label L;
  40   const Register temp_reg = G3_scratch;
  41   // Note: needs more testing of out-of-line vs. inline slow case
  42   verify_oop(receiver);
  43   load_klass(receiver, temp_reg);
  44   cmp_and_brx_short(temp_reg, iCache, Assembler::equal, Assembler::pt, L);
  45   AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
  46   jump_to(ic_miss, temp_reg);
  47   delayed()->nop();
  48   align(CodeEntryAlignment);
  49   bind(L);
  50 }
  51 
  52 
  53 void C1_MacroAssembler::explicit_null_check(Register base) {
  54   Unimplemented();
  55 }
  56 
  57 
  58 void C1_MacroAssembler::build_frame(int frame_size_in_bytes, int bang_size_in_bytes) {
  59   assert(bang_size_in_bytes >= frame_size_in_bytes, "stack bang size incorrect");
  60   generate_stack_overflow_check(bang_size_in_bytes);
  61   // Create the frame.
  62   save_frame_c1(frame_size_in_bytes);
  63 }
  64 
  65 
  66 void C1_MacroAssembler::unverified_entry(Register receiver, Register ic_klass) {
  67   if (C1Breakpoint) breakpoint_trap();
  68   inline_cache_check(receiver, ic_klass);
  69 }
  70 
  71 
  72 void C1_MacroAssembler::verified_entry() {
  73   if (C1Breakpoint) breakpoint_trap();
  74   // build frame
  75   verify_FPU(0, "method_entry");
  76 }
  77 
  78 
  79 void C1_MacroAssembler::lock_object(Register Rmark, Register Roop, Register Rbox, Register Rscratch, Label& slow_case) {
  80   assert_different_registers(Rmark, Roop, Rbox, Rscratch);


src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File