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
|