private void emitImplicitConversion(BasicType ptype,Class<?> pclass,Object arg){
  assert (basicType(pclass) == ptype);
  if (pclass == ptype.basicTypeClass() && ptype != L_TYPE)   return;
switch (ptype) {
case L_TYPE:
    if (VerifyType.isNullConversion(Object.class,pclass,false)) {
      if (PROFILE_LEVEL > 0)       emitReferenceCast(Object.class,arg);
      return;
    }
  emitReferenceCast(pclass,arg);
return;
case I_TYPE:
if (!VerifyType.isNullConversion(int.class,pclass,false)) emitPrimCast(ptype.basicTypeWrapper(),Wrapper.forPrimitiveType(pclass));
return;
}
throw newInternalError("bad implicit conversion: tc=" + ptype + ": "+ pclass);
}

private void emitImplicitConversion ( BasicType ptype , Class < ? > pclass , Object arg ) { assert ( basicType ( pclass ) == ptype ) ; if ( pclass == ptype . basicTypeClass ( ) && ptype != L_TYPE ) return ; switch ( ptype ) { case L_TYPE : if ( VerifyType . isNullConversion ( Object . class , pclass , false ) ) { if ( PROFILE_LEVEL > 0 ) emitReferenceCast ( Object . class , arg ) ; return ; } emitReferenceCast ( pclass , arg ) ; return ; case I_TYPE : if ( ! VerifyType . isNullConversion ( int . class , pclass , false ) ) emitPrimCast ( ptype . basicTypeWrapper ( ) , Wrapper . forPrimitiveType ( pclass ) ) ; return ; } throw newInternalError ( "bad implicit conversion: tc=" + ptype + ": " + pclass ) ; }
emit an implicit conversion for an argument which must be of the given pclass . this is usually a no - op , except when pclass is a subword type or a reference other than object or an interface .
