equal
deleted
inserted
replaced
438 class SafePointScalarObjectNode: public TypeNode { |
438 class SafePointScalarObjectNode: public TypeNode { |
439 uint _first_index; // First input edge index of a SafePoint node where |
439 uint _first_index; // First input edge index of a SafePoint node where |
440 // states of the scalarized object fields are collected. |
440 // states of the scalarized object fields are collected. |
441 uint _n_fields; // Number of non-static fields of the scalarized object. |
441 uint _n_fields; // Number of non-static fields of the scalarized object. |
442 DEBUG_ONLY(AllocateNode* _alloc;) |
442 DEBUG_ONLY(AllocateNode* _alloc;) |
|
443 |
|
444 virtual uint hash() const ; // { return NO_HASH; } |
|
445 virtual uint cmp( const Node &n ) const; |
|
446 |
443 public: |
447 public: |
444 SafePointScalarObjectNode(const TypeOopPtr* tp, |
448 SafePointScalarObjectNode(const TypeOopPtr* tp, |
445 #ifdef ASSERT |
449 #ifdef ASSERT |
446 AllocateNode* alloc, |
450 AllocateNode* alloc, |
447 #endif |
451 #endif |
452 virtual const RegMask &out_RegMask() const; |
456 virtual const RegMask &out_RegMask() const; |
453 virtual uint match_edge(uint idx) const; |
457 virtual uint match_edge(uint idx) const; |
454 |
458 |
455 uint first_index() const { return _first_index; } |
459 uint first_index() const { return _first_index; } |
456 uint n_fields() const { return _n_fields; } |
460 uint n_fields() const { return _n_fields; } |
457 DEBUG_ONLY(AllocateNode* alloc() const { return _alloc; }) |
461 |
458 |
462 #ifdef ASSERT |
459 // SafePointScalarObject should be always pinned to the control edge |
463 AllocateNode* alloc() const { return _alloc; } |
460 // of the SafePoint node for which it was generated. |
464 #endif |
461 virtual bool pinned() const; // { return true; } |
|
462 |
|
463 // SafePointScalarObject depends on the SafePoint node |
|
464 // for which it was generated. |
|
465 virtual bool depends_only_on_test() const; // { return false; } |
|
466 |
465 |
467 virtual uint size_of() const { return sizeof(*this); } |
466 virtual uint size_of() const { return sizeof(*this); } |
468 |
467 |
469 // Assumes that "this" is an argument to a safepoint node "s", and that |
468 // Assumes that "this" is an argument to a safepoint node "s", and that |
470 // "new_call" is being created to correspond to "s". But the difference |
469 // "new_call" is being created to correspond to "s". But the difference |
878 // mark node as eliminated and update the counter if there is one |
877 // mark node as eliminated and update the counter if there is one |
879 void set_eliminated(); |
878 void set_eliminated(); |
880 |
879 |
881 bool is_coarsened() { return _coarsened; } |
880 bool is_coarsened() { return _coarsened; } |
882 void set_coarsened() { _coarsened = true; } |
881 void set_coarsened() { _coarsened = true; } |
|
882 void clear_coarsened() { _coarsened = false; } |
883 |
883 |
884 // locking does not modify its arguments |
884 // locking does not modify its arguments |
885 virtual bool may_modify(const TypePtr *addr_t, PhaseTransform *phase){ return false;} |
885 virtual bool may_modify(const TypePtr *addr_t, PhaseTransform *phase){ return false;} |
886 |
886 |
887 #ifndef PRODUCT |
887 #ifndef PRODUCT |