Mercurial > hg > truffle
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-------------------------------- |