< prev index next >

src/cpu/sparc/vm/c1_Runtime1_sparc.cpp

Print this page




 255 
 256   // only G int registers are saved explicitly; others are found in register windows
 257   for (i = 0; i < FrameMap::nof_cpu_regs; i++) {
 258     Register r = as_Register(i);
 259     if (r == G1 || r == G3 || r == G4 || r == G5) {
 260       cpu_reg_save_offsets[i] = sp_offset;
 261       sp_offset++;
 262     }
 263   }
 264 
 265   // all float registers are saved explicitly
 266   assert(FrameMap::nof_fpu_regs == 32, "double registers not handled here");
 267   for (i = 0; i < FrameMap::nof_fpu_regs; i++) {
 268     fpu_reg_save_offsets[i] = sp_offset;
 269     sp_offset++;
 270   }
 271   reg_save_size_in_words = sp_offset - frame::memory_parameter_word_sp_offset;
 272   // this should match assembler::total_frame_size_in_bytes, which
 273   // isn't callable from this context.  It's checked by an assert when
 274   // it's used though.
 275   frame_size_in_bytes = align_size_up(sp_offset * wordSize, 8);
 276 }
 277 
 278 
 279 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
 280   // make a frame and preserve the caller's caller-save registers
 281   OopMap* oop_map = save_live_registers(sasm);
 282   int call_offset;
 283   if (!has_argument) {
 284     call_offset = __ call_RT(noreg, noreg, target);
 285   } else {
 286     call_offset = __ call_RT(noreg, noreg, target, G4);
 287   }
 288   OopMapSet* oop_maps = new OopMapSet();
 289   oop_maps->add_gc_map(call_offset, oop_map);
 290 
 291   __ should_not_reach_here();
 292   return oop_maps;
 293 }
 294 
 295 




 255 
 256   // only G int registers are saved explicitly; others are found in register windows
 257   for (i = 0; i < FrameMap::nof_cpu_regs; i++) {
 258     Register r = as_Register(i);
 259     if (r == G1 || r == G3 || r == G4 || r == G5) {
 260       cpu_reg_save_offsets[i] = sp_offset;
 261       sp_offset++;
 262     }
 263   }
 264 
 265   // all float registers are saved explicitly
 266   assert(FrameMap::nof_fpu_regs == 32, "double registers not handled here");
 267   for (i = 0; i < FrameMap::nof_fpu_regs; i++) {
 268     fpu_reg_save_offsets[i] = sp_offset;
 269     sp_offset++;
 270   }
 271   reg_save_size_in_words = sp_offset - frame::memory_parameter_word_sp_offset;
 272   // this should match assembler::total_frame_size_in_bytes, which
 273   // isn't callable from this context.  It's checked by an assert when
 274   // it's used though.
 275   frame_size_in_bytes = align_up(sp_offset * wordSize, 8);
 276 }
 277 
 278 
 279 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
 280   // make a frame and preserve the caller's caller-save registers
 281   OopMap* oop_map = save_live_registers(sasm);
 282   int call_offset;
 283   if (!has_argument) {
 284     call_offset = __ call_RT(noreg, noreg, target);
 285   } else {
 286     call_offset = __ call_RT(noreg, noreg, target, G4);
 287   }
 288   OopMapSet* oop_maps = new OopMapSet();
 289   oop_maps->add_gc_map(call_offset, oop_map);
 290 
 291   __ should_not_reach_here();
 292   return oop_maps;
 293 }
 294 
 295 


< prev index next >