src/cpu/sparc/vm/c1_Runtime1_sparc.cpp

changeset 4860
46f6f063b272
parent 4542
db9981fd3124
child 4945
bb4a966cc68f
     1.1 --- a/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp	Wed Mar 20 17:04:45 2013 -0700
     1.2 +++ b/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp	Thu Mar 21 09:27:54 2013 +0100
     1.3 @@ -987,6 +987,25 @@
     1.4        break;
     1.5  #endif // INCLUDE_ALL_GCS
     1.6  
     1.7 +    case predicate_failed_trap_id:
     1.8 +      {
     1.9 +        __ set_info("predicate_failed_trap", dont_gc_arguments);
    1.10 +        OopMap* oop_map = save_live_registers(sasm);
    1.11 +
    1.12 +        int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, predicate_failed_trap));
    1.13 +
    1.14 +        oop_maps = new OopMapSet();
    1.15 +        oop_maps->add_gc_map(call_offset, oop_map);
    1.16 +
    1.17 +        DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob();
    1.18 +        assert(deopt_blob != NULL, "deoptimization blob must have been created");
    1.19 +        restore_live_registers(sasm);
    1.20 +        __ restore();
    1.21 +        __ br(Assembler::always, false, Assembler::pt, deopt_blob->unpack_with_reexecution(), relocInfo::runtime_call_type);
    1.22 +        __ delayed()->nop();
    1.23 +      }
    1.24 +      break;
    1.25 +
    1.26      default:
    1.27        { __ set_info("unimplemented entry", dont_gc_arguments);
    1.28          __ save_frame(0);

mercurial