290 localA = load(localA);
291 }
292 }
293 if (isConstantValue(b)) {
294 Constant c = asConstant(b);
295 if (HotSpotCompressedNullConstant.COMPRESSED_NULL.equals(c)) {
296 localB = SPARC.g0.asValue(LIRKind.value(WORD));
297 } else if (c instanceof HotSpotObjectConstant) {
298 localB = load(localB);
299 }
300 }
301 return super.emitCompare(cmpKind, localA, localB);
302 }
303
304 @Override
305 public Value emitCompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
306 LIRKind inputKind = pointer.getValueKind(LIRKind.class);
307 assert inputKind.getPlatformKind() == XWORD : inputKind;
308 if (inputKind.isReference(0)) {
309 // oop
310 Variable result = newVariable(LIRKind.reference(WORD));
311 append(new SPARCHotSpotMove.CompressPointer(result, asAllocatable(pointer), getProviders().getRegisters().getHeapBaseRegister().asValue(), encoding, nonNull));
312 return result;
313 } else {
314 // metaspace pointer
315 Variable result = newVariable(LIRKind.value(WORD));
316 AllocatableValue base = Value.ILLEGAL;
317 if (encoding.hasBase()) {
318 base = emitLoadConstant(LIRKind.value(XWORD), JavaConstant.forLong(encoding.getBase()));
319 }
320 append(new SPARCHotSpotMove.CompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
321 return result;
322 }
323 }
324
325 @Override
326 public Value emitUncompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
327 LIRKind inputKind = pointer.getValueKind(LIRKind.class);
328 assert inputKind.getPlatformKind() == WORD;
329 if (inputKind.isReference(0)) {
330 // oop
|
290 localA = load(localA);
291 }
292 }
293 if (isConstantValue(b)) {
294 Constant c = asConstant(b);
295 if (HotSpotCompressedNullConstant.COMPRESSED_NULL.equals(c)) {
296 localB = SPARC.g0.asValue(LIRKind.value(WORD));
297 } else if (c instanceof HotSpotObjectConstant) {
298 localB = load(localB);
299 }
300 }
301 return super.emitCompare(cmpKind, localA, localB);
302 }
303
304 @Override
305 public Value emitCompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
306 LIRKind inputKind = pointer.getValueKind(LIRKind.class);
307 assert inputKind.getPlatformKind() == XWORD : inputKind;
308 if (inputKind.isReference(0)) {
309 // oop
310 Variable result = newVariable(LIRKind.compressedReference(WORD));
311 append(new SPARCHotSpotMove.CompressPointer(result, asAllocatable(pointer), getProviders().getRegisters().getHeapBaseRegister().asValue(), encoding, nonNull));
312 return result;
313 } else {
314 // metaspace pointer
315 Variable result = newVariable(LIRKind.value(WORD));
316 AllocatableValue base = Value.ILLEGAL;
317 if (encoding.hasBase()) {
318 base = emitLoadConstant(LIRKind.value(XWORD), JavaConstant.forLong(encoding.getBase()));
319 }
320 append(new SPARCHotSpotMove.CompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
321 return result;
322 }
323 }
324
325 @Override
326 public Value emitUncompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
327 LIRKind inputKind = pointer.getValueKind(LIRKind.class);
328 assert inputKind.getPlatformKind() == WORD;
329 if (inputKind.isReference(0)) {
330 // oop
|