846 address _entry_point; // Address of the method being called
847 float _cnt; // Estimate of number of times called
848 uint _argsize; // Size of argument block on stack
849
850 const TypeFunc* tf() const { return _tf; }
851 const address entry_point() const { return _entry_point; }
852 const float cnt() const { return _cnt; }
853 uint argsize() const { return _argsize; }
854
855 void set_tf(const TypeFunc* tf) { _tf = tf; }
856 void set_entry_point(address p) { _entry_point = p; }
857 void set_cnt(float c) { _cnt = c; }
858 void set_argsize(int s) { _argsize = s; }
859
860 MachCallNode() : MachSafePointNode() {
861 init_class_id(Class_MachCall);
862 }
863
864 virtual const Type *bottom_type() const;
865 virtual bool pinned() const { return false; }
866 virtual const Type *Value( PhaseTransform *phase ) const;
867 virtual const RegMask &in_RegMask(uint) const;
868 virtual int ret_addr_offset() { return 0; }
869
870 bool returns_long() const { return tf()->return_type() == T_LONG; }
871 bool return_value_is_used() const;
872
873 // Similar to cousin class CallNode::returns_pointer
874 bool returns_pointer() const;
875
876 #ifndef PRODUCT
877 virtual void dump_spec(outputStream *st) const;
878 #endif
879 };
880
881 //------------------------------MachCallJavaNode------------------------------
882 // "Base" class for machine-specific versions of subroutine calls
883 class MachCallJavaNode : public MachCallNode {
884 protected:
885 virtual uint cmp( const Node &n ) const;
886 virtual uint size_of() const; // Size is bigger
|
846 address _entry_point; // Address of the method being called
847 float _cnt; // Estimate of number of times called
848 uint _argsize; // Size of argument block on stack
849
850 const TypeFunc* tf() const { return _tf; }
851 const address entry_point() const { return _entry_point; }
852 const float cnt() const { return _cnt; }
853 uint argsize() const { return _argsize; }
854
855 void set_tf(const TypeFunc* tf) { _tf = tf; }
856 void set_entry_point(address p) { _entry_point = p; }
857 void set_cnt(float c) { _cnt = c; }
858 void set_argsize(int s) { _argsize = s; }
859
860 MachCallNode() : MachSafePointNode() {
861 init_class_id(Class_MachCall);
862 }
863
864 virtual const Type *bottom_type() const;
865 virtual bool pinned() const { return false; }
866 virtual const Type* Value(PhaseGVN* phase) const;
867 virtual const RegMask &in_RegMask(uint) const;
868 virtual int ret_addr_offset() { return 0; }
869
870 bool returns_long() const { return tf()->return_type() == T_LONG; }
871 bool return_value_is_used() const;
872
873 // Similar to cousin class CallNode::returns_pointer
874 bool returns_pointer() const;
875
876 #ifndef PRODUCT
877 virtual void dump_spec(outputStream *st) const;
878 #endif
879 };
880
881 //------------------------------MachCallJavaNode------------------------------
882 // "Base" class for machine-specific versions of subroutine calls
883 class MachCallJavaNode : public MachCallNode {
884 protected:
885 virtual uint cmp( const Node &n ) const;
886 virtual uint size_of() const; // Size is bigger
|