hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp
changeset 13883 6979b9850feb
parent 13881 a326d528f3e1
child 14391 df0a1573d5bd
equal deleted inserted replaced
13882:80d5d0d21b75 13883:6979b9850feb
   309   // Now reload the 64bit Oregs after we've restore the window.
   309   // Now reload the 64bit Oregs after we've restore the window.
   310   __ ldx(G2_thread, JavaThread::o_reg_temps_offset_in_bytes()+0*8, O0);
   310   __ ldx(G2_thread, JavaThread::o_reg_temps_offset_in_bytes()+0*8, O0);
   311   __ ldx(G2_thread, JavaThread::o_reg_temps_offset_in_bytes()+1*8, O1);
   311   __ ldx(G2_thread, JavaThread::o_reg_temps_offset_in_bytes()+1*8, O1);
   312 #endif /* _LP64 */
   312 #endif /* _LP64 */
   313 
   313 
       
   314 }
       
   315 
       
   316 // Is vector's size (in bytes) bigger than a size saved by default?
       
   317 // 8 bytes FP registers are saved by default on SPARC.
       
   318 bool SharedRuntime::is_wide_vector(int size) {
       
   319   // Note, MaxVectorSize == 8 on SPARC.
       
   320   assert(size <= 8, err_msg_res("%d bytes vectors are not supported", size));
       
   321   return size > 8;
   314 }
   322 }
   315 
   323 
   316 // The java_calling_convention describes stack locations as ideal slots on
   324 // The java_calling_convention describes stack locations as ideal slots on
   317 // a frame with no abi restrictions. Since we must observe abi restrictions
   325 // a frame with no abi restrictions. Since we must observe abi restrictions
   318 // (like the placement of the register window) the slots must be biased by
   326 // (like the placement of the register window) the slots must be biased by
  3732 // the adjusted FP off to the GC stack-crawler: this will modify the caller's
  3740 // the adjusted FP off to the GC stack-crawler: this will modify the caller's
  3733 // SP and mess up HIS OopMaps.  So we first adjust the caller's SP, then save
  3741 // SP and mess up HIS OopMaps.  So we first adjust the caller's SP, then save
  3734 // the 64-bit %o's, then do a save, then fixup the caller's SP (our FP).
  3742 // the 64-bit %o's, then do a save, then fixup the caller's SP (our FP).
  3735 // Tricky, tricky, tricky...
  3743 // Tricky, tricky, tricky...
  3736 
  3744 
  3737 SafepointBlob* SharedRuntime::generate_handler_blob(address call_ptr, bool cause_return) {
  3745 SafepointBlob* SharedRuntime::generate_handler_blob(address call_ptr, int poll_type) {
  3738   assert (StubRoutines::forward_exception_entry() != NULL, "must be generated before");
  3746   assert (StubRoutines::forward_exception_entry() != NULL, "must be generated before");
  3739 
  3747 
  3740   // allocate space for the code
  3748   // allocate space for the code
  3741   ResourceMark rm;
  3749   ResourceMark rm;
  3742   // setup code generation tools
  3750   // setup code generation tools
  3750   OopMapSet *oop_maps = new OopMapSet();
  3758   OopMapSet *oop_maps = new OopMapSet();
  3751   OopMap* map = NULL;
  3759   OopMap* map = NULL;
  3752 
  3760 
  3753   int start = __ offset();
  3761   int start = __ offset();
  3754 
  3762 
       
  3763   bool cause_return = (poll_type == POLL_AT_RETURN);
  3755   // If this causes a return before the processing, then do a "restore"
  3764   // If this causes a return before the processing, then do a "restore"
  3756   if (cause_return) {
  3765   if (cause_return) {
  3757     __ restore();
  3766     __ restore();
  3758   } else {
  3767   } else {
  3759     // Make it look like we were called via the poll
  3768     // Make it look like we were called via the poll