src/share/vm/opto/memnode.hpp
Print this page
*** 864,955 ****
// Return allocation input memory edge if it is different instance
// or itself if it is the one we are looking for.
static bool step_through(Node** np, uint instance_id, PhaseTransform* phase);
};
- //------------------------------StrIntrinsic-------------------------------
- // Base class for Ideal nodes used in String instrinsic code.
- class StrIntrinsicNode: public Node {
- public:
- StrIntrinsicNode(Node* control, Node* char_array_mem,
- Node* s1, Node* c1, Node* s2, Node* c2):
- Node(control, char_array_mem, s1, c1, s2, c2) {
- }
-
- StrIntrinsicNode(Node* control, Node* char_array_mem,
- Node* s1, Node* s2, Node* c):
- Node(control, char_array_mem, s1, s2, c) {
- }
-
- StrIntrinsicNode(Node* control, Node* char_array_mem,
- Node* s1, Node* s2):
- Node(control, char_array_mem, s1, s2) {
- }
-
- virtual bool depends_only_on_test() const { return false; }
- virtual const TypePtr* adr_type() const { return TypeAryPtr::CHARS; }
- virtual uint match_edge(uint idx) const;
- virtual uint ideal_reg() const { return Op_RegI; }
- virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
- virtual const Type *Value(PhaseTransform *phase) const;
- };
-
- //------------------------------StrComp-------------------------------------
- class StrCompNode: public StrIntrinsicNode {
- public:
- StrCompNode(Node* control, Node* char_array_mem,
- Node* s1, Node* c1, Node* s2, Node* c2):
- StrIntrinsicNode(control, char_array_mem, s1, c1, s2, c2) {};
- virtual int Opcode() const;
- virtual const Type* bottom_type() const { return TypeInt::INT; }
- };
-
- //------------------------------StrEquals-------------------------------------
- class StrEqualsNode: public StrIntrinsicNode {
- public:
- StrEqualsNode(Node* control, Node* char_array_mem,
- Node* s1, Node* s2, Node* c):
- StrIntrinsicNode(control, char_array_mem, s1, s2, c) {};
- virtual int Opcode() const;
- virtual const Type* bottom_type() const { return TypeInt::BOOL; }
- };
-
- //------------------------------StrIndexOf-------------------------------------
- class StrIndexOfNode: public StrIntrinsicNode {
- public:
- StrIndexOfNode(Node* control, Node* char_array_mem,
- Node* s1, Node* c1, Node* s2, Node* c2):
- StrIntrinsicNode(control, char_array_mem, s1, c1, s2, c2) {};
- virtual int Opcode() const;
- virtual const Type* bottom_type() const { return TypeInt::INT; }
- };
-
- //------------------------------AryEq---------------------------------------
- class AryEqNode: public StrIntrinsicNode {
- public:
- AryEqNode(Node* control, Node* char_array_mem, Node* s1, Node* s2):
- StrIntrinsicNode(control, char_array_mem, s1, s2) {};
- virtual int Opcode() const;
- virtual const Type* bottom_type() const { return TypeInt::BOOL; }
- };
-
-
- //------------------------------EncodeISOArray--------------------------------
- // encode char[] to byte[] in ISO_8859_1
- class EncodeISOArrayNode: public Node {
- public:
- EncodeISOArrayNode(Node *control, Node* arymem, Node* s1, Node* s2, Node* c): Node(control, arymem, s1, s2, c) {};
- virtual int Opcode() const;
- virtual bool depends_only_on_test() const { return false; }
- virtual const Type* bottom_type() const { return TypeInt::INT; }
- virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; }
- virtual uint match_edge(uint idx) const;
- virtual uint ideal_reg() const { return Op_RegI; }
- virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
- virtual const Type *Value(PhaseTransform *phase) const;
- };
-
//------------------------------MemBar-----------------------------------------
// There are different flavors of Memory Barriers to match the Java Memory
// Model. Monitor-enter and volatile-load act as Aquires: no following ref
// can be moved to before them. We insert a MemBar-Acquire after a FastLock or
// volatile-load. Monitor-exit and volatile-store act as Release: no
--- 864,873 ----