23 */ 24 25 #ifndef SHARE_VM_C1_C1_CANONICALIZER_HPP 26 #define SHARE_VM_C1_C1_CANONICALIZER_HPP 27 28 #include "c1/c1_Instruction.hpp" 29 30 class Canonicalizer: InstructionVisitor { 31 private: 32 Compilation *_compilation; 33 Instruction* _canonical; 34 int _bci; 35 36 Compilation *compilation() { return _compilation; } 37 void set_canonical(Value x); 38 void set_bci(int bci) { _bci = bci; } 39 void set_constant(jint x) { set_canonical(new Constant(new IntConstant(x))); } 40 void set_constant(jlong x) { set_canonical(new Constant(new LongConstant(x))); } 41 void set_constant(jfloat x) { set_canonical(new Constant(new FloatConstant(x))); } 42 void set_constant(jdouble x) { set_canonical(new Constant(new DoubleConstant(x))); } 43 void move_const_to_right(Op2* x); 44 void do_Op2(Op2* x); 45 void do_UnsafeRawOp(UnsafeRawOp* x); 46 47 void unsafe_raw_match(UnsafeRawOp* x, 48 Instruction** base, 49 Instruction** index, 50 int* scale); 51 52 public: 53 Canonicalizer(Compilation* c, Value x, int bci) : _compilation(c), _canonical(x), _bci(bci) { 54 NOT_PRODUCT(x->set_printable_bci(bci)); 55 if (CanonicalizeNodes) x->visit(this); 56 } 57 Value canonical() const { return _canonical; } 58 int bci() const { return _bci; } 59 60 virtual void do_Phi (Phi* x); 61 virtual void do_Constant (Constant* x); 62 virtual void do_Local (Local* x); | 23 */ 24 25 #ifndef SHARE_VM_C1_C1_CANONICALIZER_HPP 26 #define SHARE_VM_C1_C1_CANONICALIZER_HPP 27 28 #include "c1/c1_Instruction.hpp" 29 30 class Canonicalizer: InstructionVisitor { 31 private: 32 Compilation *_compilation; 33 Instruction* _canonical; 34 int _bci; 35 36 Compilation *compilation() { return _compilation; } 37 void set_canonical(Value x); 38 void set_bci(int bci) { _bci = bci; } 39 void set_constant(jint x) { set_canonical(new Constant(new IntConstant(x))); } 40 void set_constant(jlong x) { set_canonical(new Constant(new LongConstant(x))); } 41 void set_constant(jfloat x) { set_canonical(new Constant(new FloatConstant(x))); } 42 void set_constant(jdouble x) { set_canonical(new Constant(new DoubleConstant(x))); } 43 #ifdef _WINDOWS 44 // jint is defined as long in jni_md.h, so convert from int to jint 45 void set_constant(int x) { set_constant((jint)x); } 46 #endif 47 void move_const_to_right(Op2* x); 48 void do_Op2(Op2* x); 49 void do_UnsafeRawOp(UnsafeRawOp* x); 50 51 void unsafe_raw_match(UnsafeRawOp* x, 52 Instruction** base, 53 Instruction** index, 54 int* scale); 55 56 public: 57 Canonicalizer(Compilation* c, Value x, int bci) : _compilation(c), _canonical(x), _bci(bci) { 58 NOT_PRODUCT(x->set_printable_bci(bci)); 59 if (CanonicalizeNodes) x->visit(this); 60 } 61 Value canonical() const { return _canonical; } 62 int bci() const { return _bci; } 63 64 virtual void do_Phi (Phi* x); 65 virtual void do_Constant (Constant* x); 66 virtual void do_Local (Local* x); |