< prev index next >

src/hotspot/share/opto/machnode.hpp

Print this page




 878   void set_entry_point(address p) { _entry_point = p; }
 879   void set_cnt(float c)           { _cnt = c; }
 880   void set_argsize(int s)         { _argsize = s; }
 881 
 882   MachCallNode() : MachSafePointNode() {
 883     init_class_id(Class_MachCall);
 884   }
 885 
 886   virtual const Type *bottom_type() const;
 887   virtual bool  pinned() const { return false; }
 888   virtual const Type* Value(PhaseGVN* phase) const;
 889   virtual const RegMask &in_RegMask(uint) const;
 890   virtual int ret_addr_offset() { return 0; }
 891 
 892   bool returns_long() const { return tf()->return_type() == T_LONG; }
 893   bool return_value_is_used() const;
 894 
 895   // Similar to cousin class CallNode::returns_pointer
 896   bool returns_pointer() const;
 897 


 898 #ifndef PRODUCT
 899   virtual void dump_spec(outputStream *st) const;
 900 #endif
 901 };
 902 
 903 //------------------------------MachCallJavaNode------------------------------
 904 // "Base" class for machine-specific versions of subroutine calls
 905 class MachCallJavaNode : public MachCallNode {
 906 protected:
 907   virtual uint cmp( const Node &n ) const;
 908   virtual uint size_of() const; // Size is bigger
 909 public:
 910   ciMethod* _method;                 // Method being direct called
 911   bool      _override_symbolic_info; // Override symbolic call site info from bytecode
 912   int       _bci;                    // Byte Code index of call byte code
 913   bool      _optimized_virtual;      // Tells if node is a static call or an optimized virtual
 914   bool      _method_handle_invoke;   // Tells if the call has to preserve SP
 915   MachCallJavaNode() : MachCallNode(), _override_symbolic_info(false) {
 916     init_class_id(Class_MachCallJava);
 917   }


 956 };
 957 
 958 //------------------------------MachCallDynamicJavaNode------------------------
 959 // Machine-specific versions of possibly megamorphic subroutine calls
 960 class MachCallDynamicJavaNode : public MachCallJavaNode {
 961 public:
 962   int _vtable_index;
 963   MachCallDynamicJavaNode() : MachCallJavaNode() {
 964     init_class_id(Class_MachCallDynamicJava);
 965     DEBUG_ONLY(_vtable_index = -99);  // throw an assert if uninitialized
 966   }
 967   virtual int ret_addr_offset();
 968 #ifndef PRODUCT
 969   virtual void dump_spec(outputStream *st) const;
 970 #endif
 971 };
 972 
 973 //------------------------------MachCallRuntimeNode----------------------------
 974 // Machine-specific versions of subroutine calls
 975 class MachCallRuntimeNode : public MachCallNode {

 976   virtual uint cmp( const Node &n ) const;

 977   virtual uint size_of() const; // Size is bigger
 978 public:
 979   const char *_name;            // Printable name, if _method is NULL
 980   MachCallRuntimeNode() : MachCallNode() {
 981     init_class_id(Class_MachCallRuntime);
 982   }
 983   virtual int ret_addr_offset();
 984 #ifndef PRODUCT
 985   virtual void dump_spec(outputStream *st) const;
 986 #endif
 987 };
 988 
 989 class MachCallLeafNode: public MachCallRuntimeNode {




 990 public:
 991   MachCallLeafNode() : MachCallRuntimeNode() {
 992     init_class_id(Class_MachCallLeaf);
 993   }






 994 };
 995 
 996 //------------------------------MachHaltNode-----------------------------------
 997 // Machine-specific versions of halt nodes
 998 class MachHaltNode : public MachReturnNode {
 999 public:
1000   virtual JVMState* jvms() const;
1001 };
1002 
1003 class MachMemBarNode : public MachNode {
1004   virtual uint size_of() const; // Size is bigger
1005 public:
1006   const TypePtr* _adr_type;     // memory effects
1007   MachMemBarNode() : MachNode() {
1008     init_class_id(Class_MachMemBar);
1009     _adr_type = TypePtr::BOTTOM; // the default: all of memory
1010   }
1011 
1012   void set_adr_type(const TypePtr* atp) { _adr_type = atp; }
1013   virtual const TypePtr *adr_type() const;




 878   void set_entry_point(address p) { _entry_point = p; }
 879   void set_cnt(float c)           { _cnt = c; }
 880   void set_argsize(int s)         { _argsize = s; }
 881 
 882   MachCallNode() : MachSafePointNode() {
 883     init_class_id(Class_MachCall);
 884   }
 885 
 886   virtual const Type *bottom_type() const;
 887   virtual bool  pinned() const { return false; }
 888   virtual const Type* Value(PhaseGVN* phase) const;
 889   virtual const RegMask &in_RegMask(uint) const;
 890   virtual int ret_addr_offset() { return 0; }
 891 
 892   bool returns_long() const { return tf()->return_type() == T_LONG; }
 893   bool return_value_is_used() const;
 894 
 895   // Similar to cousin class CallNode::returns_pointer
 896   bool returns_pointer() const;
 897 
 898   virtual bool preserves_fp_registers() const { return false; }
 899 
 900 #ifndef PRODUCT
 901   virtual void dump_spec(outputStream *st) const;
 902 #endif
 903 };
 904 
 905 //------------------------------MachCallJavaNode------------------------------
 906 // "Base" class for machine-specific versions of subroutine calls
 907 class MachCallJavaNode : public MachCallNode {
 908 protected:
 909   virtual uint cmp( const Node &n ) const;
 910   virtual uint size_of() const; // Size is bigger
 911 public:
 912   ciMethod* _method;                 // Method being direct called
 913   bool      _override_symbolic_info; // Override symbolic call site info from bytecode
 914   int       _bci;                    // Byte Code index of call byte code
 915   bool      _optimized_virtual;      // Tells if node is a static call or an optimized virtual
 916   bool      _method_handle_invoke;   // Tells if the call has to preserve SP
 917   MachCallJavaNode() : MachCallNode(), _override_symbolic_info(false) {
 918     init_class_id(Class_MachCallJava);
 919   }


 958 };
 959 
 960 //------------------------------MachCallDynamicJavaNode------------------------
 961 // Machine-specific versions of possibly megamorphic subroutine calls
 962 class MachCallDynamicJavaNode : public MachCallJavaNode {
 963 public:
 964   int _vtable_index;
 965   MachCallDynamicJavaNode() : MachCallJavaNode() {
 966     init_class_id(Class_MachCallDynamicJava);
 967     DEBUG_ONLY(_vtable_index = -99);  // throw an assert if uninitialized
 968   }
 969   virtual int ret_addr_offset();
 970 #ifndef PRODUCT
 971   virtual void dump_spec(outputStream *st) const;
 972 #endif
 973 };
 974 
 975 //------------------------------MachCallRuntimeNode----------------------------
 976 // Machine-specific versions of subroutine calls
 977 class MachCallRuntimeNode : public MachCallNode {
 978 protected:
 979   virtual uint cmp( const Node &n ) const;
 980 private:
 981   virtual uint size_of() const; // Size is bigger
 982 public:
 983   const char *_name;            // Printable name, if _method is NULL
 984   MachCallRuntimeNode() : MachCallNode() {
 985     init_class_id(Class_MachCallRuntime);
 986   }
 987   virtual int ret_addr_offset();
 988 #ifndef PRODUCT
 989   virtual void dump_spec(outputStream *st) const;
 990 #endif
 991 };
 992 
 993 class MachCallLeafNode: public MachCallRuntimeNode {
 994   virtual uint cmp( const Node &n ) const;
 995   virtual uint size_of() const; // Size is bigger
 996 private:
 997   bool _preserves_fp_registers;
 998 public:
 999   MachCallLeafNode() : MachCallRuntimeNode() {
1000     init_class_id(Class_MachCallLeaf);
1001   }
1002 
1003   void set_preserves_fp_registers(bool v) { _preserves_fp_registers = v; }
1004   virtual bool preserves_fp_registers() const { return _preserves_fp_registers; }
1005 #ifndef PRODUCT
1006   virtual void dump_spec(outputStream *st) const;
1007 #endif
1008 };
1009 
1010 //------------------------------MachHaltNode-----------------------------------
1011 // Machine-specific versions of halt nodes
1012 class MachHaltNode : public MachReturnNode {
1013 public:
1014   virtual JVMState* jvms() const;
1015 };
1016 
1017 class MachMemBarNode : public MachNode {
1018   virtual uint size_of() const; // Size is bigger
1019 public:
1020   const TypePtr* _adr_type;     // memory effects
1021   MachMemBarNode() : MachNode() {
1022     init_class_id(Class_MachMemBar);
1023     _adr_type = TypePtr::BOTTOM; // the default: all of memory
1024   }
1025 
1026   void set_adr_type(const TypePtr* atp) { _adr_type = atp; }
1027   virtual const TypePtr *adr_type() const;


< prev index next >