src/share/vm/opto/callnode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8012972 Sdiff src/share/vm/opto

src/share/vm/opto/callnode.hpp

Print this page




 432   virtual const TypePtr *adr_type() const { return _adr_type; }
 433   virtual Node          *Ideal(PhaseGVN *phase, bool can_reshape);
 434   virtual Node          *Identity( PhaseTransform *phase );
 435   virtual uint           ideal_reg() const { return 0; }
 436   virtual const RegMask &in_RegMask(uint) const;
 437   virtual const RegMask &out_RegMask() const;
 438   virtual uint           match_edge(uint idx) const;
 439 
 440   static  bool           needs_polling_address_input();
 441 
 442 #ifndef PRODUCT
 443   virtual void           dump_spec(outputStream *st) const;
 444 #endif
 445 };
 446 
 447 //------------------------------SafePointScalarObjectNode----------------------
 448 // A SafePointScalarObjectNode represents the state of a scalarized object
 449 // at a safepoint.
 450 
 451 class SafePointScalarObjectNode: public TypeNode {
 452   uint _first_index; // First input edge index of a SafePoint node where
 453                      // states of the scalarized object fields are collected.

 454   uint _n_fields;    // Number of non-static fields of the scalarized object.
 455   DEBUG_ONLY(AllocateNode* _alloc;)
 456 
 457   virtual uint hash() const ; // { return NO_HASH; }
 458   virtual uint cmp( const Node &n ) const;
 459 


 460 public:
 461   SafePointScalarObjectNode(const TypeOopPtr* tp,
 462 #ifdef ASSERT
 463                             AllocateNode* alloc,
 464 #endif
 465                             uint first_index, uint n_fields);
 466   virtual int Opcode() const;
 467   virtual uint           ideal_reg() const;
 468   virtual const RegMask &in_RegMask(uint) const;
 469   virtual const RegMask &out_RegMask() const;
 470   virtual uint           match_edge(uint idx) const;
 471 
 472   uint first_index() const { return _first_index; }



 473   uint n_fields()    const { return _n_fields; }
 474 
 475 #ifdef ASSERT
 476   AllocateNode* alloc() const { return _alloc; }
 477 #endif
 478 
 479   virtual uint size_of() const { return sizeof(*this); }
 480 
 481   // Assumes that "this" is an argument to a safepoint node "s", and that
 482   // "new_call" is being created to correspond to "s".  But the difference
 483   // between the start index of the jvmstates of "new_call" and "s" is
 484   // "jvms_adj".  Produce and return a SafePointScalarObjectNode that
 485   // corresponds appropriately to "this" in "new_call".  Assumes that
 486   // "sosn_map" is a map, specific to the translation of "s" to "new_call",
 487   // mapping old SafePointScalarObjectNodes to new, to avoid multiple copies.
 488   SafePointScalarObjectNode* clone(int jvms_adj, Dict* sosn_map) const;
 489 
 490 #ifndef PRODUCT
 491   virtual void              dump_spec(outputStream *st) const;
 492 #endif
 493 };
 494 
 495 
 496 // Simple container for the outgoing projections of a call.  Useful
 497 // for serious surgery on calls.
 498 class CallProjections : public StackObj {
 499 public:
 500   Node* fallthrough_proj;
 501   Node* fallthrough_catchproj;
 502   Node* fallthrough_memproj;
 503   Node* fallthrough_ioproj;
 504   Node* catchall_catchproj;
 505   Node* catchall_memproj;
 506   Node* catchall_ioproj;
 507   Node* resproj;
 508   Node* exobj;




 432   virtual const TypePtr *adr_type() const { return _adr_type; }
 433   virtual Node          *Ideal(PhaseGVN *phase, bool can_reshape);
 434   virtual Node          *Identity( PhaseTransform *phase );
 435   virtual uint           ideal_reg() const { return 0; }
 436   virtual const RegMask &in_RegMask(uint) const;
 437   virtual const RegMask &out_RegMask() const;
 438   virtual uint           match_edge(uint idx) const;
 439 
 440   static  bool           needs_polling_address_input();
 441 
 442 #ifndef PRODUCT
 443   virtual void           dump_spec(outputStream *st) const;
 444 #endif
 445 };
 446 
 447 //------------------------------SafePointScalarObjectNode----------------------
 448 // A SafePointScalarObjectNode represents the state of a scalarized object
 449 // at a safepoint.
 450 
 451 class SafePointScalarObjectNode: public TypeNode {
 452   uint _first_index; // First input edge relative index of a SafePoint node where
 453                      // states of the scalarized object fields are collected.
 454                      // It is relative to the last (youngest) jvms->_scloff.
 455   uint _n_fields;    // Number of non-static fields of the scalarized object.
 456   DEBUG_ONLY(AllocateNode* _alloc;)
 457 
 458   virtual uint hash() const ; // { return NO_HASH; }
 459   virtual uint cmp( const Node &n ) const;
 460 
 461   uint first_index() const { return _first_index; }
 462 
 463 public:
 464   SafePointScalarObjectNode(const TypeOopPtr* tp,
 465 #ifdef ASSERT
 466                             AllocateNode* alloc,
 467 #endif
 468                             uint first_index, uint n_fields);
 469   virtual int Opcode() const;
 470   virtual uint           ideal_reg() const;
 471   virtual const RegMask &in_RegMask(uint) const;
 472   virtual const RegMask &out_RegMask() const;
 473   virtual uint           match_edge(uint idx) const;
 474 
 475   uint first_index(JVMState* jvms) const {
 476     assert(jvms != NULL, "missed JVMS");
 477     return jvms->scloff() + _first_index;
 478   }
 479   uint n_fields()    const { return _n_fields; }
 480 
 481 #ifdef ASSERT
 482   AllocateNode* alloc() const { return _alloc; }
 483 #endif
 484 
 485   virtual uint size_of() const { return sizeof(*this); }
 486 
 487   // Assumes that "this" is an argument to a safepoint node "s", and that
 488   // "new_call" is being created to correspond to "s".  But the difference
 489   // between the start index of the jvmstates of "new_call" and "s" is
 490   // "jvms_adj".  Produce and return a SafePointScalarObjectNode that
 491   // corresponds appropriately to "this" in "new_call".  Assumes that
 492   // "sosn_map" is a map, specific to the translation of "s" to "new_call",
 493   // mapping old SafePointScalarObjectNodes to new, to avoid multiple copies.
 494   SafePointScalarObjectNode* clone(Dict* sosn_map) const;
 495 
 496 #ifndef PRODUCT
 497   virtual void              dump_spec(outputStream *st) const;
 498 #endif
 499 };
 500 
 501 
 502 // Simple container for the outgoing projections of a call.  Useful
 503 // for serious surgery on calls.
 504 class CallProjections : public StackObj {
 505 public:
 506   Node* fallthrough_proj;
 507   Node* fallthrough_catchproj;
 508   Node* fallthrough_memproj;
 509   Node* fallthrough_ioproj;
 510   Node* catchall_catchproj;
 511   Node* catchall_memproj;
 512   Node* catchall_ioproj;
 513   Node* resproj;
 514   Node* exobj;


src/share/vm/opto/callnode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File