28 import org.graalvm.compiler.core.common.LIRKind; 29 import org.graalvm.compiler.core.common.spi.LIRKindTool; 30 import org.graalvm.compiler.core.common.type.AbstractObjectStamp; 31 import org.graalvm.compiler.core.common.type.ObjectStamp; 32 import org.graalvm.compiler.core.common.type.Stamp; 33 34 import jdk.vm.ci.meta.Constant; 35 import jdk.vm.ci.meta.MemoryAccessProvider; 36 import jdk.vm.ci.meta.ResolvedJavaType; 37 38 public abstract class NarrowOopStamp extends AbstractObjectStamp { 39 40 private final CompressEncoding encoding; 41 42 protected NarrowOopStamp(ResolvedJavaType type, boolean exactType, boolean nonNull, boolean alwaysNull, CompressEncoding encoding) { 43 super(type, exactType, nonNull, alwaysNull); 44 this.encoding = encoding; 45 } 46 47 @Override 48 protected abstract AbstractObjectStamp copyWith(ResolvedJavaType type, boolean exactType, boolean nonNull, boolean alwaysNull); 49 50 public Stamp uncompressed() { 51 return new ObjectStamp(type(), isExactType(), nonNull(), alwaysNull()); 52 } 53 54 public CompressEncoding getEncoding() { 55 return encoding; 56 } 57 58 @Override 59 public LIRKind getLIRKind(LIRKindTool tool) { 60 return tool.getNarrowOopKind(); 61 } 62 63 @Override 64 public String toString() { 65 StringBuilder str = new StringBuilder(); 66 str.append('n'); 67 appendString(str); | 28 import org.graalvm.compiler.core.common.LIRKind; 29 import org.graalvm.compiler.core.common.spi.LIRKindTool; 30 import org.graalvm.compiler.core.common.type.AbstractObjectStamp; 31 import org.graalvm.compiler.core.common.type.ObjectStamp; 32 import org.graalvm.compiler.core.common.type.Stamp; 33 34 import jdk.vm.ci.meta.Constant; 35 import jdk.vm.ci.meta.MemoryAccessProvider; 36 import jdk.vm.ci.meta.ResolvedJavaType; 37 38 public abstract class NarrowOopStamp extends AbstractObjectStamp { 39 40 private final CompressEncoding encoding; 41 42 protected NarrowOopStamp(ResolvedJavaType type, boolean exactType, boolean nonNull, boolean alwaysNull, CompressEncoding encoding) { 43 super(type, exactType, nonNull, alwaysNull); 44 this.encoding = encoding; 45 } 46 47 @Override 48 public void accept(Visitor v) { 49 super.accept(v); 50 v.visitLong(encoding.getBase()); 51 v.visitInt(encoding.getShift()); 52 } 53 54 @Override 55 protected abstract AbstractObjectStamp copyWith(ResolvedJavaType type, boolean exactType, boolean nonNull, boolean alwaysNull); 56 57 public Stamp uncompressed() { 58 return new ObjectStamp(type(), isExactType(), nonNull(), alwaysNull()); 59 } 60 61 public CompressEncoding getEncoding() { 62 return encoding; 63 } 64 65 @Override 66 public LIRKind getLIRKind(LIRKindTool tool) { 67 return tool.getNarrowOopKind(); 68 } 69 70 @Override 71 public String toString() { 72 StringBuilder str = new StringBuilder(); 73 str.append('n'); 74 appendString(str); |