comparison src/cpu/sparc/vm/c1_Runtime1_sparc.cpp @ 4048:cec1757a0134

7102657: JSR 292: C1 deoptimizes unlinked invokedynamic call sites infinitely Reviewed-by: never, bdelsart
author twisti
date Thu, 27 Oct 2011 04:43:37 -0700
parents d968f546734e
children 52b5d32fbfaf 069ab3f976d3
comparison
equal deleted inserted replaced
4047:d8cb48376797 4048:cec1757a0134
764 oop_maps->add_gc_map(call_offset, oop_map); 764 oop_maps->add_gc_map(call_offset, oop_map);
765 restore_live_registers(sasm, save_fpu_registers); 765 restore_live_registers(sasm, save_fpu_registers);
766 766
767 __ ret(); 767 __ ret();
768 __ delayed()->restore(); 768 __ delayed()->restore();
769 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();
770 } 785 }
771 break; 786 break;
772 787
773 case access_field_patching_id: 788 case access_field_patching_id:
774 { __ set_info("access_field_patching", dont_gc_arguments); 789 { __ set_info("access_field_patching", dont_gc_arguments);