632 LoadPLockedNode( Node *c, Node *mem, Node *adr ) |
632 LoadPLockedNode( Node *c, Node *mem, Node *adr ) |
633 : LoadPNode(c,mem,adr,TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM) {} |
633 : LoadPNode(c,mem,adr,TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM) {} |
634 virtual int Opcode() const; |
634 virtual int Opcode() const; |
635 virtual int store_Opcode() const { return Op_StorePConditional; } |
635 virtual int store_Opcode() const { return Op_StorePConditional; } |
636 virtual bool depends_only_on_test() const { return true; } |
636 virtual bool depends_only_on_test() const { return true; } |
637 }; |
|
638 |
|
639 //------------------------------LoadLLockedNode--------------------------------- |
|
640 // Load-locked a pointer from memory (either object or array). |
|
641 // On Sparc & Intel this is implemented as a normal long load. |
|
642 class LoadLLockedNode : public LoadLNode { |
|
643 public: |
|
644 LoadLLockedNode( Node *c, Node *mem, Node *adr ) |
|
645 : LoadLNode(c,mem,adr,TypeRawPtr::BOTTOM, TypeLong::LONG) {} |
|
646 virtual int Opcode() const; |
|
647 virtual int store_Opcode() const { return Op_StoreLConditional; } |
|
648 }; |
637 }; |
649 |
638 |
650 //------------------------------SCMemProjNode--------------------------------------- |
639 //------------------------------SCMemProjNode--------------------------------------- |
651 // This class defines a projection of the memory state of a store conditional node. |
640 // This class defines a projection of the memory state of a store conditional node. |
652 // These nodes return a value, but also update memory. |
641 // These nodes return a value, but also update memory. |