src/share/vm/opto/connode.hpp

changeset 670
9c2ecc2ffb12
parent 631
d1605aabd0a1
parent 656
1e026f8da827
child 1078
c771b7f43bbf
equal deleted inserted replaced
632:de141433919f 670:9c2ecc2ffb12
278 virtual int Opcode() const; 278 virtual int Opcode() const;
279 virtual Node *Identity( PhaseTransform *phase ); 279 virtual Node *Identity( PhaseTransform *phase );
280 virtual const Type *Value( PhaseTransform *phase ) const; 280 virtual const Type *Value( PhaseTransform *phase ) const;
281 virtual uint ideal_reg() const { return Op_RegN; } 281 virtual uint ideal_reg() const { return Op_RegN; }
282 282
283 static Node* encode(PhaseTransform* phase, Node* value);
284 virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp ); 283 virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp );
285 }; 284 };
286 285
287 //------------------------------DecodeN-------------------------------- 286 //------------------------------DecodeN--------------------------------
288 // Converts a narrow oop into a real oop ptr. 287 // Converts a narrow oop into a real oop ptr.
298 } 297 }
299 virtual int Opcode() const; 298 virtual int Opcode() const;
300 virtual Node *Identity( PhaseTransform *phase ); 299 virtual Node *Identity( PhaseTransform *phase );
301 virtual const Type *Value( PhaseTransform *phase ) const; 300 virtual const Type *Value( PhaseTransform *phase ) const;
302 virtual uint ideal_reg() const { return Op_RegP; } 301 virtual uint ideal_reg() const { return Op_RegP; }
303
304 static Node* decode(PhaseTransform* phase, Node* value);
305 }; 302 };
306 303
307 //------------------------------Conv2BNode------------------------------------- 304 //------------------------------Conv2BNode-------------------------------------
308 // Convert int/pointer to a Boolean. Map zero to zero, all else to 1. 305 // Convert int/pointer to a Boolean. Map zero to zero, all else to 1.
309 class Conv2BNode : public Node { 306 class Conv2BNode : public Node {
547 // Stops value-numbering, Ideal calls or Identity functions. 544 // Stops value-numbering, Ideal calls or Identity functions.
548 class Opaque1Node : public Node { 545 class Opaque1Node : public Node {
549 virtual uint hash() const ; // { return NO_HASH; } 546 virtual uint hash() const ; // { return NO_HASH; }
550 virtual uint cmp( const Node &n ) const; 547 virtual uint cmp( const Node &n ) const;
551 public: 548 public:
552 Opaque1Node( Node *n ) : Node(0,n) {} 549 Opaque1Node( Compile* C, Node *n ) : Node(0,n) {
550 // Put it on the Macro nodes list to removed during macro nodes expansion.
551 init_flags(Flag_is_macro);
552 C->add_macro_node(this);
553 }
553 // Special version for the pre-loop to hold the original loop limit 554 // Special version for the pre-loop to hold the original loop limit
554 // which is consumed by range check elimination. 555 // which is consumed by range check elimination.
555 Opaque1Node( Node *n, Node* orig_limit ) : Node(0,n,orig_limit) {} 556 Opaque1Node( Compile* C, Node *n, Node* orig_limit ) : Node(0,n,orig_limit) {
557 // Put it on the Macro nodes list to removed during macro nodes expansion.
558 init_flags(Flag_is_macro);
559 C->add_macro_node(this);
560 }
556 Node* original_loop_limit() { return req()==3 ? in(2) : NULL; } 561 Node* original_loop_limit() { return req()==3 ? in(2) : NULL; }
557 virtual int Opcode() const; 562 virtual int Opcode() const;
558 virtual const Type *bottom_type() const { return TypeInt::INT; } 563 virtual const Type *bottom_type() const { return TypeInt::INT; }
559 virtual Node *Identity( PhaseTransform *phase ); 564 virtual Node *Identity( PhaseTransform *phase );
560 }; 565 };
570 // it's OK to be slightly sloppy on optimizations here. 575 // it's OK to be slightly sloppy on optimizations here.
571 class Opaque2Node : public Node { 576 class Opaque2Node : public Node {
572 virtual uint hash() const ; // { return NO_HASH; } 577 virtual uint hash() const ; // { return NO_HASH; }
573 virtual uint cmp( const Node &n ) const; 578 virtual uint cmp( const Node &n ) const;
574 public: 579 public:
575 Opaque2Node( Node *n ) : Node(0,n) {} 580 Opaque2Node( Compile* C, Node *n ) : Node(0,n) {
581 // Put it on the Macro nodes list to removed during macro nodes expansion.
582 init_flags(Flag_is_macro);
583 C->add_macro_node(this);
584 }
576 virtual int Opcode() const; 585 virtual int Opcode() const;
577 virtual const Type *bottom_type() const { return TypeInt::INT; } 586 virtual const Type *bottom_type() const { return TypeInt::INT; }
578 }; 587 };
579 588
580 //----------------------PartialSubtypeCheckNode-------------------------------- 589 //----------------------PartialSubtypeCheckNode--------------------------------

mercurial