--- a/hotspot/src/share/vm/opto/block.hpp Tue Feb 25 14:09:02 2014 +0100
+++ b/hotspot/src/share/vm/opto/block.hpp Tue Feb 25 17:51:27 2014 +0100
@@ -90,9 +90,9 @@
class CFGElement : public ResourceObj {
friend class VMStructs;
public:
- float _freq; // Execution frequency (estimate)
+ double _freq; // Execution frequency (estimate)
- CFGElement() : _freq(0.0f) {}
+ CFGElement() : _freq(0.0) {}
virtual bool is_block() { return false; }
virtual bool is_loop() { return false; }
Block* as_Block() { assert(is_block(), "must be block"); return (Block*)this; }
@@ -202,7 +202,7 @@
// BLOCK_FREQUENCY is a sentinel to mark uses of constant block frequencies.
// It is currently also used to scale such frequencies relative to
// FreqCountInvocations relative to the old value of 1500.
-#define BLOCK_FREQUENCY(f) ((f * (float) 1500) / FreqCountInvocations)
+#define BLOCK_FREQUENCY(f) ((f * (double) 1500) / FreqCountInvocations)
// Register Pressure (estimate) for Splitting heuristic
uint _reg_pressure;
@@ -393,7 +393,7 @@
CFGLoop* _root_loop;
// Outmost loop frequency
- float _outer_loop_frequency;
+ double _outer_loop_frequency;
// Per node latency estimation, valid only during GCM
GrowableArray<uint>* _node_latency;
@@ -508,7 +508,7 @@
}
// Get the outer most frequency
- float get_outer_loop_frequency() const {
+ double get_outer_loop_frequency() const {
return _outer_loop_frequency;
}
@@ -656,13 +656,13 @@
class BlockProbPair VALUE_OBJ_CLASS_SPEC {
protected:
Block* _target; // block target
- float _prob; // probability of edge to block
+ double _prob; // probability of edge to block
public:
BlockProbPair() : _target(NULL), _prob(0.0) {}
- BlockProbPair(Block* b, float p) : _target(b), _prob(p) {}
+ BlockProbPair(Block* b, double p) : _target(b), _prob(p) {}
Block* get_target() const { return _target; }
- float get_prob() const { return _prob; }
+ double get_prob() const { return _prob; }
};
//------------------------------CFGLoop-------------------------------------------
@@ -675,8 +675,8 @@
CFGLoop *_child; // first child, use child's sibling to visit all immediately nested loops
GrowableArray<CFGElement*> _members; // list of members of loop
GrowableArray<BlockProbPair> _exits; // list of successor blocks and their probabilities
- float _exit_prob; // probability any loop exit is taken on a single loop iteration
- void update_succ_freq(Block* b, float freq);
+ double _exit_prob; // probability any loop exit is taken on a single loop iteration
+ void update_succ_freq(Block* b, double freq);
public:
CFGLoop(int id) :
@@ -702,9 +702,9 @@
void compute_loop_depth(int depth);
void compute_freq(); // compute frequency with loop assuming head freq 1.0f
void scale_freq(); // scale frequency by loop trip count (including outer loops)
- float outer_loop_freq() const; // frequency of outer loop
+ double outer_loop_freq() const; // frequency of outer loop
bool in_loop_nest(Block* b);
- float trip_count() const { return 1.0f / _exit_prob; }
+ double trip_count() const { return 1.0 / _exit_prob; }
virtual bool is_loop() { return true; }
int id() { return _id; }
@@ -723,7 +723,7 @@
private:
Block * _from; // Source basic block
Block * _to; // Destination basic block
- float _freq; // Execution frequency (estimate)
+ double _freq; // Execution frequency (estimate)
int _state;
bool _infrequent;
int _from_pct;
@@ -742,13 +742,13 @@
interior // edge is interior to trace (could be backedge)
};
- CFGEdge(Block *from, Block *to, float freq, int from_pct, int to_pct) :
+ CFGEdge(Block *from, Block *to, double freq, int from_pct, int to_pct) :
_from(from), _to(to), _freq(freq),
_from_pct(from_pct), _to_pct(to_pct), _state(open) {
_infrequent = from_infrequent() || to_infrequent();
}
- float freq() const { return _freq; }
+ double freq() const { return _freq; }
Block* from() const { return _from; }
Block* to () const { return _to; }
int infrequent() const { return _infrequent; }