public VariableInfo(Architecture arch, TargetBinaryReader reader) { Index = reader.ReadLeb128 (); Offset = reader.ReadSLeb128 (); Size = reader.ReadLeb128 (); BeginLiveness = reader.ReadLeb128 (); EndLiveness = reader.ReadLeb128 (); MonoType = new TargetAddress ( reader.TargetMemoryInfo.AddressDomain, reader.ReadAddress ()); Mode = (AddressMode) (Index & AddressModeFlags); Index = (int) ((long) Index & ~AddressModeFlags); Report.Debug (DebugFlags.JitSymtab, "VARIABLE INFO: {0} {1} {2} {3} {4}", Mode, Index, Offset, Size, arch); if ((Mode == AddressMode.Register) || (Mode == AddressMode.RegOffset)) Index = arch.RegisterMap [Index]; Report.Debug (DebugFlags.JitSymtab, "VARIABLE INFO #1: {0}", Index); HasLivenessInfo = (BeginLiveness != 0) && (EndLiveness != 0); }
protected TargetAddress ReadAddress(TargetBinaryReader reader, AddressDomain domain) { long address = reader.ReadAddress (); if (address != 0) return new TargetAddress (domain, address); else return TargetAddress.Null; }