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);
}