< prev index next >

src/hotspot/share/c1/c1_Canonicalizer.hpp

Print this page




  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);


< prev index next >