< prev index next >

src/hotspot/share/opto/machnode.hpp

Print this page
rev 56101 : 8227745: Enable Escape Analysis for better performance when debugging
Reviewed-by: ???


 797   const TypePtr* _adr_type;     // memory effects of call or return
 798   MachReturnNode() : MachNode() {
 799     init_class_id(Class_MachReturn);
 800     _adr_type = TypePtr::BOTTOM; // the default: all of memory
 801   }
 802 
 803   void set_adr_type(const TypePtr* atp) { _adr_type = atp; }
 804 
 805   virtual const RegMask &in_RegMask(uint) const;
 806   virtual bool pinned() const { return true; };
 807   virtual const TypePtr *adr_type() const;
 808 };
 809 
 810 //------------------------------MachSafePointNode-----------------------------
 811 // Machine-specific versions of safepoints
 812 class MachSafePointNode : public MachReturnNode {
 813 public:
 814   OopMap*         _oop_map;     // Array of OopMap info (8-bit char) for GC
 815   JVMState*       _jvms;        // Pointer to list of JVM State Objects
 816   uint            _jvmadj;      // Extra delta to jvms indexes (mach. args)

 817   OopMap*         oop_map() const { return _oop_map; }
 818   void            set_oop_map(OopMap* om) { _oop_map = om; }
 819 
 820   MachSafePointNode() : MachReturnNode(), _oop_map(NULL), _jvms(NULL), _jvmadj(0) {
 821     init_class_id(Class_MachSafePoint);
 822   }
 823 
 824   virtual JVMState* jvms() const { return _jvms; }
 825   void set_jvms(JVMState* s) {
 826     _jvms = s;
 827   }
 828   virtual const Type    *bottom_type() const;
 829 
 830   virtual const RegMask &in_RegMask(uint) const;
 831 
 832   // Functionality from old debug nodes
 833   Node *returnadr() const { return in(TypeFunc::ReturnAdr); }
 834   Node *frameptr () const { return in(TypeFunc::FramePtr); }
 835 
 836   Node *local(const JVMState* jvms, uint idx) const {
 837     assert(verify_jvms(jvms), "jvms must match");
 838     return in(_jvmadj + jvms->locoff() + idx);
 839   }
 840   Node *stack(const JVMState* jvms, uint idx) const {


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

 922   MachCallJavaNode() : MachCallNode(), _override_symbolic_info(false) {
 923     init_class_id(Class_MachCallJava);
 924   }
 925 
 926   virtual const RegMask &in_RegMask(uint) const;
 927 
 928   int resolved_method_index(CodeBuffer &cbuf) const {
 929     if (_override_symbolic_info) {
 930       // Attach corresponding Method* to the call site, so VM can use it during resolution
 931       // instead of querying symbolic info from bytecode.
 932       assert(_method != NULL, "method should be set");
 933       assert(_method->constant_encoding()->is_method(), "should point to a Method");
 934       return cbuf.oop_recorder()->find_index(_method->constant_encoding());
 935     }
 936     return 0; // Use symbolic info from bytecode (resolved_method == NULL).
 937   }
 938 
 939 #ifndef PRODUCT
 940   virtual void dump_spec(outputStream *st) const;
 941 #endif




 797   const TypePtr* _adr_type;     // memory effects of call or return
 798   MachReturnNode() : MachNode() {
 799     init_class_id(Class_MachReturn);
 800     _adr_type = TypePtr::BOTTOM; // the default: all of memory
 801   }
 802 
 803   void set_adr_type(const TypePtr* atp) { _adr_type = atp; }
 804 
 805   virtual const RegMask &in_RegMask(uint) const;
 806   virtual bool pinned() const { return true; };
 807   virtual const TypePtr *adr_type() const;
 808 };
 809 
 810 //------------------------------MachSafePointNode-----------------------------
 811 // Machine-specific versions of safepoints
 812 class MachSafePointNode : public MachReturnNode {
 813 public:
 814   OopMap*         _oop_map;     // Array of OopMap info (8-bit char) for GC
 815   JVMState*       _jvms;        // Pointer to list of JVM State Objects
 816   uint            _jvmadj;      // Extra delta to jvms indexes (mach. args)
 817   bool            _not_global_escape_in_scope; // NoEscape or ArgEscape objects in JVM States
 818   OopMap*         oop_map() const { return _oop_map; }
 819   void            set_oop_map(OopMap* om) { _oop_map = om; }
 820 
 821   MachSafePointNode() : MachReturnNode(), _oop_map(NULL), _jvms(NULL), _jvmadj(0), _not_global_escape_in_scope(false) {
 822     init_class_id(Class_MachSafePoint);
 823   }
 824 
 825   virtual JVMState* jvms() const { return _jvms; }
 826   void set_jvms(JVMState* s) {
 827     _jvms = s;
 828   }
 829   virtual const Type    *bottom_type() const;
 830 
 831   virtual const RegMask &in_RegMask(uint) const;
 832 
 833   // Functionality from old debug nodes
 834   Node *returnadr() const { return in(TypeFunc::ReturnAdr); }
 835   Node *frameptr () const { return in(TypeFunc::FramePtr); }
 836 
 837   Node *local(const JVMState* jvms, uint idx) const {
 838     assert(verify_jvms(jvms), "jvms must match");
 839     return in(_jvmadj + jvms->locoff() + idx);
 840   }
 841   Node *stack(const JVMState* jvms, uint idx) const {


 903   // Similar to cousin class CallNode::returns_pointer
 904   bool returns_pointer() const;
 905 
 906 #ifndef PRODUCT
 907   virtual void dump_spec(outputStream *st) const;
 908 #endif
 909 };
 910 
 911 //------------------------------MachCallJavaNode------------------------------
 912 // "Base" class for machine-specific versions of subroutine calls
 913 class MachCallJavaNode : public MachCallNode {
 914 protected:
 915   virtual bool cmp( const Node &n ) const;
 916   virtual uint size_of() const; // Size is bigger
 917 public:
 918   ciMethod* _method;                 // Method being direct called
 919   bool      _override_symbolic_info; // Override symbolic call site info from bytecode
 920   int       _bci;                    // Byte Code index of call byte code
 921   bool      _optimized_virtual;      // Tells if node is a static call or an optimized virtual
 922   bool      _method_handle_invoke;   // Tells if the call has to preserve SP
 923   bool      _arg_escape;             // ArgEscape in parameter list
 924   MachCallJavaNode() : MachCallNode(), _override_symbolic_info(false) {
 925     init_class_id(Class_MachCallJava);
 926   }
 927 
 928   virtual const RegMask &in_RegMask(uint) const;
 929 
 930   int resolved_method_index(CodeBuffer &cbuf) const {
 931     if (_override_symbolic_info) {
 932       // Attach corresponding Method* to the call site, so VM can use it during resolution
 933       // instead of querying symbolic info from bytecode.
 934       assert(_method != NULL, "method should be set");
 935       assert(_method->constant_encoding()->is_method(), "should point to a Method");
 936       return cbuf.oop_recorder()->find_index(_method->constant_encoding());
 937     }
 938     return 0; // Use symbolic info from bytecode (resolved_method == NULL).
 939   }
 940 
 941 #ifndef PRODUCT
 942   virtual void dump_spec(outputStream *st) const;
 943 #endif


< prev index next >