Print this page


Split Close
Expand all
Collapse all
          --- old/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp
          +++ new/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp
↓ open down ↓ 758 lines elided ↑ open up ↑
 759  759          OopMap* oop_map = save_live_registers(sasm, save_fpu_registers);
 760  760  
 761  761          int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), G4);
 762  762  
 763  763          oop_maps = new OopMapSet();
 764  764          oop_maps->add_gc_map(call_offset, oop_map);
 765  765          restore_live_registers(sasm, save_fpu_registers);
 766  766  
 767  767          __ ret();
 768  768          __ delayed()->restore();
      769 +      }
      770 +      break;
 769  771  
      772 +    case deoptimize_id:
      773 +      {
      774 +        __ set_info("deoptimize", dont_gc_arguments);
      775 +        OopMap* oop_map = save_live_registers(sasm);
      776 +        int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, deoptimize));
      777 +        oop_maps = new OopMapSet();
      778 +        oop_maps->add_gc_map(call_offset, oop_map);
      779 +        restore_live_registers(sasm);
      780 +        DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob();
      781 +        assert(deopt_blob != NULL, "deoptimization blob must have been created");
      782 +        AddressLiteral dest(deopt_blob->unpack_with_reexecution());
      783 +        __ jump_to(dest, O0);
      784 +        __ delayed()->restore();
 770  785        }
 771  786        break;
 772  787  
 773  788      case access_field_patching_id:
 774  789        { __ set_info("access_field_patching", dont_gc_arguments);
 775  790          oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, access_field_patching));
 776  791        }
 777  792        break;
 778  793  
 779  794      case load_klass_patching_id:
↓ open down ↓ 287 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX