55 } 56 57 public static KlassPointerStamp klassNonNull() { 58 return KLASS_NON_NULL; 59 } 60 61 public static KlassPointerStamp klassAlwaysNull() { 62 return KLASS_ALWAYS_NULL; 63 } 64 65 private KlassPointerStamp(boolean nonNull, boolean alwaysNull) { 66 this(nonNull, alwaysNull, null); 67 } 68 69 private KlassPointerStamp(boolean nonNull, boolean alwaysNull, CompressEncoding encoding) { 70 super(nonNull, alwaysNull); 71 this.encoding = encoding; 72 } 73 74 @Override 75 protected AbstractPointerStamp copyWith(boolean newNonNull, boolean newAlwaysNull) { 76 return new KlassPointerStamp(newNonNull, newAlwaysNull, encoding); 77 } 78 79 @Override 80 public boolean isCompatible(Stamp otherStamp) { 81 if (this == otherStamp) { 82 return true; 83 } 84 if (otherStamp instanceof KlassPointerStamp) { 85 KlassPointerStamp other = (KlassPointerStamp) otherStamp; 86 return Objects.equals(this.encoding, other.encoding); 87 } 88 return false; 89 } 90 91 @Override 92 public boolean isCompatible(Constant constant) { 93 if (constant instanceof HotSpotMetaspaceConstant) { 94 return ((HotSpotMetaspaceConstant) constant).asResolvedJavaType() != null; | 55 } 56 57 public static KlassPointerStamp klassNonNull() { 58 return KLASS_NON_NULL; 59 } 60 61 public static KlassPointerStamp klassAlwaysNull() { 62 return KLASS_ALWAYS_NULL; 63 } 64 65 private KlassPointerStamp(boolean nonNull, boolean alwaysNull) { 66 this(nonNull, alwaysNull, null); 67 } 68 69 private KlassPointerStamp(boolean nonNull, boolean alwaysNull, CompressEncoding encoding) { 70 super(nonNull, alwaysNull); 71 this.encoding = encoding; 72 } 73 74 @Override 75 public void accept(Visitor v) { 76 super.accept(v); 77 v.visitLong(encoding.getBase()); 78 v.visitInt(encoding.getShift()); 79 } 80 81 @Override 82 protected AbstractPointerStamp copyWith(boolean newNonNull, boolean newAlwaysNull) { 83 return new KlassPointerStamp(newNonNull, newAlwaysNull, encoding); 84 } 85 86 @Override 87 public boolean isCompatible(Stamp otherStamp) { 88 if (this == otherStamp) { 89 return true; 90 } 91 if (otherStamp instanceof KlassPointerStamp) { 92 KlassPointerStamp other = (KlassPointerStamp) otherStamp; 93 return Objects.equals(this.encoding, other.encoding); 94 } 95 return false; 96 } 97 98 @Override 99 public boolean isCompatible(Constant constant) { 100 if (constant instanceof HotSpotMetaspaceConstant) { 101 return ((HotSpotMetaspaceConstant) constant).asResolvedJavaType() != null; |