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;