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
887 public:
888 ciMethod* _method; // Method being direct called
889 bool _override_symbolic_info; // Override symbolic call site info from bytecode
890 int _bci; // Byte Code index of call byte code
891 bool _optimized_virtual; // Tells if node is a static call or an optimized virtual
892 bool _method_handle_invoke; // Tells if the call has to preserve SP
893 MachCallJavaNode() : MachCallNode(), _override_symbolic_info(false) {
894 init_class_id(Class_MachCallJava);
|
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 bool returns_vt() const;
876
877 #ifndef PRODUCT
878 virtual void dump_spec(outputStream *st) const;
879 #endif
880 };
881
882 //------------------------------MachCallJavaNode------------------------------
883 // "Base" class for machine-specific versions of subroutine calls
884 class MachCallJavaNode : public MachCallNode {
885 protected:
886 virtual uint cmp( const Node &n ) const;
887 virtual uint size_of() const; // Size is bigger
888 public:
889 ciMethod* _method; // Method being direct called
890 bool _override_symbolic_info; // Override symbolic call site info from bytecode
891 int _bci; // Byte Code index of call byte code
892 bool _optimized_virtual; // Tells if node is a static call or an optimized virtual
893 bool _method_handle_invoke; // Tells if the call has to preserve SP
894 MachCallJavaNode() : MachCallNode(), _override_symbolic_info(false) {
895 init_class_id(Class_MachCallJava);
|