internal override void Generate(CodeGenContext context, CodeEmitter ilgen) { base.Generate(context, ilgen); if (typeType != null) { ilgen.Emit(OpCodes.Isinst, typeType); } else { if (typeWrapper.IsGhost || typeWrapper.IsGhostArray) { ilgen.Emit(OpCodes.Dup); typeWrapper.EmitInstanceOf(ilgen); CodeEmitterLabel endLabel = ilgen.DefineLabel(); ilgen.EmitBrtrue(endLabel); ilgen.Emit(OpCodes.Pop); ilgen.Emit(OpCodes.Ldnull); ilgen.MarkLabel(endLabel); } else { ilgen.Emit(OpCodes.Isinst, typeWrapper.TypeAsTBD); } } }
internal override void Emit(CodeEmitter ilgen, CodeEmitterLabel label) { ilgen.EmitBrtrue(label); }