comparison src/share/vm/opto/connode.hpp @ 216:8d191a7697e2

6715633: when matching a memory node the adr_type should not change Summary: verify the adr_type of a mach node was not changed Reviewed-by: rasbold, never
author kvn
date Fri, 20 Jun 2008 11:10:05 -0700
parents 7793bd37a336
children 1e026f8da827
comparison
equal deleted inserted replaced
215:273eaa04d9a1 216:8d191a7697e2
547 // Stops value-numbering, Ideal calls or Identity functions. 547 // Stops value-numbering, Ideal calls or Identity functions.
548 class Opaque1Node : public Node { 548 class Opaque1Node : public Node {
549 virtual uint hash() const ; // { return NO_HASH; } 549 virtual uint hash() const ; // { return NO_HASH; }
550 virtual uint cmp( const Node &n ) const; 550 virtual uint cmp( const Node &n ) const;
551 public: 551 public:
552 Opaque1Node( Node *n ) : Node(0,n) {} 552 Opaque1Node( Compile* C, Node *n ) : Node(0,n) {
553 // Put it on the Macro nodes list to removed during macro nodes expansion.
554 init_flags(Flag_is_macro);
555 C->add_macro_node(this);
556 }
553 // Special version for the pre-loop to hold the original loop limit 557 // Special version for the pre-loop to hold the original loop limit
554 // which is consumed by range check elimination. 558 // which is consumed by range check elimination.
555 Opaque1Node( Node *n, Node* orig_limit ) : Node(0,n,orig_limit) {} 559 Opaque1Node( Compile* C, Node *n, Node* orig_limit ) : Node(0,n,orig_limit) {
560 // Put it on the Macro nodes list to removed during macro nodes expansion.
561 init_flags(Flag_is_macro);
562 C->add_macro_node(this);
563 }
556 Node* original_loop_limit() { return req()==3 ? in(2) : NULL; } 564 Node* original_loop_limit() { return req()==3 ? in(2) : NULL; }
557 virtual int Opcode() const; 565 virtual int Opcode() const;
558 virtual const Type *bottom_type() const { return TypeInt::INT; } 566 virtual const Type *bottom_type() const { return TypeInt::INT; }
559 virtual Node *Identity( PhaseTransform *phase ); 567 virtual Node *Identity( PhaseTransform *phase );
560 }; 568 };
570 // it's OK to be slightly sloppy on optimizations here. 578 // it's OK to be slightly sloppy on optimizations here.
571 class Opaque2Node : public Node { 579 class Opaque2Node : public Node {
572 virtual uint hash() const ; // { return NO_HASH; } 580 virtual uint hash() const ; // { return NO_HASH; }
573 virtual uint cmp( const Node &n ) const; 581 virtual uint cmp( const Node &n ) const;
574 public: 582 public:
575 Opaque2Node( Node *n ) : Node(0,n) {} 583 Opaque2Node( Compile* C, Node *n ) : Node(0,n) {
584 // Put it on the Macro nodes list to removed during macro nodes expansion.
585 init_flags(Flag_is_macro);
586 C->add_macro_node(this);
587 }
576 virtual int Opcode() const; 588 virtual int Opcode() const;
577 virtual const Type *bottom_type() const { return TypeInt::INT; } 589 virtual const Type *bottom_type() const { return TypeInt::INT; }
578 }; 590 };
579 591
580 //----------------------PartialSubtypeCheckNode-------------------------------- 592 //----------------------PartialSubtypeCheckNode--------------------------------