483 |
483 |
484 //------------------------------JumpNode--------------------------------------- |
484 //------------------------------JumpNode--------------------------------------- |
485 // Indirect branch. Uses PCTable above to implement a switch statement. |
485 // Indirect branch. Uses PCTable above to implement a switch statement. |
486 // It emits as a table load and local branch. |
486 // It emits as a table load and local branch. |
487 class JumpNode : public PCTableNode { |
487 class JumpNode : public PCTableNode { |
488 public: |
488 virtual uint size_of() const { return sizeof(*this); } |
489 JumpNode( Node* control, Node* switch_val, uint size) : PCTableNode(control, switch_val, size) { |
489 public: |
|
490 float* _probs; // probability of each projection |
|
491 float _fcnt; // total number of times this Jump was executed |
|
492 JumpNode( Node* control, Node* switch_val, uint size, float* probs, float cnt) |
|
493 : PCTableNode(control, switch_val, size), |
|
494 _probs(probs), _fcnt(cnt) { |
490 init_class_id(Class_Jump); |
495 init_class_id(Class_Jump); |
491 } |
496 } |
492 virtual int Opcode() const; |
497 virtual int Opcode() const; |
493 virtual const RegMask& out_RegMask() const; |
498 virtual const RegMask& out_RegMask() const; |
494 virtual const Node* is_block_proj() const { return this; } |
499 virtual const Node* is_block_proj() const { return this; } |