public MidInstruction(OpcodeEnum opcode, CodeLocationTag codeLocation, SsaRegister regArg, SsaRegister regArg2) { Opcode = opcode; CodeLocation = codeLocation; RegArg = regArg; RegArg2 = regArg2; }
public MidInstruction(OpcodeEnum opcode, CodeLocationTag codeLocation, SsaRegister regArg, CfgOutboundEdge[] cfgEdgesArg) { Opcode = opcode; CodeLocation = codeLocation; RegArg = regArg; CfgEdgesArg = cfgEdgesArg; }
public AllocInstanceDelegateInstruction(CodeLocationTag codeLocation, TypeSpecTag type, HighSsaRegister dest, HighSsaRegister obj) : base(codeLocation) { m_type = type; m_dest = dest; m_object = obj; }
public PtrFieldInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, HighSsaRegister src, string field) : base(codeLocation) { m_dest = dest; m_src = src; m_field = field; }
public BindVirtualDelegateInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, HighSsaRegister obj, MethodSpecTag methodSpec) : base(codeLocation) { m_dest = dest; m_object = obj; m_methodSpec = methodSpec; }
public LoadValueFieldInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, HighSsaRegister src, string fieldName) : base(codeLocation) { m_dest = dest; m_src = src; m_fieldName = fieldName; }
public NumberConvertInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, HighSsaRegister src, bool checkOverflow) : base(codeLocation) { m_dest = dest; m_src = src; m_checkOverflow = checkOverflow; }
public GetStaticFieldAddrInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, TypeSpecTag staticType, string fieldName) : base(codeLocation) { m_dest = dest; m_staticType = staticType; m_fieldName = fieldName; }
public static HighRegion Read(TagRepository rpa, CatalogReader catalog, HighMethodBodyParseContext methodBody, CodeLocationTag baseLocation, bool haveDebugInfo, BinaryReader reader) { uint numCfgNodes = reader.ReadUInt32(); if (numCfgNodes == 0) throw new Exception("Region has no CFG nodes"); HighCfgNodeHandle[] cfgNodes = new HighCfgNodeHandle[numCfgNodes]; for (uint i = 0; i < numCfgNodes; i++) cfgNodes[i] = new HighCfgNodeHandle(); for (uint i = 0; i < numCfgNodes; i++) cfgNodes[i].Value = HighCfgNode.Read(rpa, catalog, methodBody, cfgNodes, baseLocation, haveDebugInfo, reader); RegionPhiResolver phiResolver = new RegionPhiResolver(cfgNodes); for (uint i = 0; i < numCfgNodes; i++) { foreach (HighPhi phi in cfgNodes[i].Value.Phis) phi.Resolve(phiResolver); } HighCfgNodeHandle entryNode = cfgNodes[0]; if (entryNode.Value.Phis.Length != 0) throw new RpaLoadException("Region entry node has phis"); return new HighRegion(entryNode); }
public AllocArrayInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, HighSsaRegister[] sizes, TypeSpecTag targetType) : base(codeLocation) { m_dest = dest; m_sizes = sizes; m_type = targetType; }
public static HighProtectedRegion Read(TagRepository rpa, CatalogReader catalog, HighMethodBodyParseContext methodBody, CodeLocationTag baseLocation, bool haveDebugInfo, BinaryReader reader) { HighProtectedRegion region; RegionTypeEnum regionType = (RegionTypeEnum)reader.ReadByte(); HighRegion tryRegion = HighRegion.Read(rpa, catalog, methodBody, baseLocation, haveDebugInfo, reader); switch (regionType) { case RegionTypeEnum.TryCatch: region = new HighTryCatchRegion(tryRegion); break; case RegionTypeEnum.TryFault: region = new HighTryFaultRegion(tryRegion); break; case RegionTypeEnum.TryFinally: region = new HighTryFinallyRegion(tryRegion); break; default: throw new Exception("Invalid protected region type"); } region.ReadHandlers(rpa, catalog, methodBody, baseLocation, haveDebugInfo, reader); return region; }
public LoadMulticastDelegateElementInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, HighSsaRegister delegateSrc, HighSsaRegister indexSrc) : base(codeLocation) { m_dest = dest; m_delegateSrc = delegateSrc; m_indexSrc = indexSrc; }
public GetArrayElementPtrInstruction(CodeLocationTag codeLocation, HighSsaRegister addrDestReg, HighSsaRegister arrayReg, HighSsaRegister[] indexes) : base(codeLocation) { m_addrDestReg = addrDestReg; m_arrayReg = arrayReg; m_indexes = indexes; }
public BranchRefNullInstruction(CodeLocationTag codeLocation, HighSsaRegister value, HighCfgNodeHandle isNullNode, HighCfgNodeHandle isNotNullNode) : base(codeLocation) { m_value = value; m_isNullNode = new HighCfgEdge(this, isNullNode); m_isNotNullNode = new HighCfgEdge(this, isNotNullNode); }
public CallRloStaticMethodInstruction(CodeLocationTag codeLocation, MethodHandle methodHandle, HighSsaRegister returnDest, HighSsaRegister[] parameters) { CodeLocation = codeLocation; m_methodHandle = methodHandle; m_returnDest = returnDest; m_parameters = parameters; }
public ConvertDelegateToMulticastInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, HighSsaRegister src, TypeSpecMulticastDelegateTag mdgSpec) : base(codeLocation) { m_dest = dest; m_src = src; m_mdType = mdgSpec; }
public DynamicCastInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, HighSsaRegister src, TypeSpecTag type) : base(codeLocation) { m_dest = dest; m_src = src; m_type = type; }
public CfgOutboundEdge(CodeLocationTag codeLocation, CfgNode successorNode, CfgOutboundEdgePrototype outboundEdgeProto) { CodeLocation = codeLocation; SurvivingRegs = outboundEdgeProto.OutboundRegs; OutputValueTypes = outboundEdgeProto.OutboundTypes; SuccessorNode = successorNode; }
public LoadValueRloFieldInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, HighSsaRegister src, uint fieldIndex) : base(codeLocation) { m_dest = dest; m_src = src; m_fieldIndex = fieldIndex; }
public CallRloInterfaceMethodInstruction(CodeLocationTag codeLocation, uint vtableSlotIndex, HighSsaRegister returnDest, HighSsaRegister instanceSrc, HighSsaRegister[] parameters) { CodeLocation = codeLocation; m_vtableSlotIndex = vtableSlotIndex; m_returnDest = returnDest; m_instanceSrc = instanceSrc; m_parameters = parameters; }
public CallRloInstanceMethodInstruction(CodeLocationTag codeLocation, MethodHandle methodHandle, HighSsaRegister returnDest, HighSsaRegister instanceSrc, HighSsaRegister[] parameters) { this.CodeLocation = codeLocation; m_methodHandle = methodHandle; m_instanceSrc = instanceSrc; m_parameters = parameters; m_returnDest = returnDest; }
public CallInstanceMethodInstruction(CodeLocationTag codeLocation, HighSsaRegister returnDestReg, MethodSpecTag methodSpec, HighSsaRegister instanceReg, HighSsaRegister[] parameters) : base(codeLocation) { m_returnDestReg = returnDestReg; m_methodSpec = methodSpec; m_instanceReg = instanceReg; m_parameters = parameters; }
public GetRloFieldInfoInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, TypeSpecTag type, uint fieldIndex, bool isStatic) : base(codeLocation) { m_dest = dest; m_type = type; m_fieldIndex = fieldIndex; m_isStatic = isStatic; }
public RefFieldInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, HighSsaRegister src, string field, TypeSpecTag type) : base(codeLocation) { m_dest = dest; m_src = src; m_field = field; m_type = type; }
public GetFieldInfoInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, TypeSpecTag type, string fieldName, bool isStatic) : base(codeLocation) { m_dest = dest; m_type = type; m_fieldName = fieldName; m_isStatic = isStatic; }
public CallRloVirtualMethodInstruction(CodeLocationTag codeLocation, uint vtableSlotIndex, HighSsaRegister returnDest, HighSsaRegister instanceSrc, HighSsaRegister[] parameters) : base(codeLocation) { m_vtableSlotIndex = vtableSlotIndex; m_returnDest = returnDest; m_instanceSrc = instanceSrc; m_parameters = parameters; }
public BranchCompareRefsInstruction(CodeLocationTag codeLocation, HighSsaRegister regA, HighSsaRegister regB, HighCfgNodeHandle equalNode, HighCfgNodeHandle notEqualNode) : base(codeLocation) { m_regA = regA; m_regB = regB; m_equalNode = new HighCfgEdge(this, equalNode); m_notEqualNode = new HighCfgEdge(this, notEqualNode); }
public UnaryArithInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, NumberUnaryArithOp arithOp, NumberArithType arithType, HighSsaRegister src) : base(codeLocation) { m_dest = dest; m_arithOp = arithOp; m_arithType = arithType; m_src = src; }
public RloConvertNumberInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, HighSsaRegister src, NumConversionType conversionType, uint destPrecision, uint sourcePrecision) : base(codeLocation) { m_conversionType = conversionType; m_dest = dest; m_src = src; m_destPrecision = destPrecision; m_sourcePrecision = sourcePrecision; }
public override void ReadHeader(TagRepository rpa, CatalogReader catalog, HighMethodBodyParseContext methodBody, HighCfgNodeHandle[] cfgNodes, List<HighSsaRegister> ssaRegisters, CodeLocationTag baseLocation, bool haveDebugInfo, BinaryReader reader) { m_arithOp = (NumberUnaryArithOp)reader.ReadByte(); if (m_arithOp < 0 || m_arithOp >= NumberUnaryArithOp.NumHighUnaryArithOpTypes) throw new Exception("Invalid unary arithmetic op"); m_arithType = (NumberArithType)reader.ReadByte(); if (m_arithType < 0 || m_arithType >= NumberArithType.NumHighArithTypes) throw new Exception("Invalid arith type"); }