mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8055008: Clean up code that saves the previous versions of redefined classes
Use scratch_class to find EMCP methods for breakpoints if the old methods are still running. Reviewed-by: dcubed, sspitsyn
This commit is contained in:
parent
07001d0332
commit
3c70d99eda
13 changed files with 340 additions and 369 deletions
|
@ -80,7 +80,8 @@ class Method : public Metadata {
|
|||
_caller_sensitive = 1 << 1,
|
||||
_force_inline = 1 << 2,
|
||||
_dont_inline = 1 << 3,
|
||||
_hidden = 1 << 4
|
||||
_hidden = 1 << 4,
|
||||
_running_emcp = 1 << 5
|
||||
};
|
||||
u1 _flags;
|
||||
|
||||
|
@ -688,6 +689,21 @@ class Method : public Metadata {
|
|||
void set_is_obsolete() { _access_flags.set_is_obsolete(); }
|
||||
bool is_deleted() const { return access_flags().is_deleted(); }
|
||||
void set_is_deleted() { _access_flags.set_is_deleted(); }
|
||||
|
||||
bool is_running_emcp() const {
|
||||
// EMCP methods are old but not obsolete or deleted. Equivalent
|
||||
// Modulo Constant Pool means the method is equivalent except
|
||||
// the constant pool and instructions that access the constant
|
||||
// pool might be different.
|
||||
// If a breakpoint is set in a redefined method, its EMCP methods that are
|
||||
// still running must have a breakpoint also.
|
||||
return (_flags & _running_emcp) != 0;
|
||||
}
|
||||
|
||||
void set_running_emcp(bool x) {
|
||||
_flags = x ? (_flags | _running_emcp) : (_flags & ~_running_emcp);
|
||||
}
|
||||
|
||||
bool on_stack() const { return access_flags().on_stack(); }
|
||||
void set_on_stack(const bool value);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue