< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/type/AbstractObjectStamp.java

Print this page




  31 import jdk.vm.ci.meta.Constant;
  32 import jdk.vm.ci.meta.JavaConstant;
  33 import jdk.vm.ci.meta.JavaKind;
  34 import jdk.vm.ci.meta.MetaAccessProvider;
  35 import jdk.vm.ci.meta.ResolvedJavaType;
  36 
  37 /**
  38  * Type describing all pointers to Java objects.
  39  */
  40 public abstract class AbstractObjectStamp extends AbstractPointerStamp {
  41 
  42     private final ResolvedJavaType type;
  43     private final boolean exactType;
  44 
  45     protected AbstractObjectStamp(ResolvedJavaType type, boolean exactType, boolean nonNull, boolean alwaysNull) {
  46         super(nonNull, alwaysNull);
  47         this.type = type;
  48         this.exactType = exactType;
  49     }
  50 







  51     protected abstract AbstractObjectStamp copyWith(ResolvedJavaType newType, boolean newExactType, boolean newNonNull, boolean newAlwaysNull);
  52 
  53     @Override
  54     protected final AbstractPointerStamp copyWith(boolean newNonNull, boolean newAlwaysNull) {
  55         return copyWith(type, exactType, newNonNull, newAlwaysNull);
  56     }
  57 
  58     @Override
  59     public Stamp unrestricted() {
  60         return copyWith(null, false, false, false);
  61     }
  62 
  63     @Override
  64     public Stamp empty() {
  65         return copyWith(null, true, true, false);
  66     }
  67 
  68     @Override
  69     public Stamp constant(Constant c, MetaAccessProvider meta) {
  70         JavaConstant jc = (JavaConstant) c;




  31 import jdk.vm.ci.meta.Constant;
  32 import jdk.vm.ci.meta.JavaConstant;
  33 import jdk.vm.ci.meta.JavaKind;
  34 import jdk.vm.ci.meta.MetaAccessProvider;
  35 import jdk.vm.ci.meta.ResolvedJavaType;
  36 
  37 /**
  38  * Type describing all pointers to Java objects.
  39  */
  40 public abstract class AbstractObjectStamp extends AbstractPointerStamp {
  41 
  42     private final ResolvedJavaType type;
  43     private final boolean exactType;
  44 
  45     protected AbstractObjectStamp(ResolvedJavaType type, boolean exactType, boolean nonNull, boolean alwaysNull) {
  46         super(nonNull, alwaysNull);
  47         this.type = type;
  48         this.exactType = exactType;
  49     }
  50 
  51     @Override
  52     public void accept(Visitor v) {
  53         super.accept(v);
  54         v.visitObject(type);
  55         v.visitBoolean(exactType);
  56     }
  57 
  58     protected abstract AbstractObjectStamp copyWith(ResolvedJavaType newType, boolean newExactType, boolean newNonNull, boolean newAlwaysNull);
  59 
  60     @Override
  61     protected final AbstractPointerStamp copyWith(boolean newNonNull, boolean newAlwaysNull) {
  62         return copyWith(type, exactType, newNonNull, newAlwaysNull);
  63     }
  64 
  65     @Override
  66     public Stamp unrestricted() {
  67         return copyWith(null, false, false, false);
  68     }
  69 
  70     @Override
  71     public Stamp empty() {
  72         return copyWith(null, true, true, false);
  73     }
  74 
  75     @Override
  76     public Stamp constant(Constant c, MetaAccessProvider meta) {
  77         JavaConstant jc = (JavaConstant) c;


< prev index next >