diff -r 98f3af397705 -r 46f6f063b272 src/share/vm/c1/c1_CodeStubs.hpp --- a/src/share/vm/c1/c1_CodeStubs.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_CodeStubs.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -166,6 +166,22 @@ #endif // PRODUCT }; +// stub used when predicate fails and deoptimization is needed +class PredicateFailedStub: public CodeStub { + private: + CodeEmitInfo* _info; + + public: + PredicateFailedStub(CodeEmitInfo* info); + virtual void emit_code(LIR_Assembler* e); + virtual CodeEmitInfo* info() const { return _info; } + virtual void visit(LIR_OpVisitState* visitor) { + visitor->do_slow_case(_info); + } +#ifndef PRODUCT + virtual void print_name(outputStream* out) const { out->print("PredicateFailedStub"); } +#endif // PRODUCT +}; class DivByZeroStub: public CodeStub { private: