Mercurial > hg > truffle
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); |