1.1 --- a/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Wed Oct 26 06:08:56 2011 -0700 1.2 +++ b/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Thu Oct 27 04:43:37 2011 -0700 1.3 @@ -766,7 +766,22 @@ 1.4 1.5 __ ret(); 1.6 __ delayed()->restore(); 1.7 + } 1.8 + break; 1.9 1.10 + case deoptimize_id: 1.11 + { 1.12 + __ set_info("deoptimize", dont_gc_arguments); 1.13 + OopMap* oop_map = save_live_registers(sasm); 1.14 + int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, deoptimize)); 1.15 + oop_maps = new OopMapSet(); 1.16 + oop_maps->add_gc_map(call_offset, oop_map); 1.17 + restore_live_registers(sasm); 1.18 + DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob(); 1.19 + assert(deopt_blob != NULL, "deoptimization blob must have been created"); 1.20 + AddressLiteral dest(deopt_blob->unpack_with_reexecution()); 1.21 + __ jump_to(dest, O0); 1.22 + __ delayed()->restore(); 1.23 } 1.24 break; 1.25