23 */ |
23 */ |
24 |
24 |
25 package sun.jvm.hotspot.runtime; |
25 package sun.jvm.hotspot.runtime; |
26 |
26 |
27 import sun.jvm.hotspot.debugger.*; |
27 import sun.jvm.hotspot.debugger.*; |
|
28 import sun.jvm.hotspot.utilities.*; |
28 |
29 |
29 public class MonitorInfo { |
30 public class MonitorInfo { |
30 private OopHandle owner; |
31 private OopHandle owner; |
31 private BasicLock lock; |
32 private BasicLock lock; |
|
33 private OopHandle ownerKlass; |
|
34 private boolean eliminated; |
|
35 private boolean ownerIsScalarReplaced; |
32 |
36 |
33 public MonitorInfo(OopHandle owner, BasicLock lock) { |
37 public MonitorInfo(OopHandle owner, BasicLock lock, boolean eliminated, boolean ownerIsScalarReplaced) { |
34 this.owner = owner; |
38 if (!ownerIsScalarReplaced) { |
35 this.lock = lock; |
39 this.owner = owner; |
|
40 this.ownerKlass = null; |
|
41 } else { |
|
42 Assert.that(eliminated, "monitor should be eliminated for scalar replaced object"); |
|
43 this.owner = null; |
|
44 this.ownerKlass = owner; |
|
45 } |
|
46 this.eliminated = eliminated; |
|
47 this.ownerIsScalarReplaced = ownerIsScalarReplaced; |
36 } |
48 } |
37 |
49 |
38 public OopHandle owner() { return owner; } |
50 public OopHandle owner() { |
|
51 Assert.that(!ownerIsScalarReplaced, "should not be called for scalar replaced object"); |
|
52 return owner; |
|
53 } |
|
54 |
|
55 public OopHandle ownerKlass() { |
|
56 Assert.that(ownerIsScalarReplaced, "should not be called for not scalar replaced object"); |
|
57 return ownerKlass; |
|
58 } |
|
59 |
39 public BasicLock lock() { return lock; } |
60 public BasicLock lock() { return lock; } |
|
61 public boolean eliminated() { return eliminated; } |
|
62 public boolean ownerIsScalarReplaced() { return ownerIsScalarReplaced; } |
40 } |
63 } |