src/cpu/sparc/vm/c1_Runtime1_sparc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7102657 Sdiff src/cpu/sparc/vm

src/cpu/sparc/vm/c1_Runtime1_sparc.cpp

Print this page




 749     case monitorexit_nofpu_id:
 750     case monitorexit_id:
 751       { // G4: lock address
 752         // note: really a leaf routine but must setup last java sp
 753         //       => use call_RT for now (speed can be improved by
 754         //       doing last java sp setup manually)
 755         __ set_info("monitorexit", dont_gc_arguments);
 756 
 757         int save_fpu_registers = (id == monitorexit_id);
 758         // make a frame and preserve the caller's caller-save registers
 759         OopMap* oop_map = save_live_registers(sasm, save_fpu_registers);
 760 
 761         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), G4);
 762 
 763         oop_maps = new OopMapSet();
 764         oop_maps->add_gc_map(call_offset, oop_map);
 765         restore_live_registers(sasm, save_fpu_registers);
 766 
 767         __ ret();
 768         __ delayed()->restore();


 769 













 770       }
 771       break;
 772 
 773     case access_field_patching_id:
 774       { __ set_info("access_field_patching", dont_gc_arguments);
 775         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, access_field_patching));
 776       }
 777       break;
 778 
 779     case load_klass_patching_id:
 780       { __ set_info("load_klass_patching", dont_gc_arguments);
 781         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_klass_patching));
 782       }
 783       break;
 784 
 785     case dtrace_object_alloc_id:
 786       { // O0: object
 787         __ set_info("dtrace_object_alloc", dont_gc_arguments);
 788         // we can't gc here so skip the oopmap but make sure that all
 789         // the live registers get saved.




 749     case monitorexit_nofpu_id:
 750     case monitorexit_id:
 751       { // G4: lock address
 752         // note: really a leaf routine but must setup last java sp
 753         //       => use call_RT for now (speed can be improved by
 754         //       doing last java sp setup manually)
 755         __ set_info("monitorexit", dont_gc_arguments);
 756 
 757         int save_fpu_registers = (id == monitorexit_id);
 758         // make a frame and preserve the caller's caller-save registers
 759         OopMap* oop_map = save_live_registers(sasm, save_fpu_registers);
 760 
 761         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), G4);
 762 
 763         oop_maps = new OopMapSet();
 764         oop_maps->add_gc_map(call_offset, oop_map);
 765         restore_live_registers(sasm, save_fpu_registers);
 766 
 767         __ ret();
 768         __ delayed()->restore();
 769       }
 770       break;
 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();
 785       }
 786       break;
 787 
 788     case access_field_patching_id:
 789       { __ set_info("access_field_patching", dont_gc_arguments);
 790         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, access_field_patching));
 791       }
 792       break;
 793 
 794     case load_klass_patching_id:
 795       { __ set_info("load_klass_patching", dont_gc_arguments);
 796         oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_klass_patching));
 797       }
 798       break;
 799 
 800     case dtrace_object_alloc_id:
 801       { // O0: object
 802         __ set_info("dtrace_object_alloc", dont_gc_arguments);
 803         // we can't gc here so skip the oopmap but make sure that all
 804         // the live registers get saved.


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