src/share/vm/opto/machnode.hpp

changeset 6478
044b28168e20
parent 5614
9758d9f36299
child 6481
1410ad6b05f1
     1.1 --- a/src/share/vm/opto/machnode.hpp	Thu Nov 07 11:47:11 2013 +0100
     1.2 +++ b/src/share/vm/opto/machnode.hpp	Thu Nov 14 19:24:59 2013 -0800
     1.3 @@ -155,7 +155,15 @@
     1.4    virtual void ext_format(PhaseRegAlloc *,const MachNode *node,int idx, outputStream *st) const=0;
     1.5  
     1.6    virtual void dump_spec(outputStream *st) const; // Print per-operand info
     1.7 -#endif
     1.8 +
     1.9 +  // Check whether o is a valid oper.
    1.10 +  static bool notAnOper(const MachOper *o) {
    1.11 +    if (o == NULL)                   return true;
    1.12 +    if (((intptr_t)o & 1) != 0)      return true;
    1.13 +    if (*(address*)o == badAddress)  return true;  // kill by Node::destruct
    1.14 +    return false;
    1.15 +  }
    1.16 +#endif // !PRODUCT
    1.17  };
    1.18  
    1.19  //------------------------------MachNode---------------------------------------
    1.20 @@ -220,6 +228,12 @@
    1.21  
    1.22    // Emit bytes into cbuf
    1.23    virtual void  emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
    1.24 +  // Expand node after register allocation.
    1.25 +  // Node is replaced by several nodes in the postalloc expand phase.
    1.26 +  // Corresponding methods are generated for nodes if they specify
    1.27 +  // postalloc_expand. See block.cpp for more documentation.
    1.28 +  virtual bool requires_postalloc_expand() const { return false; }
    1.29 +  virtual void postalloc_expand(GrowableArray <Node *> *nodes, PhaseRegAlloc *ra_);
    1.30    // Size of instruction in bytes
    1.31    virtual uint  size(PhaseRegAlloc *ra_) const;
    1.32    // Helper function that computes size by emitting code
    1.33 @@ -356,6 +370,9 @@
    1.34    virtual uint ideal_reg() const { return Op_RegP; }
    1.35    virtual uint oper_input_base() const { return 1; }
    1.36  
    1.37 +  virtual bool requires_postalloc_expand() const;
    1.38 +  virtual void postalloc_expand(GrowableArray <Node *> *nodes, PhaseRegAlloc *ra_);
    1.39 +
    1.40    virtual void emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const;
    1.41    virtual uint size(PhaseRegAlloc* ra_) const;
    1.42    virtual bool pinned() const { return UseRDPCForConstantTableBase; }

mercurial