public void SanityCheck(MjoScriptRepresentation representation) { Debug.Assert(Opcode != null); switch (representation) { case MjoScriptRepresentation.InstructionList: Debug.Assert(Block == null); Debug.Assert(JumpTarget == null); Debug.Assert(SwitchTargets == null); Debug.Assert(StackState == null); Debug.Assert(Offset != null); Debug.Assert(Size != null && Size != 0); Debug.Assert(IsJump ^ JumpOffset == null); Debug.Assert(IsSwitch ^ SwitchOffsets == null); break; case MjoScriptRepresentation.ControlFlowGraph: Debug.Assert(Offset == null); Debug.Assert(Size == null && Size != 0); Debug.Assert(JumpOffset == null); Debug.Assert(SwitchOffsets == null); Debug.Assert(Block != null); Debug.Assert(IsJump ^ JumpTarget == null); Debug.Assert(IsSwitch ^ SwitchTargets == null); break; } }
public void SanityCheck(MjoScriptRepresentation representation) { Debug.Assert(Opcode != null); switch (representation) { case MjoScriptRepresentation.InstructionList: Debug.Assert(Block == null); Debug.Assert(JumpTarget == null); Debug.Assert(SwitchTargets == null); Debug.Assert(BeforeValues == null); Debug.Assert(PoppedValues == null); Debug.Assert(PushedValues == null); Debug.Assert(Offset != null); Debug.Assert(Size != null && Size != 0); Debug.Assert(IsJump ^ JumpOffset == null); Debug.Assert(IsSwitch ^ SwitchOffsets == null); break; case MjoScriptRepresentation.ControlFlowGraph: Debug.Assert(Offset == null); Debug.Assert(Size == null && Size != 0); Debug.Assert(JumpOffset == null); Debug.Assert(SwitchOffsets == null); Debug.Assert(BeforeValues == null); Debug.Assert(PoppedValues == null); Debug.Assert(PushedValues == null); Debug.Assert(Block != null); Debug.Assert(IsJump ^ JumpTarget == null); Debug.Assert(IsSwitch ^ SwitchTargets == null); break; case MjoScriptRepresentation.SsaGraph: Debug.Assert(Offset == null); Debug.Assert(Size == null && Size != 0); Debug.Assert(JumpOffset == null); Debug.Assert(SwitchOffsets == null); Debug.Assert(BeforeValues != null); Debug.Assert(PoppedValues != null); Debug.Assert(PushedValues != null); Debug.Assert(PushedValues.All(val => val.Producer == this)); Debug.Assert(Block != null); Debug.Assert(IsJump ^ JumpTarget == null); Debug.Assert(IsSwitch ^ SwitchTargets == null); break; } }
public void SanityCheck(MjoScriptRepresentation representation) { switch (representation) { case MjoScriptRepresentation.InstructionList: Debug.Fail("Blocks shouldn't exist in instruction list representation"); break; case MjoScriptRepresentation.ControlFlowGraph: Debug.Assert(StartState == null); Debug.Assert(EndState == null); Debug.Assert(PhiNodes == null); break; case MjoScriptRepresentation.SsaGraph: Debug.Assert(StartState != null); Debug.Assert(EndState != null); Debug.Assert(PhiNodes != null); break; } }
public void SanityCheck(MjoScriptRepresentation representation) { switch (representation) { case MjoScriptRepresentation.InstructionList: Debug.Fail("Functions shouldn't exist in instruction list representation"); break; case MjoScriptRepresentation.ControlFlowGraph: Debug.Assert(ParameterTypes != null); Debug.Assert(LocalTypes != null); break; case MjoScriptRepresentation.SsaGraph: Debug.Assert(ParameterTypes != null); Debug.Assert(LocalTypes != null); break; } foreach (var block in Blocks) { block.SanityCheck(representation); } }