Imported Upstream version 5.14.0.78

Former-commit-id: 3494343bcc9ddb42b36b82dd9ae7b69e85e0229f
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2018-05-10 08:37:03 +00:00
parent 74b74abd9f
commit 19234507ba
1776 changed files with 67755 additions and 31107 deletions

View File

@@ -66,6 +66,7 @@ namespace Mono.Profiler.Log {
RuntimeJitHelper = 1 << 4,
MetaSynchronizationPoint = 0 << 4,
MetaAotId = 1 << 4,
}
// mono/profiler/log.h : TYPE_*

View File

@@ -189,5 +189,9 @@ namespace Mono.Profiler.Log {
public virtual void Visit (SynchronizationPointEvent ev)
{
}
public virtual void Visit (AotIdEvent ev)
{
}
}
}

View File

@@ -101,6 +101,8 @@ namespace Mono.Profiler.Log {
public string Name { get; internal set; }
public Guid ModuleVersionId { get; internal set; }
internal override void Accept (LogEventVisitor visitor)
{
visitor.Visit (this);
@@ -260,6 +262,8 @@ namespace Mono.Profiler.Log {
public long ObjectSize { get; internal set; }
public int Generation { get; internal set; }
public IReadOnlyList<HeapObjectReference> References { get; internal set; }
internal override void Accept (LogEventVisitor visitor)
@@ -326,7 +330,7 @@ namespace Mono.Profiler.Log {
public LogGCEvent Type { get; internal set; }
public byte Generation { get; internal set; }
public int Generation { get; internal set; }
internal override void Accept (LogEventVisitor visitor)
{
@@ -554,6 +558,7 @@ namespace Mono.Profiler.Log {
}
}
[Obsolete ("This event is no longer produced.")]
public sealed class UnmanagedBinaryEvent : LogEvent {
public long SegmentPointer { get; internal set; }
@@ -593,4 +598,14 @@ namespace Mono.Profiler.Log {
visitor.Visit (this);
}
}
public sealed class AotIdEvent : LogEvent {
public Guid AotId { get; internal set; }
internal override void Accept (LogEventVisitor visitor)
{
visitor.Visit (this);
}
}
}

View File

@@ -232,10 +232,18 @@ namespace Mono.Profiler.Log {
break;
case LogMetadataType.Image:
if (load) {
ev = new ImageLoadEvent {
var ile = new ImageLoadEvent {
ImagePointer = ReadPointer (),
Name = _reader.ReadCString (),
};
if (StreamHeader.FormatVersion >= 16) {
var guid = _reader.ReadCString ();
ile.ModuleVersionId = guid == string.Empty ? Guid.Empty : Guid.Parse (guid);
}
ev = ile;
} else if (unload) {
ev = new ImageUnloadEvent {
ImagePointer = ReadPointer (),
@@ -408,6 +416,7 @@ namespace Mono.Profiler.Log {
ClassPointer = StreamHeader.FormatVersion < 15 ? ReadPointer () : 0,
VTablePointer = StreamHeader.FormatVersion >= 15 ? ReadPointer () : 0,
ObjectSize = (long) _reader.ReadULeb128 (),
Generation = StreamHeader.FormatVersion >= 16 ? _reader.ReadByte () : 0,
};
var list = new HeapObjectEvent.HeapObjectReference [(int) _reader.ReadULeb128 ()];
@@ -597,6 +606,11 @@ namespace Mono.Profiler.Log {
Type = (LogSynchronizationPoint) _reader.ReadByte (),
};
break;
case LogEventType.MetaAotId:
ev = new AotIdEvent {
AotId = Guid.Parse (_reader.ReadCString ()),
};
break;
default:
throw new LogException ($"Invalid extended event type ({extType}).");
}

View File

@@ -9,7 +9,8 @@ namespace Mono.Profiler.Log {
public sealed class LogStreamHeader {
const int MinVersion = 13;
const int MaxVersion = 15;
const int MaxVersion = 16;
const int Id = 0x4d505a01;
@@ -21,6 +22,8 @@ namespace Mono.Profiler.Log {
public ulong StartupTime { get; }
public ulong TimestampStartupTime { get; }
public int TimerOverhead { get; }
public int Flags { get; }
@@ -50,6 +53,10 @@ namespace Mono.Profiler.Log {
PointerSize = reader.ReadByte ();
StartupTime = reader.ReadUInt64 ();
if (Version.Major >= 3)
TimestampStartupTime = reader.ReadUInt64 ();
TimerOverhead = reader.ReadInt32 ();
Flags = reader.ReadInt32 ();
ProcessId = reader.ReadInt32 ();