OPT_TypeOperand type) { VM_Type t = type.getVMType(); if (VM.BuildForIA32 && !MM_Interface.MOVES_TIBS && VM.runningVM && t != null && t.isResolved()) { Address addr = VM_Magic.objectAsAddress(t.getTypeInformationBlock()); return new OPT_AddressConstantOperand(addr); } else if (!t.isResolved()) { OPT_RegisterOperand res = ir.regpool.makeTemp(VM_TypeReference.JavaLangObjectArray); s.insertBack(Unary.create(GET_CLASS_TIB, res, type)); return res.copyD2U(); } else { return new OPT_TIBConstantOperand(t); }
OPT_Operand obj, OPT_Operand guard) { if (obj.isObjectConstant()) {  try { VM_Type type = obj.getType().resolve(); return new OPT_TIBConstantOperand(type); } catch(NoClassDefFoundError e) { if (VM.runningVM) throw e;   } } OPT_RegisterOperand res = ir.regpool.makeTemp(VM_TypeReference.JavaLangObjectArray); OPT_Instruction s2 = GuardedUnary.create(GET_OBJ_TIB, res, obj, guard); s.insertBack(s2); return res.copyD2U();
  static OPT_Operand getTIB (OPT_Instruction s, OPT_IR ir,                              OPT_TypeOperand type) {    VM_Type t = type.getVMType();    if (VM.BuildForIA32 && !MM_Interface.MOVES_TIBS &&        VM.runningVM && t != null && t.isResolved()) {      Address addr = VM_Magic.objectAsAddress(t.getTypeInformationBlock());      return new OPT_AddressConstantOperand(addr);    } else if (!t.isResolved()) {      OPT_RegisterOperand res =         ir.regpool.makeTemp(VM_TypeReference.JavaLangObjectArray);      s.insertBack(Unary.create(GET_CLASS_TIB, res, type));      return res.copyD2U();    } else {      return new OPT_TIBConstantOperand(t);          }  }