src/share/vm/c1/c1_CodeStubs.hpp

Print this page
rev 4136 : 7153771: array bound check elimination for c1
Summary: when possible optimize out array bound checks, inserting predicates when needed.
Reviewed-by:

*** 164,173 **** --- 164,189 ---- #ifndef PRODUCT virtual void print_name(outputStream* out) const { out->print("RangeCheckStub"); } #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: CodeEmitInfo* _info; int _offset;