Mercurial > hg > truffle
comparison src/share/vm/opto/connode.hpp @ 235:9c2ecc2ffb12 jdk7-b31
Merge
author | trims |
---|---|
date | Fri, 11 Jul 2008 01:14:44 -0700 |
parents | d1605aabd0a1 1e026f8da827 |
children | c771b7f43bbf |
comparison
equal
deleted
inserted
replaced
197:de141433919f | 235: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-------------------------------- |