comparison src/share/vm/opto/subnode.hpp @ 8048:8b3da8d14c93

7197327: 40% regression on 8 b41 comp 8 b40 on specjvm2008.mpegaudio on oob Summary: Add support for expensive nodes. Reviewed-by: kvn
author roland
date Tue, 12 Feb 2013 12:56:11 +0100
parents b9a9ed0f8eeb
children c59b7900a2bd
comparison
equal deleted inserted replaced
8047:1e5e28bac299 8048:8b3da8d14c93
454 454
455 //------------------------------ExpDNode--------------------------------------- 455 //------------------------------ExpDNode---------------------------------------
456 // Exponentiate a double 456 // Exponentiate a double
457 class ExpDNode : public Node { 457 class ExpDNode : public Node {
458 public: 458 public:
459 ExpDNode( Node *c, Node *in1 ) : Node(c, in1) {} 459 ExpDNode(Compile* C, Node *c, Node *in1) : Node(c, in1) {
460 init_flags(Flag_is_expensive);
461 C->add_expensive_node(this);
462 }
460 virtual int Opcode() const; 463 virtual int Opcode() const;
461 const Type *bottom_type() const { return Type::DOUBLE; } 464 const Type *bottom_type() const { return Type::DOUBLE; }
462 virtual uint ideal_reg() const { return Op_RegD; } 465 virtual uint ideal_reg() const { return Op_RegD; }
463 virtual const Type *Value( PhaseTransform *phase ) const; 466 virtual const Type *Value( PhaseTransform *phase ) const;
464 }; 467 };
487 490
488 //------------------------------PowDNode--------------------------------------- 491 //------------------------------PowDNode---------------------------------------
489 // Raise a double to a double power 492 // Raise a double to a double power
490 class PowDNode : public Node { 493 class PowDNode : public Node {
491 public: 494 public:
492 PowDNode(Node *c, Node *in1, Node *in2 ) : Node(c, in1, in2) {} 495 PowDNode(Compile* C, Node *c, Node *in1, Node *in2 ) : Node(c, in1, in2) {
496 init_flags(Flag_is_expensive);
497 C->add_expensive_node(this);
498 }
493 virtual int Opcode() const; 499 virtual int Opcode() const;
494 const Type *bottom_type() const { return Type::DOUBLE; } 500 const Type *bottom_type() const { return Type::DOUBLE; }
495 virtual uint ideal_reg() const { return Op_RegD; } 501 virtual uint ideal_reg() const { return Op_RegD; }
496 virtual const Type *Value( PhaseTransform *phase ) const; 502 virtual const Type *Value( PhaseTransform *phase ) const;
497 }; 503 };