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