< prev index next >

src/share/vm/opto/macro.hpp

Print this page
rev 8961 : [mq]: diff-shenandoah.patch


  25 #ifndef SHARE_VM_OPTO_MACRO_HPP
  26 #define SHARE_VM_OPTO_MACRO_HPP
  27 
  28 #include "opto/phase.hpp"
  29 
  30 class  AllocateNode;
  31 class  AllocateArrayNode;
  32 class  CallNode;
  33 class  Node;
  34 class  PhaseIterGVN;
  35 
  36 class PhaseMacroExpand : public Phase {
  37 private:
  38   PhaseIterGVN &_igvn;
  39 
  40   // Helper methods roughly modeled after GraphKit:
  41   Node* top()                   const { return C->top(); }
  42   Node* intcon(jint con)        const { return _igvn.intcon(con); }
  43   Node* longcon(jlong con)      const { return _igvn.longcon(con); }
  44   Node* makecon(const Type *t)  const { return _igvn.makecon(t); }

  45   Node* basic_plus_adr(Node* base, int offset) {
  46     return (offset == 0)? base: basic_plus_adr(base, MakeConX(offset));
  47   }
  48   Node* basic_plus_adr(Node* base, Node* ptr, int offset) {
  49     return (offset == 0)? ptr: basic_plus_adr(base, ptr, MakeConX(offset));
  50   }
  51   Node* basic_plus_adr(Node* base, Node* offset) {
  52     return basic_plus_adr(base, base, offset);
  53   }
  54   Node* basic_plus_adr(Node* base, Node* ptr, Node* offset) {
  55     Node* adr = new AddPNode(base, ptr, offset);
  56     return transform_later(adr);
  57   }
  58   Node* transform_later(Node* n) {
  59     // equivalent to _gvn.transform in GraphKit, Ideal, etc.
  60     _igvn.register_new_node_with_optimizer(n);
  61     return n;
  62   }
  63   void set_eden_pointers(Node* &eden_top_adr, Node* &eden_end_adr);
  64   Node* make_load( Node* ctl, Node* mem, Node* base, int offset,




  25 #ifndef SHARE_VM_OPTO_MACRO_HPP
  26 #define SHARE_VM_OPTO_MACRO_HPP
  27 
  28 #include "opto/phase.hpp"
  29 
  30 class  AllocateNode;
  31 class  AllocateArrayNode;
  32 class  CallNode;
  33 class  Node;
  34 class  PhaseIterGVN;
  35 
  36 class PhaseMacroExpand : public Phase {
  37 private:
  38   PhaseIterGVN &_igvn;
  39 
  40   // Helper methods roughly modeled after GraphKit:
  41   Node* top()                   const { return C->top(); }
  42   Node* intcon(jint con)        const { return _igvn.intcon(con); }
  43   Node* longcon(jlong con)      const { return _igvn.longcon(con); }
  44   Node* makecon(const Type *t)  const { return _igvn.makecon(t); }
  45 
  46   Node* basic_plus_adr(Node* base, int offset) {
  47     return (offset == 0)? base: basic_plus_adr(base, MakeConX(offset));
  48   }
  49   Node* basic_plus_adr(Node* base, Node* ptr, int offset) {
  50     return (offset == 0)? ptr: basic_plus_adr(base, ptr, MakeConX(offset));
  51   }
  52   Node* basic_plus_adr(Node* base, Node* offset) {
  53     return basic_plus_adr(base, base, offset);
  54   }
  55   Node* basic_plus_adr(Node* base, Node* ptr, Node* offset) {
  56     Node* adr = new AddPNode(base, ptr, offset);
  57     return transform_later(adr);
  58   }
  59   Node* transform_later(Node* n) {
  60     // equivalent to _gvn.transform in GraphKit, Ideal, etc.
  61     _igvn.register_new_node_with_optimizer(n);
  62     return n;
  63   }
  64   void set_eden_pointers(Node* &eden_top_adr, Node* &eden_end_adr);
  65   Node* make_load( Node* ctl, Node* mem, Node* base, int offset,


< prev index next >