|
//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.Runtime.Serialization
{
using System.Diagnostics;
using System.Security;
#if USE_REFEMIT
public static class SerializationTrace
#else
static class SerializationTrace
#endif
{
[Fx.Tag.SecurityNote(Critical = "Static fields are marked SecurityCritical or readonly to prevent"
+ " data from being modified or leaked to other components in appdomain.")]
[SecurityCritical]
static TraceSource codeGen;
internal static SourceSwitch CodeGenerationSwitch
{
get
{
return CodeGenerationTraceSource.Switch;
}
}
internal static void WriteInstruction(int lineNumber, string instruction)
{
CodeGenerationTraceSource.TraceInformation("{0:00000}: {1}", lineNumber, instruction);
}
#if USE_REFEMIT
public static void TraceInstruction(string instruction)
#else
internal static void TraceInstruction(string instruction)
#endif
{
CodeGenerationTraceSource.TraceEvent(TraceEventType.Verbose, 0, instruction);
}
static TraceSource CodeGenerationTraceSource
{
[Fx.Tag.SecurityNote(Critical = "Fetches the critical codeGen field.",
Safe = "Get-only properties only needs to be protected for write; initialized in getter if null.")]
[SecuritySafeCritical]
get
{
if (codeGen == null)
codeGen = new TraceSource("System.Runtime.Serialization.CodeGeneration");
return codeGen;
}
}
}
}
|