src/share/vm/opto/idealKit.hpp

changeset 4868
30f42e691e70
parent 4153
b9a9ed0f8eeb
child 6198
55fb97c4c58d
child 6479
2113136690bc
     1.1 --- a/src/share/vm/opto/idealKit.hpp	Tue Mar 26 10:05:33 2013 +0100
     1.2 +++ b/src/share/vm/opto/idealKit.hpp	Tue Mar 26 12:55:26 2013 -0700
     1.3 @@ -102,7 +102,6 @@
     1.4    Compile * const C;
     1.5    PhaseGVN &_gvn;
     1.6    GrowableArray<Node*>* _pending_cvstates; // stack of cvstates
     1.7 -  GrowableArray<Node*>* _delay_transform;  // delay invoking gvn.transform until drain
     1.8    Node* _cvstate;                          // current cvstate (control, memory and variables)
     1.9    uint _var_ct;                            // number of variables
    1.10    bool _delay_all_transforms;              // flag forcing all transforms to be delayed
    1.11 @@ -121,7 +120,7 @@
    1.12    void clear(Node* m);                     // clear a cvstate
    1.13    void stop() { clear(_cvstate); }         // clear current cvstate
    1.14    Node* delay_transform(Node* n);
    1.15 -  Node* transform(Node* n);                // gvn.transform or push node on delay list
    1.16 +  Node* transform(Node* n);                // gvn.transform or skip it
    1.17    Node* promote_to_phi(Node* n, Node* reg);// Promote "n" to a phi on region "reg"
    1.18    bool was_promoted_to_phi(Node* n, Node* reg) {
    1.19      return (n->is_Phi() && n->in(0) == reg);
    1.20 @@ -146,7 +145,6 @@
    1.21    IdealKit(GraphKit* gkit, bool delay_all_transforms = false, bool has_declarations = false);
    1.22    ~IdealKit() {
    1.23      stop();
    1.24 -    drain_delay_transform();
    1.25    }
    1.26    void sync_kit(GraphKit* gkit);
    1.27  
    1.28 @@ -173,7 +171,6 @@
    1.29    void bind(Node* lab);
    1.30    void goto_(Node* lab, bool bind = false);
    1.31    void declarations_done();
    1.32 -  void drain_delay_transform();
    1.33  
    1.34    Node* IfTrue(IfNode* iff)  { return transform(new (C) IfTrueNode(iff)); }
    1.35    Node* IfFalse(IfNode* iff) { return transform(new (C) IfFalseNode(iff)); }
    1.36 @@ -198,7 +195,11 @@
    1.37    Node* thread()  {  return gvn().transform(new (C) ThreadLocalNode()); }
    1.38  
    1.39    // Pointers
    1.40 -  Node* AddP(Node *base, Node *ptr, Node *off) { return transform(new (C) AddPNode(base, ptr, off)); }
    1.41 +
    1.42 +  // Raw address should be transformed regardless 'delay_transform' flag
    1.43 +  // to produce canonical form CastX2P(offset).
    1.44 +  Node* AddP(Node *base, Node *ptr, Node *off) { return _gvn.transform(new (C) AddPNode(base, ptr, off)); }
    1.45 +
    1.46    Node* CmpP(Node* l, Node* r) { return transform(new (C) CmpPNode(l, r)); }
    1.47  #ifdef _LP64
    1.48    Node* XorX(Node* l, Node* r) { return transform(new (C) XorLNode(l, r)); }
    1.49 @@ -208,8 +209,6 @@
    1.50    Node* URShiftX(Node* l, Node* r) { return transform(new (C) URShiftXNode(l, r)); }
    1.51    Node* ConX(jint k) { return (Node*)gvn().MakeConX(k); }
    1.52    Node* CastPX(Node* ctl, Node* p) { return transform(new (C) CastP2XNode(ctl, p)); }
    1.53 -  // Add a fixed offset to a pointer
    1.54 -  Node* basic_plus_adr(Node* base, Node* ptr, intptr_t offset);
    1.55  
    1.56    // Memory operations
    1.57  

mercurial