--- old/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp 2011-12-15 13:30:21.593189229 +0100 +++ new/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp 2011-12-15 13:30:21.393922787 +0100 @@ -701,6 +701,27 @@ } break; + case invalidate_profile_inlining_id: + { + OopMap* oop_map = save_live_registers(sasm); + + int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, invalidate_profile_inlining), G4, G5); + + oop_maps = new OopMapSet(); + oop_maps->add_gc_map(call_offset, oop_map); + + DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob(); + assert(deopt_blob != NULL, "deoptimization blob must have been created"); + restore_live_registers(sasm); + __ restore(); + // Invalid inlining is detected before the body of the + // inlinined method is executed so we need deoptimization to + // trigger "re-execution" of the method call. + __ br(Assembler::always, false, Assembler::pt, deopt_blob->unpack_with_reexecution(), relocInfo::runtime_call_type); + __ delayed()->nop(); + } + break; + case slow_subtype_check_id: { // Support for uint StubRoutine::partial_subtype_check( Klass sub, Klass super ); // Arguments :