74
75 // Flags
76 bool rethrow_exception() const { return (_flags & PCDESC_rethrow_exception) != 0; }
77 void set_rethrow_exception(bool z) { set_flag(PCDESC_rethrow_exception, z); }
78 bool should_reexecute() const { return (_flags & PCDESC_reexecute) != 0; }
79 void set_should_reexecute(bool z) { set_flag(PCDESC_reexecute, z); }
80
81 // Does pd refer to the same information as pd?
82 bool is_same_info(const PcDesc* pd) {
83 return _scope_decode_offset == pd->_scope_decode_offset &&
84 _obj_decode_offset == pd->_obj_decode_offset &&
85 _flags == pd->_flags;
86 }
87
88 bool is_method_handle_invoke() const { return (_flags & PCDESC_is_method_handle_invoke) != 0; }
89 void set_is_method_handle_invoke(bool z) { set_flag(PCDESC_is_method_handle_invoke, z); }
90
91 bool return_oop() const { return (_flags & PCDESC_return_oop) != 0; }
92 void set_return_oop(bool z) { set_flag(PCDESC_return_oop, z); }
93
94 bool not_global_escape_in_scope() const { return (_flags & PCDESC_not_global_escape_in_scope) != 0; }
95 void set_not_global_escape_in_scope(bool z) { set_flag(PCDESC_not_global_escape_in_scope, z); }
96
97 bool arg_escape() const { return (_flags & PCDESC_arg_escape) != 0; }
98 void set_arg_escape(bool z) { set_flag(PCDESC_arg_escape, z); }
99
100 // Returns the real pc
101 address real_pc(const CompiledMethod* code) const;
102
103 void print(CompiledMethod* code) { print_on(tty, code); }
104 void print_on(outputStream* st, CompiledMethod* code);
105 bool verify(CompiledMethod* code);
106 };
107
108 #endif // SHARE_CODE_PCDESC_HPP
|
74
75 // Flags
76 bool rethrow_exception() const { return (_flags & PCDESC_rethrow_exception) != 0; }
77 void set_rethrow_exception(bool z) { set_flag(PCDESC_rethrow_exception, z); }
78 bool should_reexecute() const { return (_flags & PCDESC_reexecute) != 0; }
79 void set_should_reexecute(bool z) { set_flag(PCDESC_reexecute, z); }
80
81 // Does pd refer to the same information as pd?
82 bool is_same_info(const PcDesc* pd) {
83 return _scope_decode_offset == pd->_scope_decode_offset &&
84 _obj_decode_offset == pd->_obj_decode_offset &&
85 _flags == pd->_flags;
86 }
87
88 bool is_method_handle_invoke() const { return (_flags & PCDESC_is_method_handle_invoke) != 0; }
89 void set_is_method_handle_invoke(bool z) { set_flag(PCDESC_is_method_handle_invoke, z); }
90
91 bool return_oop() const { return (_flags & PCDESC_return_oop) != 0; }
92 void set_return_oop(bool z) { set_flag(PCDESC_return_oop, z); }
93
94 // Indicates if there are objects in scope that, based on escape analysis, are local to the
95 // compiled method or local to the current thread.
96 bool not_global_escape_in_scope() const { return (_flags & PCDESC_not_global_escape_in_scope) != 0; }
97 void set_not_global_escape_in_scope(bool z) { set_flag(PCDESC_not_global_escape_in_scope, z); }
98
99 // Indicates if this pc descriptor is at a call site where objects that do not escape the
100 // current thread are passed as arguments.
101 bool arg_escape() const { return (_flags & PCDESC_arg_escape) != 0; }
102 void set_arg_escape(bool z) { set_flag(PCDESC_arg_escape, z); }
103
104 // Returns the real pc
105 address real_pc(const CompiledMethod* code) const;
106
107 void print(CompiledMethod* code) { print_on(tty, code); }
108 void print_on(outputStream* st, CompiledMethod* code);
109 bool verify(CompiledMethod* code);
110 };
111
112 #endif // SHARE_CODE_PCDESC_HPP
|