src/cpu/sparc/vm/c1_Runtime1_sparc.cpp

changeset 3244
cec1757a0134
parent 3110
d968f546734e
child 3368
52b5d32fbfaf
child 3391
069ab3f976d3
     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  

mercurial