Files
UnrealEngineUWP/Engine/Source/Developer/ProfilerClient/Private/ProfilerClientManager.cpp

1060 lines
34 KiB
C++
Raw Normal View History

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
/*=============================================================================
ProfilerClientModule.cpp: Implements the FProfilerClientModule class.
=============================================================================*/
#include "ProfilerClientPrivatePCH.h"
#include "ISessionInstanceInfo.h"
#include "SecureHash.h"
#include "StatsData.h"
#include "StatsFile.h"
DEFINE_LOG_CATEGORY_STATIC( LogProfilerClient, Log, All );
DECLARE_CYCLE_STAT( TEXT("HandleDataReceived"), STAT_PC_HandleDataReceived, STATGROUP_Profiler );
DECLARE_CYCLE_STAT( TEXT("ReadStatMessages"), STAT_PC_ReadStatMessages, STATGROUP_Profiler );
DECLARE_CYCLE_STAT( TEXT("AddStatMessages"), STAT_PC_AddStatMessages, STATGROUP_Profiler );
DECLARE_CYCLE_STAT( TEXT("GenerateDataFrame"), STAT_PC_GenerateDataFrame, STATGROUP_Profiler );
DECLARE_CYCLE_STAT( TEXT("AddStatFName"), STAT_PC_AddStatFName, STATGROUP_Profiler );
DECLARE_CYCLE_STAT( TEXT("AddGroupFName"), STAT_PC_AddGroupFName, STATGROUP_Profiler );
DECLARE_CYCLE_STAT( TEXT("GenerateCycleGraph"), STAT_PC_GenerateCycleGraph, STATGROUP_Profiler );
DECLARE_CYCLE_STAT( TEXT("GenerateAccumulator"),STAT_PC_GenerateAccumulator, STATGROUP_Profiler );
DECLARE_CYCLE_STAT( TEXT("FindOrAddStat"), STAT_PC_FindOrAddStat, STATGROUP_Profiler );
DECLARE_CYCLE_STAT( TEXT("FindOrAddThread"), STAT_PC_FindOrAddThread, STATGROUP_Profiler );
/* FProfilerClientManager structors
*****************************************************************************/
FProfilerClientManager::FProfilerClientManager( const IMessageBusRef& InMessageBus )
{
#if STATS
MessageBus = InMessageBus;
MessageEndpoint = FMessageEndpoint::Builder("FProfilerClientModule", InMessageBus)
.Handling<FProfilerServiceAuthorize>(this, &FProfilerClientManager::HandleServiceAuthorizeMessage)
.Handling<FProfilerServiceData2>(this, &FProfilerClientManager::HandleProfilerServiceData2Message)
.Handling<FProfilerServicePreviewAck>(this, &FProfilerClientManager::HandleServicePreviewAckMessage)
.Handling<FProfilerServiceFileChunk>(this, &FProfilerClientManager::HandleServiceFileChunk)
.Handling<FProfilerServicePing>(this, &FProfilerClientManager::HandleServicePingMessage);
if (MessageEndpoint.IsValid())
{
OnShutdownMessageBusDelegateHandle = InMessageBus->OnShutdown().AddRaw( this, &FProfilerClientManager::HandleMessageBusShutdown );
MessageEndpoint->Subscribe<FProfilerServicePing>();
}
TickDelegate = FTickerDelegate::CreateRaw(this, &FProfilerClientManager::HandleTicker);
MessageDelegate = FTickerDelegate::CreateRaw(this, &FProfilerClientManager::HandleMessagesTicker);
LastPingTime = FDateTime::Now();
RetryTime = 5.f;
LoadConnection = nullptr;
MessageDelegateHandle = FTicker::GetCoreTicker().AddTicker(MessageDelegate, 0.1f);
#endif
}
FProfilerClientManager::~FProfilerClientManager()
{
#if STATS
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
Shutdown();
Unsubscribe();
if (MessageBus.IsValid())
{
MessageBus->OnShutdown().Remove( OnShutdownMessageBusDelegateHandle );
}
LoadConnection = nullptr;
#endif
}
/* IProfilerClient interface
*****************************************************************************/
void FProfilerClientManager::Subscribe( const FGuid& Session )
{
#if STATS
FGuid OldSessionId = ActiveSessionId;
PendingSessionId = Session;
if (MessageEndpoint.IsValid())
{
if (OldSessionId.IsValid())
{
TArray<FGuid> Instances;
Connections.GenerateKeyArray(Instances);
for (int32 i = 0; i < Instances.Num(); ++i)
{
MessageEndpoint->Publish(new FProfilerServiceUnsubscribe(OldSessionId, Instances[i]), EMessageScope::Network);
// fire the disconnection delegate
ProfilerClientDisconnectedDelegate.Broadcast(ActiveSessionId, Instances[i]);
}
ActiveSessionId.Invalidate();
}
ActiveSessionId = PendingSessionId;
}
Connections.Reset();
UE_LOG( LogProfilerClient, Log, TEXT( "Subscribe Session: %s" ), *Session.ToString() );
#endif
}
void FProfilerClientManager::Track( const FGuid& Instance )
{
#if STATS
if (MessageEndpoint.IsValid() && ActiveSessionId.IsValid() && !PendingInstances.Contains(Instance))
{
PendingInstances.Add(Instance);
MessageEndpoint->Publish(new FProfilerServiceSubscribe(ActiveSessionId, Instance), EMessageScope::Network);
RetryTime = 5.f;
TickDelegateHandle = FTicker::GetCoreTicker().AddTicker(TickDelegate, RetryTime);
UE_LOG( LogProfilerClient, Verbose, TEXT( "Track Session: %s, Instance: %s" ), *ActiveSessionId.ToString(), *Instance.ToString() );
}
#endif
}
void FProfilerClientManager::Untrack( const FGuid& Instance )
{
#if STATS
if (MessageEndpoint.IsValid() && ActiveSessionId.IsValid())
{
MessageEndpoint->Publish(new FProfilerServiceUnsubscribe(ActiveSessionId, Instance), EMessageScope::Network);
Connections.Remove(Instance);
// fire the disconnection delegate
ProfilerClientDisconnectedDelegate.Broadcast(ActiveSessionId, Instance);
UE_LOG( LogProfilerClient, Verbose, TEXT( "Untrack Session: %s, Instance: %s" ), *ActiveSessionId.ToString(), *Instance.ToString() );
}
#endif
}
void FProfilerClientManager::Unsubscribe()
{
#if STATS
PendingSessionId.Invalidate();
Subscribe(PendingSessionId);
#endif
}
void FProfilerClientManager::SetCaptureState( const bool bRequestedCaptureState, const FGuid& InstanceId /*= FGuid()*/ )
{
#if STATS
if (MessageEndpoint.IsValid() && ActiveSessionId.IsValid())
{
if( !InstanceId.IsValid() )
{
TArray<FMessageAddress> Instances;
for (auto It = Connections.CreateConstIterator(); It; ++It)
{
Instances.Add( It.Value().ProfilerServiceAddress );
}
MessageEndpoint->Send(new FProfilerServiceCapture(bRequestedCaptureState), Instances);
UE_LOG( LogProfilerClient, Verbose, TEXT( "SetCaptureState Session: %s, Instance: %s, State: %i" ), *ActiveSessionId.ToString(), *InstanceId.ToString(), (int32)bRequestedCaptureState );
}
else
{
const FMessageAddress* MessageAddress = &Connections.Find(InstanceId)->ProfilerServiceAddress;
if( MessageAddress )
{
MessageEndpoint->Send(new FProfilerServiceCapture(bRequestedCaptureState), *MessageAddress);
}
UE_LOG( LogProfilerClient, Verbose, TEXT( "SetCaptureState Session: %s, Instance: %s, State: %i" ), *ActiveSessionId.ToString(), *InstanceId.ToString(), (int32)bRequestedCaptureState );
}
}
#endif
}
void FProfilerClientManager::SetPreviewState( const bool bRequestedPreviewState, const FGuid& InstanceId /*= FGuid()*/ )
{
#if STATS
if (MessageEndpoint.IsValid() && ActiveSessionId.IsValid())
{
if( !InstanceId.IsValid() )
{
TArray<FMessageAddress> Instances;
for (auto It = Connections.CreateConstIterator(); It; ++It)
{
Instances.Add( It.Value().ProfilerServiceAddress );
}
MessageEndpoint->Send(new FProfilerServicePreview(bRequestedPreviewState), Instances);
UE_LOG( LogProfilerClient, Verbose, TEXT( "SetPreviewState Session: %s, Instance: %s, State: %i" ), *ActiveSessionId.ToString(), *InstanceId.ToString(), (int32)bRequestedPreviewState );
}
else
{
const FMessageAddress* MessageAddress = &Connections.Find(InstanceId)->ProfilerServiceAddress;
if( MessageAddress )
{
MessageEndpoint->Send(new FProfilerServicePreview(bRequestedPreviewState), *MessageAddress);
}
UE_LOG( LogProfilerClient, Verbose, TEXT( "SetPreviewState Session: %s, Instance: %s, State: %i" ), *ActiveSessionId.ToString(), *InstanceId.ToString(), (int32)bRequestedPreviewState );
}
}
#endif
}
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
/*-----------------------------------------------------------------------------
New read test, still temporary, but around 4x faster
-----------------------------------------------------------------------------*/
class FNewStatsReader : public FStatsReadFile
{
friend struct FStatsReader<FNewStatsReader>;
typedef FStatsReadFile Super;
public:
/** Initialize. */
void Initialize( FProfilerClientManager* InProfilerClientManager, FServiceConnection* InLoadConnection )
{
ProfilerClientManager = InProfilerClientManager;
LoadConnection = InLoadConnection;
}
protected:
/** Initialization constructor. */
FNewStatsReader( const TCHAR* InFilename )
: FStatsReadFile( InFilename, false )
, ProfilerClientManager( nullptr )
, LoadConnection( nullptr )
{
// Keep only the last frame.
SetHistoryFrames( 1 );
}
/** Called every each frame has been read from the file. */
virtual void ReadStatsFrame( const TArray<FStatMessage>& CondensedMessages, const int64 Frame ) override
{
SCOPE_CYCLE_COUNTER( STAT_PC_GenerateDataFrame );
FProfilerDataFrame& DataFrame = LoadConnection->CurrentData;
DataFrame.Frame = Frame;
DataFrame.FrameStart = 0.0;
DataFrame.CountAccumulators.Reset();
DataFrame.CycleGraphs.Reset();
DataFrame.FloatAccumulators.Reset();
DataFrame.MetaDataUpdated = false;
// Get the stat stack root and the non frame stats.
FRawStatStackNode Stack;
TArray<FStatMessage> NonFrameStats;
State.UncondenseStackStats( CondensedMessages, Stack, nullptr, &NonFrameStats );
LoadConnection->GenerateCycleGraphs( Stack, DataFrame.CycleGraphs );
LoadConnection->GenerateAccumulators( NonFrameStats, DataFrame.CountAccumulators, DataFrame.FloatAccumulators );
// Create a copy of the stats metadata.
FStatMetaData* MetaDataPtr = nullptr;
if (DataFrame.MetaDataUpdated)
{
MetaDataPtr = new FStatMetaData();
*MetaDataPtr = LoadConnection->StatMetaData;
}
// Create a copy of the stats data.
FProfilerDataFrame* DataFramePtr = new FProfilerDataFrame();
*DataFramePtr = DataFrame;
// Send to game thread.
FSimpleDelegateGraphTask::CreateAndDispatchWhenReady
(
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057) ========================== MAJOR FEATURES + CHANGES ========================== Change 2975196 on 2016/05/12 by Robert.Manuszewski Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading. - This way we can avoid very long GC times after new blueprints have been loaded. - Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes) Change 2993960 on 2016/05/30 by Robert.Manuszewski Fixing leaked linkers created by blocking load requests during async loading. Change 2959398 on 2016/04/28 by Steve.Robb TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled. #jira UE-20828 Change 2960723 on 2016/04/29 by Graeme.Thornton Fix for texture asset import data being ignored when async loaded Change 2960938 on 2016/04/29 by Robert.Manuszewski Nulling out sql db handle after closing it. Change 2967127 on 2016/05/05 by Steve.Robb Move constructors explicitly disabled in generated code. Change 2967143 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2967164 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer Change 2968650 on 2016/05/06 by Steve.Robb Fix for HotReload copying module manager. Change 2968915 on 2016/05/06 by Robert.Manuszewski Fixing spelling of SetImageIntegrityStatus function name. Change 2970406 on 2016/05/09 by Steve.Robb Static analysis fixes: Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap. Change 2970419 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. warning C6011: Dereferencing NULL pointer '...'. warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read. warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written. Change 2970431 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results. Change 2972032 on 2016/05/10 by Steven.Hutton Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries. Change 2972085 on 2016/05/10 by Steve.Robb Const-correctness fix for FLogCategoryBase::IsSuppressed. Change 2972087 on 2016/05/10 by Steve.Robb ELogVerbosity moved into its own header. Change 2972090 on 2016/05/10 by Steve.Robb Redundant ensure removed. Change 2972103 on 2016/05/10 by Steve.Robb Removal of redundant use of USING_CODE_ANALYSIS. Change 2972139 on 2016/05/10 by Steve.Robb Fix for ensure macros throwing C6326 warnings during static analysis. Change 2972147 on 2016/05/10 by Steve.Robb Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis. Change 2972162 on 2016/05/10 by Steve.Robb SCOPE_CYCLE_COUNTER_GUARD removed. Change 2972168 on 2016/05/10 by Steve.Robb Compile error fix for logOrEnsureNanError in static analysis builds. Change 2973084 on 2016/05/10 by Chris.Wood Crash Report Server performance tweak Change 2974030 on 2016/05/11 by Steve.Robb Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*. Change 2974053 on 2016/05/11 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2974191 on 2016/05/11 by Steve.Robb Fix for template instantiation error in VS2013. Change 2975298 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2975318 on 2016/05/12 by Steve.Robb Fix for hot reload info being reported as warnings. #jira UE-30586 Change 2975447 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator? warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects. warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead? warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set. Change 2975478 on 2016/05/12 by Steve.Robb Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings. Change 2975538 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'StaticResource' Change 2976640 on 2016/05/13 by Robert.Manuszewski Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked. #jira UE-30675 Change 2978320 on 2016/05/16 by Steve.Robb Fix for static analysis warnings in XNA headers. Change 2978329 on 2016/05/16 by Steve.Robb Static analysis fixes: warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages. Change 2980222 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2980458 on 2016/05/17 by Chris.Wood Attempt to fix crash report submission problems from CRP to CR website [UE-30257] - Crashreports are sometimes missing file attachments Passing crash GUID so that website can easily check for duplicates in future Increased request timeout for AddCrash to be longer than website database timeout Logging retries for future visibility CRP v.1.1.6 Change 2980639 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2981750 on 2016/05/18 by Steve.Robb check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly. Change 2982106 on 2016/05/18 by John.Mahoney Fixed a crash caused by loading two stat capture files simultaneously in the profiler. If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load. Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId. This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading. Cleaned up some weak pointer usage in the profiler window. #jira UE-30741 Change 2983366 on 2016/05/19 by Steven.Hutton Changes for passing crash type directly from CRP to CRW. Change 2983394 on 2016/05/19 by Steven.Hutton Minor changes to add crash with more error reporting Change 2984685 on 2016/05/20 by Robert.Manuszewski Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core) Change 2985143 on 2016/05/20 by Steve.Robb Missing semi-colons. Change 2986463 on 2016/05/23 by Steve.Robb CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs. Change 2986475 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986476 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986480 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant Change 2986515 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func' Change 2986680 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written. warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func' warning C6031: Return value ignored: 'snprintf'. warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'. Change 2986865 on 2016/05/23 by Robert.Manuszewski Removing redundand AddReferencedObjects functions Change 2987968 on 2016/05/24 by Robert.Manuszewski Removing redundant UPROPERTY macros from intrinsic classes. Change 2987979 on 2016/05/24 by Steve.Robb Optimization of some FString and FPaths operations to produce fewer temporaries. Change 2988297 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2988430 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read. Change 2988461 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Change 2988464 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap. Change 2988494 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects. Change 2989411 on 2016/05/25 by Robert.Manuszewski Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds. Change 2989429 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'. Change 2989982 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6001: Using uninitialized memory 'LODPlanesMin'. Change 2990018 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'X' Change 2990077 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2990114 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent. Change 2990125 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Change 2990162 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. Change 2990193 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did. warning C6011: Dereferencing NULL pointer 'Semantic'. Change 2991006 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered. Change 2991012 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'. Change 2991013 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2991016 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2991017 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2991019 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6292: Ill-defined for-loop: counts up from maximum. Change 2991023 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6322: Empty _except block. warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations. Change 2991070 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did. Change 2991416 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992738 on 2016/05/27 by Steve.Robb Revert changes to FString::MatchesWildcard. Change 2992916 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992960 on 2016/05/27 by Chris.Wood Optimized P4 access in Crash Report Process and MinidumpDiagostics. Change 2992964 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2993956 on 2016/05/30 by Robert.Manuszewski Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload. #jira UE-31309 Change 2993977 on 2016/05/30 by Robert.Manuszewski Don't wait for all packages to finish loading before PostLoading those which already have. Change 2994206 on 2016/05/31 by Robert.Manuszewski PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium) #lockdown Nick.Penwarden [CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
FSimpleDelegateGraphTask::FDelegate::CreateRaw( ProfilerClientManager, &FProfilerClientManager::SendProfilerDataFrameToGame, DataFramePtr, MetaDataPtr, LoadConnection->InstanceId ),
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
TStatId(), nullptr, ENamedThreads::GameThread
);
}
/** Called after reading all data from the file. */
virtual void PreProcessStats() override
{
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057) ========================== MAJOR FEATURES + CHANGES ========================== Change 2975196 on 2016/05/12 by Robert.Manuszewski Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading. - This way we can avoid very long GC times after new blueprints have been loaded. - Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes) Change 2993960 on 2016/05/30 by Robert.Manuszewski Fixing leaked linkers created by blocking load requests during async loading. Change 2959398 on 2016/04/28 by Steve.Robb TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled. #jira UE-20828 Change 2960723 on 2016/04/29 by Graeme.Thornton Fix for texture asset import data being ignored when async loaded Change 2960938 on 2016/04/29 by Robert.Manuszewski Nulling out sql db handle after closing it. Change 2967127 on 2016/05/05 by Steve.Robb Move constructors explicitly disabled in generated code. Change 2967143 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2967164 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer Change 2968650 on 2016/05/06 by Steve.Robb Fix for HotReload copying module manager. Change 2968915 on 2016/05/06 by Robert.Manuszewski Fixing spelling of SetImageIntegrityStatus function name. Change 2970406 on 2016/05/09 by Steve.Robb Static analysis fixes: Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap. Change 2970419 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. warning C6011: Dereferencing NULL pointer '...'. warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read. warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written. Change 2970431 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results. Change 2972032 on 2016/05/10 by Steven.Hutton Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries. Change 2972085 on 2016/05/10 by Steve.Robb Const-correctness fix for FLogCategoryBase::IsSuppressed. Change 2972087 on 2016/05/10 by Steve.Robb ELogVerbosity moved into its own header. Change 2972090 on 2016/05/10 by Steve.Robb Redundant ensure removed. Change 2972103 on 2016/05/10 by Steve.Robb Removal of redundant use of USING_CODE_ANALYSIS. Change 2972139 on 2016/05/10 by Steve.Robb Fix for ensure macros throwing C6326 warnings during static analysis. Change 2972147 on 2016/05/10 by Steve.Robb Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis. Change 2972162 on 2016/05/10 by Steve.Robb SCOPE_CYCLE_COUNTER_GUARD removed. Change 2972168 on 2016/05/10 by Steve.Robb Compile error fix for logOrEnsureNanError in static analysis builds. Change 2973084 on 2016/05/10 by Chris.Wood Crash Report Server performance tweak Change 2974030 on 2016/05/11 by Steve.Robb Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*. Change 2974053 on 2016/05/11 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2974191 on 2016/05/11 by Steve.Robb Fix for template instantiation error in VS2013. Change 2975298 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2975318 on 2016/05/12 by Steve.Robb Fix for hot reload info being reported as warnings. #jira UE-30586 Change 2975447 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator? warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects. warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead? warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set. Change 2975478 on 2016/05/12 by Steve.Robb Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings. Change 2975538 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'StaticResource' Change 2976640 on 2016/05/13 by Robert.Manuszewski Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked. #jira UE-30675 Change 2978320 on 2016/05/16 by Steve.Robb Fix for static analysis warnings in XNA headers. Change 2978329 on 2016/05/16 by Steve.Robb Static analysis fixes: warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages. Change 2980222 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2980458 on 2016/05/17 by Chris.Wood Attempt to fix crash report submission problems from CRP to CR website [UE-30257] - Crashreports are sometimes missing file attachments Passing crash GUID so that website can easily check for duplicates in future Increased request timeout for AddCrash to be longer than website database timeout Logging retries for future visibility CRP v.1.1.6 Change 2980639 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2981750 on 2016/05/18 by Steve.Robb check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly. Change 2982106 on 2016/05/18 by John.Mahoney Fixed a crash caused by loading two stat capture files simultaneously in the profiler. If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load. Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId. This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading. Cleaned up some weak pointer usage in the profiler window. #jira UE-30741 Change 2983366 on 2016/05/19 by Steven.Hutton Changes for passing crash type directly from CRP to CRW. Change 2983394 on 2016/05/19 by Steven.Hutton Minor changes to add crash with more error reporting Change 2984685 on 2016/05/20 by Robert.Manuszewski Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core) Change 2985143 on 2016/05/20 by Steve.Robb Missing semi-colons. Change 2986463 on 2016/05/23 by Steve.Robb CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs. Change 2986475 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986476 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986480 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant Change 2986515 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func' Change 2986680 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written. warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func' warning C6031: Return value ignored: 'snprintf'. warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'. Change 2986865 on 2016/05/23 by Robert.Manuszewski Removing redundand AddReferencedObjects functions Change 2987968 on 2016/05/24 by Robert.Manuszewski Removing redundant UPROPERTY macros from intrinsic classes. Change 2987979 on 2016/05/24 by Steve.Robb Optimization of some FString and FPaths operations to produce fewer temporaries. Change 2988297 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2988430 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read. Change 2988461 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Change 2988464 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap. Change 2988494 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects. Change 2989411 on 2016/05/25 by Robert.Manuszewski Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds. Change 2989429 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'. Change 2989982 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6001: Using uninitialized memory 'LODPlanesMin'. Change 2990018 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'X' Change 2990077 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2990114 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent. Change 2990125 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Change 2990162 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. Change 2990193 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did. warning C6011: Dereferencing NULL pointer 'Semantic'. Change 2991006 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered. Change 2991012 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'. Change 2991013 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2991016 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2991017 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2991019 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6292: Ill-defined for-loop: counts up from maximum. Change 2991023 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6322: Empty _except block. warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations. Change 2991070 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did. Change 2991416 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992738 on 2016/05/27 by Steve.Robb Revert changes to FString::MatchesWildcard. Change 2992916 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992960 on 2016/05/27 by Chris.Wood Optimized P4 access in Crash Report Process and MinidumpDiagostics. Change 2992964 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2993956 on 2016/05/30 by Robert.Manuszewski Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload. #jira UE-31309 Change 2993977 on 2016/05/30 by Robert.Manuszewski Don't wait for all packages to finish loading before PostLoading those which already have. Change 2994206 on 2016/05/31 by Robert.Manuszewski PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium) #lockdown Nick.Penwarden [CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
FSimpleDelegateGraphTask::CreateAndDispatchWhenReady
(
FSimpleDelegateGraphTask::FDelegate::CreateRaw( ProfilerClientManager, &FProfilerClientManager::FinalizeLoading, LoadConnection->InstanceId ),
TStatId(), NULL, ENamedThreads::GameThread
);
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
}
FProfilerClientManager* ProfilerClientManager;
FServiceConnection* LoadConnection;
};
void FServiceConnection::LoadCapture( const FString& DataFilepath, FProfilerClientManager* ProfilerClientManager )
{
StatsReader = FStatsReader<FNewStatsReader>::Create( *DataFilepath );
if (StatsReader)
{
StatsReader->Initialize( ProfilerClientManager, this );
StatsReader->ReadAndProcessAsynchronously();
}
}
void FProfilerClientManager::LoadCapture( const FString& DataFilepath, const FGuid& ProfileId )
{
#if STATS
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
// Start an async load.
LoadConnection = &Connections.FindOrAdd(ProfileId);
LoadConnection->InstanceId = ProfileId;
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
LoadConnection->StatMetaData.SecondsPerCycle = FPlatformTime::GetSecondsPerCycle(); // fix this by adding a message which specifies this
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
ProfilerLoadStartedDelegate.Broadcast( ProfileId );
LoadConnection->LoadCapture( DataFilepath, this );
RetryTime = 0.05f;
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
TickDelegateHandle = FTicker::GetCoreTicker().AddTicker(TickDelegate, RetryTime);
#endif
}
void FProfilerClientManager::RequestLastCapturedFile( const FGuid& InstanceId /*= FGuid()*/ )
{
#if STATS
if (MessageEndpoint.IsValid() && ActiveSessionId.IsValid())
{
if( !InstanceId.IsValid() )
{
TArray<FMessageAddress> Instances;
for (auto It = Connections.CreateConstIterator(); It; ++It)
{
Instances.Add( It.Value().ProfilerServiceAddress );
}
MessageEndpoint->Send(new FProfilerServiceRequest(EProfilerRequestType::PRT_SendLastCapturedFile), Instances);
}
else
{
const FMessageAddress* MessageAddress = &Connections.Find(InstanceId)->ProfilerServiceAddress;
if( MessageAddress )
{
MessageEndpoint->Send(new FProfilerServiceRequest(EProfilerRequestType::PRT_SendLastCapturedFile), *MessageAddress);
}
}
}
#endif
}
/* FProfilerClientManager event handlers
*****************************************************************************/
void FProfilerClientManager::HandleMessageBusShutdown()
{
#if STATS
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
Shutdown();
MessageEndpoint.Reset();
MessageBus.Reset();
#endif
}
void FProfilerClientManager::HandleServiceAuthorizeMessage( const FProfilerServiceAuthorize& Message, const IMessageContextRef& Context )
{
#if STATS
if (ActiveSessionId == Message.SessionId && PendingInstances.Contains(Message.InstanceId))
{
PendingInstances.Remove(Message.InstanceId);
FServiceConnection& Connection = Connections.FindOrAdd(Message.InstanceId);
Connection.Initialize(Message, Context);
// Fire a meta data update message
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
//ProfilerMetaDataUpdatedDelegate.Broadcast(Message.InstanceId);
// Fire the client connection event
ProfilerClientConnectedDelegate.Broadcast(ActiveSessionId, Message.InstanceId);
UE_LOG( LogProfilerClient, Verbose, TEXT( "Authorize SessionId: %s, InstanceId: %s" ), *Message.SessionId.ToString(), *Message.InstanceId.ToString() );
}
#endif
}
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
/*-----------------------------------------------------------------------------
FServiceConnection
-----------------------------------------------------------------------------*/
FServiceConnection::FServiceConnection()
: StatsReader( nullptr )
{
}
FServiceConnection::FServiceConnection( const FServiceConnection& InConnnection )
{
}
FServiceConnection::~FServiceConnection()
{
if (StatsReader)
{
StatsReader->RequestStop();
while (StatsReader->IsBusy())
{
FPlatformProcess::Sleep( 2.0f );
UE_LOG( LogStats, Log, TEXT( "RequestStop: Stage: %s / %3i%%" ), *StatsReader->GetProcessingStageAsString(), StatsReader->GetStageProgress() );
}
delete StatsReader;
StatsReader = nullptr;
}
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2799478 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added Dev Stream custom versions. - Each stream now has its own custom version - Developers working in a stream should only modify their respective version Change 2789867 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 UnrealHeaderTool plugins no longer need to be a separate plugin and don't require UnrealHeaderTool source code changes to work. - Merged ScriptGeneratorPlugin with ScriptPlugin - Introduced the concept of UHT plugin support for plugins so that UHT's source files don't need to be modified to make it work with external plugins - Added RuntimeNoProgram module type (module that can be used at runtime but not by program targets). - Fixed logic with project file path setting in the engine. It will no longer try to crate a full path from an already rooted path. Change 2796114 on 2015/12/09 by Steve.Robb@Dev-Core TEnumRange - enabled ranged-based for iteration over enum values. Change 2789843 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 More thorough way of verifying GC cluster assumptions. Change 2794221 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Don't merge GC clusters by default Change 2797824 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added the option to load all symbols for stack walking in non-monolithic builds. Change 2790539 on 2015/12/04 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats/Profiler - Better handling for live connection, using the same path as file profiles, added FStatsLoadedState to separate runtime stats state from the loaded one Change 2794183 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Always reset events when returning them to pool. Change 2794406 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing -unversioned flag being completely ignored when cooking Change 2794563 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Making sure string referenced assets don't get cooked if referenced by editor-only properties. Change 2795124 on 2015/12/08 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Fixed bad data in min/max/avg inclusive times, added min/max/avg num calls, fixed event graph tooltip not displaying correct values Change 2796208 on 2015/12/09 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Remove support for multiple instances in the profiler (game thread is always visible, a few crash fixes, cleaned code a bit) Change 2797658 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Allocation verification helpers. Helps with tracking down memory stomps, freeing the same pointers multiple times. Change 2797699 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fix incorrect asset loading in Cooked game data (by bozaro) PR #1844 Change 2798173 on 2015/12/10 by Steve.Robb@Dev-Core Migration of Fortnite to use engine's TEnumRange. Change 2798217 on 2015/12/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1331 [Core] Added a stomp allocator that allows finding memory overruns, underruns, and read/write after free. (Contributed by Pablo Zurita) Change 2799605 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fixing a crash when cancelling async loading caused by detaching linker from objects that had RF_NeedLoad flag set. Change 2799849 on 2015/12/11 by Steve.Robb@Dev-Core Migration of Ocean to use engine's TEnumRange. Change 2803144 on 2015/12/15 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Changed export tagging archive to also serialize class default objects using the normal Serialize path so that it can collect all custom versions used by exports. Change 2803206 on 2015/12/15 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-24177 Audit ôshippingö defines in engine Change 2804868 on 2015/12/16 by Steve.Robb@Dev-Core Removal of stats from MallocBinned2, to be readded later. #lockdown Nick.Penwarden [CL 2805158 by Robert Manuszewski in Main branch]
2015-12-16 11:52:36 -05:00
for (const auto& It : ReceivedData)
{
delete It.Value;
}
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
}
void FServiceConnection::Initialize( const FProfilerServiceAuthorize& Message, const IMessageContextRef& Context )
{
#if STATS
ProfilerServiceAddress = Context->GetSender();
InstanceId = Message.InstanceId;
CurrentData.Frame = 0;
#endif
}
bool FProfilerClientManager::CheckHashAndWrite( const FProfilerServiceFileChunk& FileChunk, const FProfilerFileChunkHeader& FileChunkHeader, FArchive* Writer )
{
#if STATS
const int32 HashSize = 20;
uint8 LocalHash[HashSize]={0};
// De-hex string into TArray<uint8>
TArray<uint8> FileChunkData;
const int32 DataLength = FileChunk.HexData.Len() / 2;
FileChunkData.Reset( DataLength );
FileChunkData.AddUninitialized( DataLength );
FString::ToHexBlob( FileChunk.HexData, FileChunkData.GetData(), DataLength );
// Hash file chunk data.
FSHA1 Sha;
Sha.Update( FileChunkData.GetData(), FileChunkHeader.ChunkSize );
// Hash file chunk header.
Sha.Update( FileChunk.Header.GetData(), FileChunk.Header.Num() );
Sha.Final();
Sha.GetHash( LocalHash );
const int32 MemDiff = FMemory::Memcmp( FileChunk.ChunkHash.GetData(), LocalHash, HashSize );
bool bResult = false;
if( MemDiff == 0 )
{
// Write the data to the archive.
Writer->Seek( FileChunkHeader.ChunkOffset );
Writer->Serialize( (void*)FileChunkData.GetData(), FileChunkHeader.ChunkSize );
bResult = true;
}
return bResult;
#else
return false;
#endif
}
void FProfilerClientManager::HandleServiceFileChunk( const FProfilerServiceFileChunk& FileChunk, const IMessageContextRef& Context )
{
#if STATS
const TCHAR* StrTmp = TEXT(".tmp");
// Read file chunk header.
FMemoryReader Reader( FileChunk.Header );
FProfilerFileChunkHeader FileChunkHeader;
Reader << FileChunkHeader;
FileChunkHeader.Validate();
const bool bValidFileChunk = !FailedTransfer.Contains( FileChunk.Filename );
if (ActiveSessionId.IsValid() && Connections.Find(FileChunk.InstanceId) != nullptr && bValidFileChunk)
{
FReceivedFileInfo* ReceivedFileInfo = ActiveTransfers.Find( FileChunk.Filename );
if( !ReceivedFileInfo )
{
const FString PathName = FPaths::ProfilingDir() + TEXT("UnrealStats/Received/");
const FString StatFilepath = PathName + FileChunk.Filename + StrTmp;
UE_LOG( LogProfilerClient, Log, TEXT( "Opening stats file for service-client sending: %s" ), *StatFilepath );
FArchive* FileWriter = IFileManager::Get().CreateFileWriter(*StatFilepath);
if( !FileWriter )
{
UE_LOG( LogProfilerClient, Error, TEXT( "Could not open: %s" ), *StatFilepath );
return;
}
ReceivedFileInfo = &ActiveTransfers.Add( FileChunk.Filename, FReceivedFileInfo(FileWriter,0,StatFilepath) );
ProfilerFileTransferDelegate.Broadcast( FileChunk.Filename, ReceivedFileInfo->Progress, FileChunkHeader.FileSize );
}
const bool bSimulateBadFileChunk = true;//FMath::Rand() % 10 != 0;
const bool bSuccess = CheckHashAndWrite( FileChunk, FileChunkHeader, ReceivedFileInfo->FileWriter ) && bSimulateBadFileChunk;
if( bSuccess )
{
ReceivedFileInfo->Progress += FileChunkHeader.ChunkSize;
ReceivedFileInfo->Update();
if( ReceivedFileInfo->Progress == FileChunkHeader.FileSize )
{
// File has been successfully sent, so send this information to the profiler service.
if( MessageEndpoint.IsValid() )
{
MessageEndpoint->Send( new FProfilerServiceFileChunk( FGuid(),FileChunk.Filename,FProfilerFileChunkHeader(0,0,0,EProfilerFileChunkType::FinalizeFile).AsArray() ), Context->GetSender() );
ProfilerFileTransferDelegate.Broadcast( FileChunk.Filename, ReceivedFileInfo->Progress, FileChunkHeader.FileSize );
}
// Delete the file writer.
delete ReceivedFileInfo->FileWriter;
ReceivedFileInfo->FileWriter = nullptr;
// Rename the stats file.
IFileManager::Get().Move( *ReceivedFileInfo->DestFilepath.Replace( StrTmp, TEXT("") ), *ReceivedFileInfo->DestFilepath );
ActiveTransfers.Remove( FileChunk.Filename );
UE_LOG( LogProfilerClient, Log, TEXT( "File service-client received successfully: %s" ), *FileChunk.Filename );
}
else
{
ProfilerFileTransferDelegate.Broadcast( FileChunk.Filename, ReceivedFileInfo->Progress, FileChunkHeader.FileSize );
}
}
else
{
// This chunk is a bad chunk, so ask for resending it.
if( MessageEndpoint.IsValid() )
{
MessageEndpoint->Send( new FProfilerServiceFileChunk(FileChunk,FProfilerServiceFileChunk::FNullTag()), Context->GetSender() );
UE_LOG( LogProfilerClient, Log, TEXT( "Received a bad chunk of file, resending: %5i, %6u, %10u, %s" ), FileChunk.HexData.Len(), ReceivedFileInfo->Progress, FileChunkHeader.FileSize, *FileChunk.Filename );
}
}
}
#endif
}
void FProfilerClientManager::HandleServicePingMessage( const FProfilerServicePing& Message, const IMessageContextRef& Context )
{
#if STATS
if (MessageEndpoint.IsValid())
{
TArray<FMessageAddress> Instances;
for (auto It = Connections.CreateConstIterator(); It; ++It)
{
Instances.Add(It.Value().ProfilerServiceAddress);
}
MessageEndpoint->Send(new FProfilerServicePong(), Instances);
UE_LOG( LogProfilerClient, Verbose, TEXT( "Ping GetSender: %s" ), *Context->GetSender().ToString() );
}
#endif
}
bool FProfilerClientManager::HandleTicker( float DeltaTime )
{
#if STATS
if (PendingInstances.Num() > 0 && FDateTime::Now() > LastPingTime + DeltaTime)
{
TArray<FGuid> Instances;
Instances.Append(PendingInstances);
PendingInstances.Reset();
for (int32 i = 0; i < Instances.Num(); ++i)
{
Track(Instances[i]);
}
LastPingTime = FDateTime::Now();
}
#endif
return false;
}
bool FProfilerClientManager::HandleMessagesTicker( float DeltaTime )
{
#if STATS
for (auto It = Connections.CreateIterator(); It; ++It)
{
FServiceConnection& Connection = It.Value();
TArray<int64> Frames;
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2799478 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added Dev Stream custom versions. - Each stream now has its own custom version - Developers working in a stream should only modify their respective version Change 2789867 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 UnrealHeaderTool plugins no longer need to be a separate plugin and don't require UnrealHeaderTool source code changes to work. - Merged ScriptGeneratorPlugin with ScriptPlugin - Introduced the concept of UHT plugin support for plugins so that UHT's source files don't need to be modified to make it work with external plugins - Added RuntimeNoProgram module type (module that can be used at runtime but not by program targets). - Fixed logic with project file path setting in the engine. It will no longer try to crate a full path from an already rooted path. Change 2796114 on 2015/12/09 by Steve.Robb@Dev-Core TEnumRange - enabled ranged-based for iteration over enum values. Change 2789843 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 More thorough way of verifying GC cluster assumptions. Change 2794221 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Don't merge GC clusters by default Change 2797824 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added the option to load all symbols for stack walking in non-monolithic builds. Change 2790539 on 2015/12/04 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats/Profiler - Better handling for live connection, using the same path as file profiles, added FStatsLoadedState to separate runtime stats state from the loaded one Change 2794183 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Always reset events when returning them to pool. Change 2794406 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing -unversioned flag being completely ignored when cooking Change 2794563 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Making sure string referenced assets don't get cooked if referenced by editor-only properties. Change 2795124 on 2015/12/08 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Fixed bad data in min/max/avg inclusive times, added min/max/avg num calls, fixed event graph tooltip not displaying correct values Change 2796208 on 2015/12/09 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Remove support for multiple instances in the profiler (game thread is always visible, a few crash fixes, cleaned code a bit) Change 2797658 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Allocation verification helpers. Helps with tracking down memory stomps, freeing the same pointers multiple times. Change 2797699 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fix incorrect asset loading in Cooked game data (by bozaro) PR #1844 Change 2798173 on 2015/12/10 by Steve.Robb@Dev-Core Migration of Fortnite to use engine's TEnumRange. Change 2798217 on 2015/12/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1331 [Core] Added a stomp allocator that allows finding memory overruns, underruns, and read/write after free. (Contributed by Pablo Zurita) Change 2799605 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fixing a crash when cancelling async loading caused by detaching linker from objects that had RF_NeedLoad flag set. Change 2799849 on 2015/12/11 by Steve.Robb@Dev-Core Migration of Ocean to use engine's TEnumRange. Change 2803144 on 2015/12/15 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Changed export tagging archive to also serialize class default objects using the normal Serialize path so that it can collect all custom versions used by exports. Change 2803206 on 2015/12/15 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-24177 Audit ôshippingö defines in engine Change 2804868 on 2015/12/16 by Steve.Robb@Dev-Core Removal of stats from MallocBinned2, to be readded later. #lockdown Nick.Penwarden [CL 2805158 by Robert Manuszewski in Main branch]
2015-12-16 11:52:36 -05:00
Connection.ReceivedData.GenerateKeyArray( Frames );
Frames.Sort();
// MessageBus sends all data in out of order fashion.
// We buffer frame to make sure that all frames are received in the proper order.
const int32 NUM_BUFFERED_FRAMES = 15;
for( int32 Index = 0; Index < Frames.Num(); Index++ )
{
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2799478 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added Dev Stream custom versions. - Each stream now has its own custom version - Developers working in a stream should only modify their respective version Change 2789867 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 UnrealHeaderTool plugins no longer need to be a separate plugin and don't require UnrealHeaderTool source code changes to work. - Merged ScriptGeneratorPlugin with ScriptPlugin - Introduced the concept of UHT plugin support for plugins so that UHT's source files don't need to be modified to make it work with external plugins - Added RuntimeNoProgram module type (module that can be used at runtime but not by program targets). - Fixed logic with project file path setting in the engine. It will no longer try to crate a full path from an already rooted path. Change 2796114 on 2015/12/09 by Steve.Robb@Dev-Core TEnumRange - enabled ranged-based for iteration over enum values. Change 2789843 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 More thorough way of verifying GC cluster assumptions. Change 2794221 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Don't merge GC clusters by default Change 2797824 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added the option to load all symbols for stack walking in non-monolithic builds. Change 2790539 on 2015/12/04 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats/Profiler - Better handling for live connection, using the same path as file profiles, added FStatsLoadedState to separate runtime stats state from the loaded one Change 2794183 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Always reset events when returning them to pool. Change 2794406 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing -unversioned flag being completely ignored when cooking Change 2794563 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Making sure string referenced assets don't get cooked if referenced by editor-only properties. Change 2795124 on 2015/12/08 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Fixed bad data in min/max/avg inclusive times, added min/max/avg num calls, fixed event graph tooltip not displaying correct values Change 2796208 on 2015/12/09 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Remove support for multiple instances in the profiler (game thread is always visible, a few crash fixes, cleaned code a bit) Change 2797658 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Allocation verification helpers. Helps with tracking down memory stomps, freeing the same pointers multiple times. Change 2797699 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fix incorrect asset loading in Cooked game data (by bozaro) PR #1844 Change 2798173 on 2015/12/10 by Steve.Robb@Dev-Core Migration of Fortnite to use engine's TEnumRange. Change 2798217 on 2015/12/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1331 [Core] Added a stomp allocator that allows finding memory overruns, underruns, and read/write after free. (Contributed by Pablo Zurita) Change 2799605 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fixing a crash when cancelling async loading caused by detaching linker from objects that had RF_NeedLoad flag set. Change 2799849 on 2015/12/11 by Steve.Robb@Dev-Core Migration of Ocean to use engine's TEnumRange. Change 2803144 on 2015/12/15 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Changed export tagging archive to also serialize class default objects using the normal Serialize path so that it can collect all custom versions used by exports. Change 2803206 on 2015/12/15 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-24177 Audit ôshippingö defines in engine Change 2804868 on 2015/12/16 by Steve.Robb@Dev-Core Removal of stats from MallocBinned2, to be readded later. #lockdown Nick.Penwarden [CL 2805158 by Robert Manuszewski in Main branch]
2015-12-16 11:52:36 -05:00
if (Connection.ReceivedData.Num() < NUM_BUFFERED_FRAMES)
{
break;
}
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2836261 on 2016/01/20 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Flush FAsyncPackage cache after pre-load to reduce peak memory usage when async loading (5.5-10x). Change 2828630 on 2016/01/14 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Adding debug code to catch memory stomps in the async loading buffers that's independent from mallocstomp allocator. Changed the signature of PageProtect functions to be able to read-only protect memory. Change 2816129 on 2016/01/05 by Steve.Robb@Dev-Core Fixes for Realloc and alignment logic which caused redundant reallocations and incorrect binning. Change 2821054 on 2016/01/08 by Steve.Robb@Dev-Core Further Realloc savings when realigning within a block. Change 2806820 on 2015/12/17 by Steve.Robb@Dev-Core New AlignDown function, like Align, but which rounds a value/pointer down to the next alignment instead of up. Change 2806816 on 2015/12/17 by Steve.Robb@Dev-Core Sort UHT modules by type to improve iteration times in conjunction with makefiles. Change 2823235 on 2016/01/11 by Steve.Robb@Dev-Core UHT error messages about missing GENERATED_BODY() macros updated to represent intended use. Change 2806815 on 2015/12/17 by Steve.Robb@Dev-Core Module types split into Game and Engine runtime versions. Change 2833809 on 2016/01/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 StaticLoadObject will now respect LOAD_NoRedirects flag. Change 2811194 on 2015/12/22 by Bob.Tellez@Z2434_DevCore #UE4 Prevent loading packages that have a newer LegacyFileVersion since serialization for FCustomVersion is not forward compatible. UE-24443 Change 2806818 on 2015/12/17 by Steve.Robb@Dev-Core Removal of stats from MallocBinned2, to be readded later. Change 2807069 on 2015/12/17 by Steve.Robb@Dev-Core Clarification of some bucket hashing terminology. Change 2815117 on 2016/01/04 by Steve.Robb@Dev-Core Fix for a missing root build path on game modules. Change 2815673 on 2016/01/05 by Steve.Robb@Dev-Core Move FMalloc verification into a proxy object. Change 2822873 on 2016/01/11 by Steve.Robb@Dev-Core Fixes to off-by-one errors and removal of BinnedSizeLimit (assumed to be the same as MAX_POOLED_ALLOCATION_SIZE after OBO fix). Change 2822923 on 2016/01/11 by Steve.Robb@Dev-Core Simplification of MemSizeToPoolTable indexing. Change 2824974 on 2016/01/12 by Steve.Robb@Dev-Core Assert fixed. AllocateBlockFromPool's return value made debuggable. Change 2825241 on 2016/01/12 by Steve.Robb@Dev-Core UHT now returns an error code on a warning when -warningsaserrors is specified. Change 2825291 on 2016/01/12 by Steve.Robb@Dev-Core WarningsAsErrors enabled on UHT, after disabling the hardcoded behavior in CL# 2825241. Change 2829846 on 2016/01/15 by Steve.Robb@Dev-Core GitHub #1938 - wrong Max value of enum is used during net serialization Change 2829914 on 2016/01/15 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Reduce the amount of memory allocated for async cache buffers when guarding against memory stomps. Change 2829988 on 2016/01/15 by Steve.Robb@Dev-Core Generalized large pool allocations. More redundancy removed. Change 2831935 on 2016/01/18 by Chris.Wood@Chris.Wood.StreamB Added UserActivity property to crash description in CRP and CR website. [OR-12043] - Phone Home where crashes occur - pass context info to Crash Reporter DB column added to db-09 by ColinR matching this change. Published to server on Jan 18th 2016 Change 2834003 on 2016/01/19 by Chris.Wood@Chris.Wood.StreamB Added Linux to normal callstack parsing code on CR website [UE-25527] - Linux CrashReporter is missing information Published to server on Jan 19th 2016 Change 2835466 on 2016/01/20 by Joe.Conley@Joe.Conley_EGJWD5708_Dev-Core-Minimal Fix issue for cancelling package loads when there are still packages queued. Call their PackageLoadedDelegate with a "Cancelled" result. Should solve remaining issue with UE-24062 - "Calling CancelAsyncLoading triggers an assert in FAsyncPackage::DetachLinker()" - (ULevelStreaming::AsyncLevelLoadComplete was not being called if packages were still queued when cancel was issued) Change 2836803 on 2016/01/20 by Chris.Wood@Chris.Wood.StreamB CrashReportWebsite - fix exception thrown when parsing certain callstack formats Change 2837952 on 2016/01/21 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Changing FAsyncIORequest to be stored as reference when cancelling IO requests to improve performance. Change 2838289 on 2016/01/21 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 [CL 2845588 by Robert Manuszewski in Main branch]
2016-01-27 12:09:53 -05:00
//FScopeLogTime SLT( "HandleMessagesTicker" );
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2799478 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added Dev Stream custom versions. - Each stream now has its own custom version - Developers working in a stream should only modify their respective version Change 2789867 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 UnrealHeaderTool plugins no longer need to be a separate plugin and don't require UnrealHeaderTool source code changes to work. - Merged ScriptGeneratorPlugin with ScriptPlugin - Introduced the concept of UHT plugin support for plugins so that UHT's source files don't need to be modified to make it work with external plugins - Added RuntimeNoProgram module type (module that can be used at runtime but not by program targets). - Fixed logic with project file path setting in the engine. It will no longer try to crate a full path from an already rooted path. Change 2796114 on 2015/12/09 by Steve.Robb@Dev-Core TEnumRange - enabled ranged-based for iteration over enum values. Change 2789843 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 More thorough way of verifying GC cluster assumptions. Change 2794221 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Don't merge GC clusters by default Change 2797824 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added the option to load all symbols for stack walking in non-monolithic builds. Change 2790539 on 2015/12/04 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats/Profiler - Better handling for live connection, using the same path as file profiles, added FStatsLoadedState to separate runtime stats state from the loaded one Change 2794183 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Always reset events when returning them to pool. Change 2794406 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing -unversioned flag being completely ignored when cooking Change 2794563 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Making sure string referenced assets don't get cooked if referenced by editor-only properties. Change 2795124 on 2015/12/08 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Fixed bad data in min/max/avg inclusive times, added min/max/avg num calls, fixed event graph tooltip not displaying correct values Change 2796208 on 2015/12/09 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Remove support for multiple instances in the profiler (game thread is always visible, a few crash fixes, cleaned code a bit) Change 2797658 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Allocation verification helpers. Helps with tracking down memory stomps, freeing the same pointers multiple times. Change 2797699 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fix incorrect asset loading in Cooked game data (by bozaro) PR #1844 Change 2798173 on 2015/12/10 by Steve.Robb@Dev-Core Migration of Fortnite to use engine's TEnumRange. Change 2798217 on 2015/12/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1331 [Core] Added a stomp allocator that allows finding memory overruns, underruns, and read/write after free. (Contributed by Pablo Zurita) Change 2799605 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fixing a crash when cancelling async loading caused by detaching linker from objects that had RF_NeedLoad flag set. Change 2799849 on 2015/12/11 by Steve.Robb@Dev-Core Migration of Ocean to use engine's TEnumRange. Change 2803144 on 2015/12/15 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Changed export tagging archive to also serialize class default objects using the normal Serialize path so that it can collect all custom versions used by exports. Change 2803206 on 2015/12/15 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-24177 Audit ôshippingö defines in engine Change 2804868 on 2015/12/16 by Steve.Robb@Dev-Core Removal of stats from MallocBinned2, to be readded later. #lockdown Nick.Penwarden [CL 2805158 by Robert Manuszewski in Main branch]
2015-12-16 11:52:36 -05:00
const int64 FrameNum = Frames[Index];
const TArray<uint8>* const Data = Connection.ReceivedData.FindChecked( FrameNum );
FStatsReadStream& Stream = Connection.Stream;
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2799478 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added Dev Stream custom versions. - Each stream now has its own custom version - Developers working in a stream should only modify their respective version Change 2789867 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 UnrealHeaderTool plugins no longer need to be a separate plugin and don't require UnrealHeaderTool source code changes to work. - Merged ScriptGeneratorPlugin with ScriptPlugin - Introduced the concept of UHT plugin support for plugins so that UHT's source files don't need to be modified to make it work with external plugins - Added RuntimeNoProgram module type (module that can be used at runtime but not by program targets). - Fixed logic with project file path setting in the engine. It will no longer try to crate a full path from an already rooted path. Change 2796114 on 2015/12/09 by Steve.Robb@Dev-Core TEnumRange - enabled ranged-based for iteration over enum values. Change 2789843 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 More thorough way of verifying GC cluster assumptions. Change 2794221 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Don't merge GC clusters by default Change 2797824 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added the option to load all symbols for stack walking in non-monolithic builds. Change 2790539 on 2015/12/04 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats/Profiler - Better handling for live connection, using the same path as file profiles, added FStatsLoadedState to separate runtime stats state from the loaded one Change 2794183 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Always reset events when returning them to pool. Change 2794406 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing -unversioned flag being completely ignored when cooking Change 2794563 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Making sure string referenced assets don't get cooked if referenced by editor-only properties. Change 2795124 on 2015/12/08 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Fixed bad data in min/max/avg inclusive times, added min/max/avg num calls, fixed event graph tooltip not displaying correct values Change 2796208 on 2015/12/09 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Remove support for multiple instances in the profiler (game thread is always visible, a few crash fixes, cleaned code a bit) Change 2797658 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Allocation verification helpers. Helps with tracking down memory stomps, freeing the same pointers multiple times. Change 2797699 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fix incorrect asset loading in Cooked game data (by bozaro) PR #1844 Change 2798173 on 2015/12/10 by Steve.Robb@Dev-Core Migration of Fortnite to use engine's TEnumRange. Change 2798217 on 2015/12/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1331 [Core] Added a stomp allocator that allows finding memory overruns, underruns, and read/write after free. (Contributed by Pablo Zurita) Change 2799605 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fixing a crash when cancelling async loading caused by detaching linker from objects that had RF_NeedLoad flag set. Change 2799849 on 2015/12/11 by Steve.Robb@Dev-Core Migration of Ocean to use engine's TEnumRange. Change 2803144 on 2015/12/15 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Changed export tagging archive to also serialize class default objects using the normal Serialize path so that it can collect all custom versions used by exports. Change 2803206 on 2015/12/15 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-24177 Audit ôshippingö defines in engine Change 2804868 on 2015/12/16 by Steve.Robb@Dev-Core Removal of stats from MallocBinned2, to be readded later. #lockdown Nick.Penwarden [CL 2805158 by Robert Manuszewski in Main branch]
2015-12-16 11:52:36 -05:00
// Read all messages from the uncompressed buffer.
FMemoryReader MemoryReader( *Data, true );
while (MemoryReader.Tell() < MemoryReader.TotalSize())
{
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2799478 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added Dev Stream custom versions. - Each stream now has its own custom version - Developers working in a stream should only modify their respective version Change 2789867 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 UnrealHeaderTool plugins no longer need to be a separate plugin and don't require UnrealHeaderTool source code changes to work. - Merged ScriptGeneratorPlugin with ScriptPlugin - Introduced the concept of UHT plugin support for plugins so that UHT's source files don't need to be modified to make it work with external plugins - Added RuntimeNoProgram module type (module that can be used at runtime but not by program targets). - Fixed logic with project file path setting in the engine. It will no longer try to crate a full path from an already rooted path. Change 2796114 on 2015/12/09 by Steve.Robb@Dev-Core TEnumRange - enabled ranged-based for iteration over enum values. Change 2789843 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 More thorough way of verifying GC cluster assumptions. Change 2794221 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Don't merge GC clusters by default Change 2797824 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added the option to load all symbols for stack walking in non-monolithic builds. Change 2790539 on 2015/12/04 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats/Profiler - Better handling for live connection, using the same path as file profiles, added FStatsLoadedState to separate runtime stats state from the loaded one Change 2794183 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Always reset events when returning them to pool. Change 2794406 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing -unversioned flag being completely ignored when cooking Change 2794563 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Making sure string referenced assets don't get cooked if referenced by editor-only properties. Change 2795124 on 2015/12/08 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Fixed bad data in min/max/avg inclusive times, added min/max/avg num calls, fixed event graph tooltip not displaying correct values Change 2796208 on 2015/12/09 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Remove support for multiple instances in the profiler (game thread is always visible, a few crash fixes, cleaned code a bit) Change 2797658 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Allocation verification helpers. Helps with tracking down memory stomps, freeing the same pointers multiple times. Change 2797699 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fix incorrect asset loading in Cooked game data (by bozaro) PR #1844 Change 2798173 on 2015/12/10 by Steve.Robb@Dev-Core Migration of Fortnite to use engine's TEnumRange. Change 2798217 on 2015/12/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1331 [Core] Added a stomp allocator that allows finding memory overruns, underruns, and read/write after free. (Contributed by Pablo Zurita) Change 2799605 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fixing a crash when cancelling async loading caused by detaching linker from objects that had RF_NeedLoad flag set. Change 2799849 on 2015/12/11 by Steve.Robb@Dev-Core Migration of Ocean to use engine's TEnumRange. Change 2803144 on 2015/12/15 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Changed export tagging archive to also serialize class default objects using the normal Serialize path so that it can collect all custom versions used by exports. Change 2803206 on 2015/12/15 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-24177 Audit ôshippingö defines in engine Change 2804868 on 2015/12/16 by Steve.Robb@Dev-Core Removal of stats from MallocBinned2, to be readded later. #lockdown Nick.Penwarden [CL 2805158 by Robert Manuszewski in Main branch]
2015-12-16 11:52:36 -05:00
// Read the message.
FStatMessage Message( Stream.ReadMessage( MemoryReader ) );
new (Connection.PendingStatMessagesMessages)FStatMessage( Message );
}
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2799478 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added Dev Stream custom versions. - Each stream now has its own custom version - Developers working in a stream should only modify their respective version Change 2789867 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 UnrealHeaderTool plugins no longer need to be a separate plugin and don't require UnrealHeaderTool source code changes to work. - Merged ScriptGeneratorPlugin with ScriptPlugin - Introduced the concept of UHT plugin support for plugins so that UHT's source files don't need to be modified to make it work with external plugins - Added RuntimeNoProgram module type (module that can be used at runtime but not by program targets). - Fixed logic with project file path setting in the engine. It will no longer try to crate a full path from an already rooted path. Change 2796114 on 2015/12/09 by Steve.Robb@Dev-Core TEnumRange - enabled ranged-based for iteration over enum values. Change 2789843 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 More thorough way of verifying GC cluster assumptions. Change 2794221 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Don't merge GC clusters by default Change 2797824 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added the option to load all symbols for stack walking in non-monolithic builds. Change 2790539 on 2015/12/04 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats/Profiler - Better handling for live connection, using the same path as file profiles, added FStatsLoadedState to separate runtime stats state from the loaded one Change 2794183 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Always reset events when returning them to pool. Change 2794406 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing -unversioned flag being completely ignored when cooking Change 2794563 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Making sure string referenced assets don't get cooked if referenced by editor-only properties. Change 2795124 on 2015/12/08 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Fixed bad data in min/max/avg inclusive times, added min/max/avg num calls, fixed event graph tooltip not displaying correct values Change 2796208 on 2015/12/09 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Remove support for multiple instances in the profiler (game thread is always visible, a few crash fixes, cleaned code a bit) Change 2797658 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Allocation verification helpers. Helps with tracking down memory stomps, freeing the same pointers multiple times. Change 2797699 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fix incorrect asset loading in Cooked game data (by bozaro) PR #1844 Change 2798173 on 2015/12/10 by Steve.Robb@Dev-Core Migration of Fortnite to use engine's TEnumRange. Change 2798217 on 2015/12/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1331 [Core] Added a stomp allocator that allows finding memory overruns, underruns, and read/write after free. (Contributed by Pablo Zurita) Change 2799605 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fixing a crash when cancelling async loading caused by detaching linker from objects that had RF_NeedLoad flag set. Change 2799849 on 2015/12/11 by Steve.Robb@Dev-Core Migration of Ocean to use engine's TEnumRange. Change 2803144 on 2015/12/15 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Changed export tagging archive to also serialize class default objects using the normal Serialize path so that it can collect all custom versions used by exports. Change 2803206 on 2015/12/15 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-24177 Audit ôshippingö defines in engine Change 2804868 on 2015/12/16 by Steve.Robb@Dev-Core Removal of stats from MallocBinned2, to be readded later. #lockdown Nick.Penwarden [CL 2805158 by Robert Manuszewski in Main branch]
2015-12-16 11:52:36 -05:00
// Adds a new from from the pending messages, the pending messages will be removed after the call.
Connection.CurrentThreadState.ProcessMetaDataAndLeaveDataOnly( Connection.PendingStatMessagesMessages );
Connection.CurrentThreadState.AddFrameFromCondensedMessages( Connection.PendingStatMessagesMessages );
UE_LOG( LogProfilerClient, VeryVerbose, TEXT( "Frame=%i/%i, FNamesIndexMap=%i, CurrentMetadataSize=%i" ), FrameNum, Frames.Num(), Connection.Stream.FNamesIndexMap.Num(), Connection.CurrentThreadState.ShortNameToLongName.Num() );
// create an old format data frame from the data
Connection.GenerateProfilerDataFrame();
// Fire a meta data update message
if (Connection.CurrentData.MetaDataUpdated)
{
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
ProfilerMetaDataUpdatedDelegate.Broadcast( Connection.InstanceId, Connection.StatMetaData );
}
// send the data out
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
ProfilerDataDelegate.Broadcast( Connection.InstanceId, Connection.CurrentData );
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2799478 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added Dev Stream custom versions. - Each stream now has its own custom version - Developers working in a stream should only modify their respective version Change 2789867 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 UnrealHeaderTool plugins no longer need to be a separate plugin and don't require UnrealHeaderTool source code changes to work. - Merged ScriptGeneratorPlugin with ScriptPlugin - Introduced the concept of UHT plugin support for plugins so that UHT's source files don't need to be modified to make it work with external plugins - Added RuntimeNoProgram module type (module that can be used at runtime but not by program targets). - Fixed logic with project file path setting in the engine. It will no longer try to crate a full path from an already rooted path. Change 2796114 on 2015/12/09 by Steve.Robb@Dev-Core TEnumRange - enabled ranged-based for iteration over enum values. Change 2789843 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 More thorough way of verifying GC cluster assumptions. Change 2794221 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Don't merge GC clusters by default Change 2797824 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added the option to load all symbols for stack walking in non-monolithic builds. Change 2790539 on 2015/12/04 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats/Profiler - Better handling for live connection, using the same path as file profiles, added FStatsLoadedState to separate runtime stats state from the loaded one Change 2794183 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Always reset events when returning them to pool. Change 2794406 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing -unversioned flag being completely ignored when cooking Change 2794563 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Making sure string referenced assets don't get cooked if referenced by editor-only properties. Change 2795124 on 2015/12/08 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Fixed bad data in min/max/avg inclusive times, added min/max/avg num calls, fixed event graph tooltip not displaying correct values Change 2796208 on 2015/12/09 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Remove support for multiple instances in the profiler (game thread is always visible, a few crash fixes, cleaned code a bit) Change 2797658 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Allocation verification helpers. Helps with tracking down memory stomps, freeing the same pointers multiple times. Change 2797699 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fix incorrect asset loading in Cooked game data (by bozaro) PR #1844 Change 2798173 on 2015/12/10 by Steve.Robb@Dev-Core Migration of Fortnite to use engine's TEnumRange. Change 2798217 on 2015/12/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1331 [Core] Added a stomp allocator that allows finding memory overruns, underruns, and read/write after free. (Contributed by Pablo Zurita) Change 2799605 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fixing a crash when cancelling async loading caused by detaching linker from objects that had RF_NeedLoad flag set. Change 2799849 on 2015/12/11 by Steve.Robb@Dev-Core Migration of Ocean to use engine's TEnumRange. Change 2803144 on 2015/12/15 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Changed export tagging archive to also serialize class default objects using the normal Serialize path so that it can collect all custom versions used by exports. Change 2803206 on 2015/12/15 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-24177 Audit ôshippingö defines in engine Change 2804868 on 2015/12/16 by Steve.Robb@Dev-Core Removal of stats from MallocBinned2, to be readded later. #lockdown Nick.Penwarden [CL 2805158 by Robert Manuszewski in Main branch]
2015-12-16 11:52:36 -05:00
delete Data;
Connection.ReceivedData.Remove( FrameNum );
}
}
// Remove any active transfer that timed out.
for( auto It = ActiveTransfers.CreateIterator(); It; ++It )
{
FReceivedFileInfo& ReceivedFileInfo = It.Value();
const FString& Filename = It.Key();
if( ReceivedFileInfo.IsTimedOut() )
{
UE_LOG( LogProfilerClient, Log, TEXT( "File service-client timed out, aborted: %s" ), *Filename );
FailedTransfer.Add( Filename );
delete ReceivedFileInfo.FileWriter;
ReceivedFileInfo.FileWriter = nullptr;
IFileManager::Get().Delete( *ReceivedFileInfo.DestFilepath );
ProfilerFileTransferDelegate.Broadcast( Filename, -1, -1 );
It.RemoveCurrent();
}
}
#endif
return true;
}
void FProfilerClientManager::HandleServicePreviewAckMessage( const FProfilerServicePreviewAck& Message, const IMessageContextRef& Context )
{
#if STATS
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
if (ActiveSessionId.IsValid() && Connections.Find(Message.InstanceId) != nullptr)
{
FServiceConnection& Connection = *Connections.Find(Message.InstanceId);
UE_LOG( LogProfilerClient, Verbose, TEXT( "PreviewAck InstanceId: %s, GetSender: %s" ), *Message.InstanceId.ToString(), *Context->GetSender().ToString() );
}
#endif
}
void FProfilerClientManager::HandleProfilerServiceData2Message( const FProfilerServiceData2& Message, const IMessageContextRef& Context )
{
#if STATS
SCOPE_CYCLE_COUNTER(STAT_PC_HandleDataReceived);
if (ActiveSessionId.IsValid() && Connections.Find(Message.InstanceId) != nullptr)
{
// Create a temporary profiler data and prepare all data.
FProfilerServiceData2* ToProcess = new FProfilerServiceData2( Message.InstanceId, Message.Frame, Message.HexData, Message.CompressedSize, Message.UncompressedSize );
// Decompression and decoding is done on the task graph.
FSimpleDelegateGraphTask::CreateAndDispatchWhenReady
(
FSimpleDelegateGraphTask::FDelegate::CreateRaw( this, &FProfilerClientManager::DecompressDataAndSendToGame, ToProcess ),
TStatId()
);
}
#endif
}
void FProfilerClientManager::DecompressDataAndSendToGame( FProfilerServiceData2* ToProcess )
{
DECLARE_SCOPE_CYCLE_COUNTER( TEXT( "FProfilerClientManager::DecompressDataAndSendToGame" ), STAT_FProfilerClientManager_DecompressDataAndSendToGame, STATGROUP_Profiler );
// De-hex string into TArray<uint8>
TArray<uint8> CompressedData;
CompressedData.Reset( ToProcess->CompressedSize );
CompressedData.AddUninitialized( ToProcess->CompressedSize );
FString::ToHexBlob( ToProcess->HexData, CompressedData.GetData(), ToProcess->CompressedSize );
// Decompress data.
TArray<uint8> UncompressedData;
UncompressedData.Reset( ToProcess->UncompressedSize );
UncompressedData.AddUninitialized( ToProcess->UncompressedSize );
bool bResult = FCompression::UncompressMemory( COMPRESS_ZLIB, UncompressedData.GetData(), ToProcess->UncompressedSize, CompressedData.GetData(), ToProcess->CompressedSize );
check( bResult );
// Send to the game thread. Connections is not thread-safe, so we cannot add the data here.
TArray<uint8>* DateToGame = new TArray<uint8>( MoveTemp( UncompressedData ) );
FSimpleDelegateGraphTask::CreateAndDispatchWhenReady
(
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
FSimpleDelegateGraphTask::FDelegate::CreateRaw( this, &FProfilerClientManager::SendDataToGame, DateToGame, ToProcess->Frame, ToProcess->InstanceId ),
TStatId(), nullptr, ENamedThreads::GameThread
);
delete ToProcess;
}
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
void FProfilerClientManager::SendDataToGame( TArray<uint8>* DataToGame, int64 Frame, const FGuid InstanceId )
{
if (ActiveSessionId.IsValid() && Connections.Find( InstanceId ) != nullptr)
{
FServiceConnection& Connection = *Connections.Find( InstanceId );
// Add the message to the connections queue.
UE_LOG( LogProfilerClient, VeryVerbose, TEXT( "Frame: %i, UncompressedSize: %i, InstanceId: %s" ), Frame, DataToGame->Num(), *InstanceId.ToString() );
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2799478 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added Dev Stream custom versions. - Each stream now has its own custom version - Developers working in a stream should only modify their respective version Change 2789867 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 UnrealHeaderTool plugins no longer need to be a separate plugin and don't require UnrealHeaderTool source code changes to work. - Merged ScriptGeneratorPlugin with ScriptPlugin - Introduced the concept of UHT plugin support for plugins so that UHT's source files don't need to be modified to make it work with external plugins - Added RuntimeNoProgram module type (module that can be used at runtime but not by program targets). - Fixed logic with project file path setting in the engine. It will no longer try to crate a full path from an already rooted path. Change 2796114 on 2015/12/09 by Steve.Robb@Dev-Core TEnumRange - enabled ranged-based for iteration over enum values. Change 2789843 on 2015/12/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 More thorough way of verifying GC cluster assumptions. Change 2794221 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Don't merge GC clusters by default Change 2797824 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Added the option to load all symbols for stack walking in non-monolithic builds. Change 2790539 on 2015/12/04 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats/Profiler - Better handling for live connection, using the same path as file profiles, added FStatsLoadedState to separate runtime stats state from the loaded one Change 2794183 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Always reset events when returning them to pool. Change 2794406 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing -unversioned flag being completely ignored when cooking Change 2794563 on 2015/12/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Making sure string referenced assets don't get cooked if referenced by editor-only properties. Change 2795124 on 2015/12/08 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Fixed bad data in min/max/avg inclusive times, added min/max/avg num calls, fixed event graph tooltip not displaying correct values Change 2796208 on 2015/12/09 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Remove support for multiple instances in the profiler (game thread is always visible, a few crash fixes, cleaned code a bit) Change 2797658 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Allocation verification helpers. Helps with tracking down memory stomps, freeing the same pointers multiple times. Change 2797699 on 2015/12/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fix incorrect asset loading in Cooked game data (by bozaro) PR #1844 Change 2798173 on 2015/12/10 by Steve.Robb@Dev-Core Migration of Fortnite to use engine's TEnumRange. Change 2798217 on 2015/12/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1331 [Core] Added a stomp allocator that allows finding memory overruns, underruns, and read/write after free. (Contributed by Pablo Zurita) Change 2799605 on 2015/12/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Fixing a crash when cancelling async loading caused by detaching linker from objects that had RF_NeedLoad flag set. Change 2799849 on 2015/12/11 by Steve.Robb@Dev-Core Migration of Ocean to use engine's TEnumRange. Change 2803144 on 2015/12/15 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 Changed export tagging archive to also serialize class default objects using the normal Serialize path so that it can collect all custom versions used by exports. Change 2803206 on 2015/12/15 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-24177 Audit ôshippingö defines in engine Change 2804868 on 2015/12/16 by Steve.Robb@Dev-Core Removal of stats from MallocBinned2, to be readded later. #lockdown Nick.Penwarden [CL 2805158 by Robert Manuszewski in Main branch]
2015-12-16 11:52:36 -05:00
Connection.ReceivedData.Add( Frame, DataToGame );
}
}
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057) ========================== MAJOR FEATURES + CHANGES ========================== Change 2975196 on 2016/05/12 by Robert.Manuszewski Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading. - This way we can avoid very long GC times after new blueprints have been loaded. - Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes) Change 2993960 on 2016/05/30 by Robert.Manuszewski Fixing leaked linkers created by blocking load requests during async loading. Change 2959398 on 2016/04/28 by Steve.Robb TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled. #jira UE-20828 Change 2960723 on 2016/04/29 by Graeme.Thornton Fix for texture asset import data being ignored when async loaded Change 2960938 on 2016/04/29 by Robert.Manuszewski Nulling out sql db handle after closing it. Change 2967127 on 2016/05/05 by Steve.Robb Move constructors explicitly disabled in generated code. Change 2967143 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2967164 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer Change 2968650 on 2016/05/06 by Steve.Robb Fix for HotReload copying module manager. Change 2968915 on 2016/05/06 by Robert.Manuszewski Fixing spelling of SetImageIntegrityStatus function name. Change 2970406 on 2016/05/09 by Steve.Robb Static analysis fixes: Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap. Change 2970419 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. warning C6011: Dereferencing NULL pointer '...'. warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read. warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written. Change 2970431 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results. Change 2972032 on 2016/05/10 by Steven.Hutton Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries. Change 2972085 on 2016/05/10 by Steve.Robb Const-correctness fix for FLogCategoryBase::IsSuppressed. Change 2972087 on 2016/05/10 by Steve.Robb ELogVerbosity moved into its own header. Change 2972090 on 2016/05/10 by Steve.Robb Redundant ensure removed. Change 2972103 on 2016/05/10 by Steve.Robb Removal of redundant use of USING_CODE_ANALYSIS. Change 2972139 on 2016/05/10 by Steve.Robb Fix for ensure macros throwing C6326 warnings during static analysis. Change 2972147 on 2016/05/10 by Steve.Robb Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis. Change 2972162 on 2016/05/10 by Steve.Robb SCOPE_CYCLE_COUNTER_GUARD removed. Change 2972168 on 2016/05/10 by Steve.Robb Compile error fix for logOrEnsureNanError in static analysis builds. Change 2973084 on 2016/05/10 by Chris.Wood Crash Report Server performance tweak Change 2974030 on 2016/05/11 by Steve.Robb Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*. Change 2974053 on 2016/05/11 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2974191 on 2016/05/11 by Steve.Robb Fix for template instantiation error in VS2013. Change 2975298 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2975318 on 2016/05/12 by Steve.Robb Fix for hot reload info being reported as warnings. #jira UE-30586 Change 2975447 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator? warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects. warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead? warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set. Change 2975478 on 2016/05/12 by Steve.Robb Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings. Change 2975538 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'StaticResource' Change 2976640 on 2016/05/13 by Robert.Manuszewski Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked. #jira UE-30675 Change 2978320 on 2016/05/16 by Steve.Robb Fix for static analysis warnings in XNA headers. Change 2978329 on 2016/05/16 by Steve.Robb Static analysis fixes: warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages. Change 2980222 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2980458 on 2016/05/17 by Chris.Wood Attempt to fix crash report submission problems from CRP to CR website [UE-30257] - Crashreports are sometimes missing file attachments Passing crash GUID so that website can easily check for duplicates in future Increased request timeout for AddCrash to be longer than website database timeout Logging retries for future visibility CRP v.1.1.6 Change 2980639 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2981750 on 2016/05/18 by Steve.Robb check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly. Change 2982106 on 2016/05/18 by John.Mahoney Fixed a crash caused by loading two stat capture files simultaneously in the profiler. If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load. Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId. This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading. Cleaned up some weak pointer usage in the profiler window. #jira UE-30741 Change 2983366 on 2016/05/19 by Steven.Hutton Changes for passing crash type directly from CRP to CRW. Change 2983394 on 2016/05/19 by Steven.Hutton Minor changes to add crash with more error reporting Change 2984685 on 2016/05/20 by Robert.Manuszewski Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core) Change 2985143 on 2016/05/20 by Steve.Robb Missing semi-colons. Change 2986463 on 2016/05/23 by Steve.Robb CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs. Change 2986475 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986476 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986480 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant Change 2986515 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func' Change 2986680 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written. warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func' warning C6031: Return value ignored: 'snprintf'. warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'. Change 2986865 on 2016/05/23 by Robert.Manuszewski Removing redundand AddReferencedObjects functions Change 2987968 on 2016/05/24 by Robert.Manuszewski Removing redundant UPROPERTY macros from intrinsic classes. Change 2987979 on 2016/05/24 by Steve.Robb Optimization of some FString and FPaths operations to produce fewer temporaries. Change 2988297 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2988430 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read. Change 2988461 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Change 2988464 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap. Change 2988494 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects. Change 2989411 on 2016/05/25 by Robert.Manuszewski Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds. Change 2989429 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'. Change 2989982 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6001: Using uninitialized memory 'LODPlanesMin'. Change 2990018 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'X' Change 2990077 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2990114 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent. Change 2990125 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Change 2990162 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. Change 2990193 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did. warning C6011: Dereferencing NULL pointer 'Semantic'. Change 2991006 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered. Change 2991012 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'. Change 2991013 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2991016 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2991017 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2991019 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6292: Ill-defined for-loop: counts up from maximum. Change 2991023 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6322: Empty _except block. warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations. Change 2991070 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did. Change 2991416 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992738 on 2016/05/27 by Steve.Robb Revert changes to FString::MatchesWildcard. Change 2992916 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992960 on 2016/05/27 by Chris.Wood Optimized P4 access in Crash Report Process and MinidumpDiagostics. Change 2992964 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2993956 on 2016/05/30 by Robert.Manuszewski Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload. #jira UE-31309 Change 2993977 on 2016/05/30 by Robert.Manuszewski Don't wait for all packages to finish loading before PostLoading those which already have. Change 2994206 on 2016/05/31 by Robert.Manuszewski PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium) #lockdown Nick.Penwarden [CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
void FProfilerClientManager::SendProfilerDataFrameToGame( FProfilerDataFrame* NewData, FStatMetaData* MetaDataPtr, const FGuid InstanceId )
{
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057) ========================== MAJOR FEATURES + CHANGES ========================== Change 2975196 on 2016/05/12 by Robert.Manuszewski Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading. - This way we can avoid very long GC times after new blueprints have been loaded. - Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes) Change 2993960 on 2016/05/30 by Robert.Manuszewski Fixing leaked linkers created by blocking load requests during async loading. Change 2959398 on 2016/04/28 by Steve.Robb TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled. #jira UE-20828 Change 2960723 on 2016/04/29 by Graeme.Thornton Fix for texture asset import data being ignored when async loaded Change 2960938 on 2016/04/29 by Robert.Manuszewski Nulling out sql db handle after closing it. Change 2967127 on 2016/05/05 by Steve.Robb Move constructors explicitly disabled in generated code. Change 2967143 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2967164 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer Change 2968650 on 2016/05/06 by Steve.Robb Fix for HotReload copying module manager. Change 2968915 on 2016/05/06 by Robert.Manuszewski Fixing spelling of SetImageIntegrityStatus function name. Change 2970406 on 2016/05/09 by Steve.Robb Static analysis fixes: Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap. Change 2970419 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. warning C6011: Dereferencing NULL pointer '...'. warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read. warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written. Change 2970431 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results. Change 2972032 on 2016/05/10 by Steven.Hutton Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries. Change 2972085 on 2016/05/10 by Steve.Robb Const-correctness fix for FLogCategoryBase::IsSuppressed. Change 2972087 on 2016/05/10 by Steve.Robb ELogVerbosity moved into its own header. Change 2972090 on 2016/05/10 by Steve.Robb Redundant ensure removed. Change 2972103 on 2016/05/10 by Steve.Robb Removal of redundant use of USING_CODE_ANALYSIS. Change 2972139 on 2016/05/10 by Steve.Robb Fix for ensure macros throwing C6326 warnings during static analysis. Change 2972147 on 2016/05/10 by Steve.Robb Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis. Change 2972162 on 2016/05/10 by Steve.Robb SCOPE_CYCLE_COUNTER_GUARD removed. Change 2972168 on 2016/05/10 by Steve.Robb Compile error fix for logOrEnsureNanError in static analysis builds. Change 2973084 on 2016/05/10 by Chris.Wood Crash Report Server performance tweak Change 2974030 on 2016/05/11 by Steve.Robb Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*. Change 2974053 on 2016/05/11 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2974191 on 2016/05/11 by Steve.Robb Fix for template instantiation error in VS2013. Change 2975298 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2975318 on 2016/05/12 by Steve.Robb Fix for hot reload info being reported as warnings. #jira UE-30586 Change 2975447 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator? warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects. warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead? warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set. Change 2975478 on 2016/05/12 by Steve.Robb Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings. Change 2975538 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'StaticResource' Change 2976640 on 2016/05/13 by Robert.Manuszewski Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked. #jira UE-30675 Change 2978320 on 2016/05/16 by Steve.Robb Fix for static analysis warnings in XNA headers. Change 2978329 on 2016/05/16 by Steve.Robb Static analysis fixes: warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages. Change 2980222 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2980458 on 2016/05/17 by Chris.Wood Attempt to fix crash report submission problems from CRP to CR website [UE-30257] - Crashreports are sometimes missing file attachments Passing crash GUID so that website can easily check for duplicates in future Increased request timeout for AddCrash to be longer than website database timeout Logging retries for future visibility CRP v.1.1.6 Change 2980639 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2981750 on 2016/05/18 by Steve.Robb check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly. Change 2982106 on 2016/05/18 by John.Mahoney Fixed a crash caused by loading two stat capture files simultaneously in the profiler. If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load. Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId. This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading. Cleaned up some weak pointer usage in the profiler window. #jira UE-30741 Change 2983366 on 2016/05/19 by Steven.Hutton Changes for passing crash type directly from CRP to CRW. Change 2983394 on 2016/05/19 by Steven.Hutton Minor changes to add crash with more error reporting Change 2984685 on 2016/05/20 by Robert.Manuszewski Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core) Change 2985143 on 2016/05/20 by Steve.Robb Missing semi-colons. Change 2986463 on 2016/05/23 by Steve.Robb CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs. Change 2986475 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986476 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986480 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant Change 2986515 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func' Change 2986680 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written. warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func' warning C6031: Return value ignored: 'snprintf'. warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'. Change 2986865 on 2016/05/23 by Robert.Manuszewski Removing redundand AddReferencedObjects functions Change 2987968 on 2016/05/24 by Robert.Manuszewski Removing redundant UPROPERTY macros from intrinsic classes. Change 2987979 on 2016/05/24 by Steve.Robb Optimization of some FString and FPaths operations to produce fewer temporaries. Change 2988297 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2988430 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read. Change 2988461 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Change 2988464 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap. Change 2988494 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects. Change 2989411 on 2016/05/25 by Robert.Manuszewski Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds. Change 2989429 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'. Change 2989982 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6001: Using uninitialized memory 'LODPlanesMin'. Change 2990018 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'X' Change 2990077 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2990114 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent. Change 2990125 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Change 2990162 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. Change 2990193 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did. warning C6011: Dereferencing NULL pointer 'Semantic'. Change 2991006 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered. Change 2991012 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'. Change 2991013 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2991016 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2991017 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2991019 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6292: Ill-defined for-loop: counts up from maximum. Change 2991023 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6322: Empty _except block. warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations. Change 2991070 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did. Change 2991416 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992738 on 2016/05/27 by Steve.Robb Revert changes to FString::MatchesWildcard. Change 2992916 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992960 on 2016/05/27 by Chris.Wood Optimized P4 access in Crash Report Process and MinidumpDiagostics. Change 2992964 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2993956 on 2016/05/30 by Robert.Manuszewski Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload. #jira UE-31309 Change 2993977 on 2016/05/30 by Robert.Manuszewski Don't wait for all packages to finish loading before PostLoading those which already have. Change 2994206 on 2016/05/31 by Robert.Manuszewski PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium) #lockdown Nick.Penwarden [CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
if (Connections.Find(InstanceId) != nullptr)
{
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057) ========================== MAJOR FEATURES + CHANGES ========================== Change 2975196 on 2016/05/12 by Robert.Manuszewski Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading. - This way we can avoid very long GC times after new blueprints have been loaded. - Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes) Change 2993960 on 2016/05/30 by Robert.Manuszewski Fixing leaked linkers created by blocking load requests during async loading. Change 2959398 on 2016/04/28 by Steve.Robb TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled. #jira UE-20828 Change 2960723 on 2016/04/29 by Graeme.Thornton Fix for texture asset import data being ignored when async loaded Change 2960938 on 2016/04/29 by Robert.Manuszewski Nulling out sql db handle after closing it. Change 2967127 on 2016/05/05 by Steve.Robb Move constructors explicitly disabled in generated code. Change 2967143 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2967164 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer Change 2968650 on 2016/05/06 by Steve.Robb Fix for HotReload copying module manager. Change 2968915 on 2016/05/06 by Robert.Manuszewski Fixing spelling of SetImageIntegrityStatus function name. Change 2970406 on 2016/05/09 by Steve.Robb Static analysis fixes: Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap. Change 2970419 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. warning C6011: Dereferencing NULL pointer '...'. warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read. warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written. Change 2970431 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results. Change 2972032 on 2016/05/10 by Steven.Hutton Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries. Change 2972085 on 2016/05/10 by Steve.Robb Const-correctness fix for FLogCategoryBase::IsSuppressed. Change 2972087 on 2016/05/10 by Steve.Robb ELogVerbosity moved into its own header. Change 2972090 on 2016/05/10 by Steve.Robb Redundant ensure removed. Change 2972103 on 2016/05/10 by Steve.Robb Removal of redundant use of USING_CODE_ANALYSIS. Change 2972139 on 2016/05/10 by Steve.Robb Fix for ensure macros throwing C6326 warnings during static analysis. Change 2972147 on 2016/05/10 by Steve.Robb Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis. Change 2972162 on 2016/05/10 by Steve.Robb SCOPE_CYCLE_COUNTER_GUARD removed. Change 2972168 on 2016/05/10 by Steve.Robb Compile error fix for logOrEnsureNanError in static analysis builds. Change 2973084 on 2016/05/10 by Chris.Wood Crash Report Server performance tweak Change 2974030 on 2016/05/11 by Steve.Robb Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*. Change 2974053 on 2016/05/11 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2974191 on 2016/05/11 by Steve.Robb Fix for template instantiation error in VS2013. Change 2975298 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2975318 on 2016/05/12 by Steve.Robb Fix for hot reload info being reported as warnings. #jira UE-30586 Change 2975447 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator? warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects. warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead? warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set. Change 2975478 on 2016/05/12 by Steve.Robb Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings. Change 2975538 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'StaticResource' Change 2976640 on 2016/05/13 by Robert.Manuszewski Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked. #jira UE-30675 Change 2978320 on 2016/05/16 by Steve.Robb Fix for static analysis warnings in XNA headers. Change 2978329 on 2016/05/16 by Steve.Robb Static analysis fixes: warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages. Change 2980222 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2980458 on 2016/05/17 by Chris.Wood Attempt to fix crash report submission problems from CRP to CR website [UE-30257] - Crashreports are sometimes missing file attachments Passing crash GUID so that website can easily check for duplicates in future Increased request timeout for AddCrash to be longer than website database timeout Logging retries for future visibility CRP v.1.1.6 Change 2980639 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2981750 on 2016/05/18 by Steve.Robb check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly. Change 2982106 on 2016/05/18 by John.Mahoney Fixed a crash caused by loading two stat capture files simultaneously in the profiler. If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load. Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId. This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading. Cleaned up some weak pointer usage in the profiler window. #jira UE-30741 Change 2983366 on 2016/05/19 by Steven.Hutton Changes for passing crash type directly from CRP to CRW. Change 2983394 on 2016/05/19 by Steven.Hutton Minor changes to add crash with more error reporting Change 2984685 on 2016/05/20 by Robert.Manuszewski Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core) Change 2985143 on 2016/05/20 by Steve.Robb Missing semi-colons. Change 2986463 on 2016/05/23 by Steve.Robb CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs. Change 2986475 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986476 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986480 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant Change 2986515 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func' Change 2986680 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written. warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func' warning C6031: Return value ignored: 'snprintf'. warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'. Change 2986865 on 2016/05/23 by Robert.Manuszewski Removing redundand AddReferencedObjects functions Change 2987968 on 2016/05/24 by Robert.Manuszewski Removing redundant UPROPERTY macros from intrinsic classes. Change 2987979 on 2016/05/24 by Steve.Robb Optimization of some FString and FPaths operations to produce fewer temporaries. Change 2988297 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2988430 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read. Change 2988461 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Change 2988464 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap. Change 2988494 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects. Change 2989411 on 2016/05/25 by Robert.Manuszewski Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds. Change 2989429 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'. Change 2989982 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6001: Using uninitialized memory 'LODPlanesMin'. Change 2990018 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'X' Change 2990077 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2990114 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent. Change 2990125 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Change 2990162 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. Change 2990193 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did. warning C6011: Dereferencing NULL pointer 'Semantic'. Change 2991006 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered. Change 2991012 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'. Change 2991013 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2991016 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2991017 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2991019 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6292: Ill-defined for-loop: counts up from maximum. Change 2991023 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6322: Empty _except block. warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations. Change 2991070 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did. Change 2991416 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992738 on 2016/05/27 by Steve.Robb Revert changes to FString::MatchesWildcard. Change 2992916 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992960 on 2016/05/27 by Chris.Wood Optimized P4 access in Crash Report Process and MinidumpDiagostics. Change 2992964 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2993956 on 2016/05/30 by Robert.Manuszewski Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload. #jira UE-31309 Change 2993977 on 2016/05/30 by Robert.Manuszewski Don't wait for all packages to finish loading before PostLoading those which already have. Change 2994206 on 2016/05/31 by Robert.Manuszewski PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium) #lockdown Nick.Penwarden [CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
if (MetaDataPtr)
{
ProfilerMetaDataUpdatedDelegate.Broadcast( InstanceId, *MetaDataPtr );
delete MetaDataPtr;
MetaDataPtr = nullptr;
}
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057) ========================== MAJOR FEATURES + CHANGES ========================== Change 2975196 on 2016/05/12 by Robert.Manuszewski Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading. - This way we can avoid very long GC times after new blueprints have been loaded. - Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes) Change 2993960 on 2016/05/30 by Robert.Manuszewski Fixing leaked linkers created by blocking load requests during async loading. Change 2959398 on 2016/04/28 by Steve.Robb TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled. #jira UE-20828 Change 2960723 on 2016/04/29 by Graeme.Thornton Fix for texture asset import data being ignored when async loaded Change 2960938 on 2016/04/29 by Robert.Manuszewski Nulling out sql db handle after closing it. Change 2967127 on 2016/05/05 by Steve.Robb Move constructors explicitly disabled in generated code. Change 2967143 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2967164 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer Change 2968650 on 2016/05/06 by Steve.Robb Fix for HotReload copying module manager. Change 2968915 on 2016/05/06 by Robert.Manuszewski Fixing spelling of SetImageIntegrityStatus function name. Change 2970406 on 2016/05/09 by Steve.Robb Static analysis fixes: Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap. Change 2970419 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. warning C6011: Dereferencing NULL pointer '...'. warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read. warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written. Change 2970431 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results. Change 2972032 on 2016/05/10 by Steven.Hutton Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries. Change 2972085 on 2016/05/10 by Steve.Robb Const-correctness fix for FLogCategoryBase::IsSuppressed. Change 2972087 on 2016/05/10 by Steve.Robb ELogVerbosity moved into its own header. Change 2972090 on 2016/05/10 by Steve.Robb Redundant ensure removed. Change 2972103 on 2016/05/10 by Steve.Robb Removal of redundant use of USING_CODE_ANALYSIS. Change 2972139 on 2016/05/10 by Steve.Robb Fix for ensure macros throwing C6326 warnings during static analysis. Change 2972147 on 2016/05/10 by Steve.Robb Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis. Change 2972162 on 2016/05/10 by Steve.Robb SCOPE_CYCLE_COUNTER_GUARD removed. Change 2972168 on 2016/05/10 by Steve.Robb Compile error fix for logOrEnsureNanError in static analysis builds. Change 2973084 on 2016/05/10 by Chris.Wood Crash Report Server performance tweak Change 2974030 on 2016/05/11 by Steve.Robb Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*. Change 2974053 on 2016/05/11 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2974191 on 2016/05/11 by Steve.Robb Fix for template instantiation error in VS2013. Change 2975298 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2975318 on 2016/05/12 by Steve.Robb Fix for hot reload info being reported as warnings. #jira UE-30586 Change 2975447 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator? warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects. warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead? warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set. Change 2975478 on 2016/05/12 by Steve.Robb Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings. Change 2975538 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'StaticResource' Change 2976640 on 2016/05/13 by Robert.Manuszewski Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked. #jira UE-30675 Change 2978320 on 2016/05/16 by Steve.Robb Fix for static analysis warnings in XNA headers. Change 2978329 on 2016/05/16 by Steve.Robb Static analysis fixes: warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages. Change 2980222 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2980458 on 2016/05/17 by Chris.Wood Attempt to fix crash report submission problems from CRP to CR website [UE-30257] - Crashreports are sometimes missing file attachments Passing crash GUID so that website can easily check for duplicates in future Increased request timeout for AddCrash to be longer than website database timeout Logging retries for future visibility CRP v.1.1.6 Change 2980639 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2981750 on 2016/05/18 by Steve.Robb check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly. Change 2982106 on 2016/05/18 by John.Mahoney Fixed a crash caused by loading two stat capture files simultaneously in the profiler. If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load. Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId. This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading. Cleaned up some weak pointer usage in the profiler window. #jira UE-30741 Change 2983366 on 2016/05/19 by Steven.Hutton Changes for passing crash type directly from CRP to CRW. Change 2983394 on 2016/05/19 by Steven.Hutton Minor changes to add crash with more error reporting Change 2984685 on 2016/05/20 by Robert.Manuszewski Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core) Change 2985143 on 2016/05/20 by Steve.Robb Missing semi-colons. Change 2986463 on 2016/05/23 by Steve.Robb CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs. Change 2986475 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986476 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986480 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant Change 2986515 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func' Change 2986680 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written. warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func' warning C6031: Return value ignored: 'snprintf'. warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'. Change 2986865 on 2016/05/23 by Robert.Manuszewski Removing redundand AddReferencedObjects functions Change 2987968 on 2016/05/24 by Robert.Manuszewski Removing redundant UPROPERTY macros from intrinsic classes. Change 2987979 on 2016/05/24 by Steve.Robb Optimization of some FString and FPaths operations to produce fewer temporaries. Change 2988297 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2988430 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read. Change 2988461 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Change 2988464 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap. Change 2988494 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects. Change 2989411 on 2016/05/25 by Robert.Manuszewski Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds. Change 2989429 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'. Change 2989982 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6001: Using uninitialized memory 'LODPlanesMin'. Change 2990018 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'X' Change 2990077 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2990114 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent. Change 2990125 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Change 2990162 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. Change 2990193 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did. warning C6011: Dereferencing NULL pointer 'Semantic'. Change 2991006 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered. Change 2991012 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'. Change 2991013 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2991016 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2991017 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2991019 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6292: Ill-defined for-loop: counts up from maximum. Change 2991023 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6322: Empty _except block. warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations. Change 2991070 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did. Change 2991416 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992738 on 2016/05/27 by Steve.Robb Revert changes to FString::MatchesWildcard. Change 2992916 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992960 on 2016/05/27 by Chris.Wood Optimized P4 access in Crash Report Process and MinidumpDiagostics. Change 2992964 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2993956 on 2016/05/30 by Robert.Manuszewski Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload. #jira UE-31309 Change 2993977 on 2016/05/30 by Robert.Manuszewski Don't wait for all packages to finish loading before PostLoading those which already have. Change 2994206 on 2016/05/31 by Robert.Manuszewski PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium) #lockdown Nick.Penwarden [CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
if (NewData)
{
ProfilerDataDelegate.Broadcast( InstanceId, *NewData );
delete NewData;
NewData = nullptr;
}
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
}
}
void FProfilerClientManager::Shutdown()
{
// Delete all active file writers and remove temporary files.
for (auto It = ActiveTransfers.CreateIterator(); It; ++It)
{
FReceivedFileInfo& ReceivedFileInfo = It.Value();
delete ReceivedFileInfo.FileWriter;
ReceivedFileInfo.FileWriter = nullptr;
IFileManager::Get().Delete( *ReceivedFileInfo.DestFilepath );
UE_LOG( LogProfilerClient, Log, TEXT( "File service-client transfer aborted: %s" ), *It.Key() );
}
FTicker::GetCoreTicker().RemoveTicker( MessageDelegateHandle );
FTicker::GetCoreTicker().RemoveTicker( TickDelegateHandle );
}
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057) ========================== MAJOR FEATURES + CHANGES ========================== Change 2975196 on 2016/05/12 by Robert.Manuszewski Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading. - This way we can avoid very long GC times after new blueprints have been loaded. - Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes) Change 2993960 on 2016/05/30 by Robert.Manuszewski Fixing leaked linkers created by blocking load requests during async loading. Change 2959398 on 2016/04/28 by Steve.Robb TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled. #jira UE-20828 Change 2960723 on 2016/04/29 by Graeme.Thornton Fix for texture asset import data being ignored when async loaded Change 2960938 on 2016/04/29 by Robert.Manuszewski Nulling out sql db handle after closing it. Change 2967127 on 2016/05/05 by Steve.Robb Move constructors explicitly disabled in generated code. Change 2967143 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2967164 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer Change 2968650 on 2016/05/06 by Steve.Robb Fix for HotReload copying module manager. Change 2968915 on 2016/05/06 by Robert.Manuszewski Fixing spelling of SetImageIntegrityStatus function name. Change 2970406 on 2016/05/09 by Steve.Robb Static analysis fixes: Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap. Change 2970419 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. warning C6011: Dereferencing NULL pointer '...'. warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read. warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written. Change 2970431 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results. Change 2972032 on 2016/05/10 by Steven.Hutton Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries. Change 2972085 on 2016/05/10 by Steve.Robb Const-correctness fix for FLogCategoryBase::IsSuppressed. Change 2972087 on 2016/05/10 by Steve.Robb ELogVerbosity moved into its own header. Change 2972090 on 2016/05/10 by Steve.Robb Redundant ensure removed. Change 2972103 on 2016/05/10 by Steve.Robb Removal of redundant use of USING_CODE_ANALYSIS. Change 2972139 on 2016/05/10 by Steve.Robb Fix for ensure macros throwing C6326 warnings during static analysis. Change 2972147 on 2016/05/10 by Steve.Robb Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis. Change 2972162 on 2016/05/10 by Steve.Robb SCOPE_CYCLE_COUNTER_GUARD removed. Change 2972168 on 2016/05/10 by Steve.Robb Compile error fix for logOrEnsureNanError in static analysis builds. Change 2973084 on 2016/05/10 by Chris.Wood Crash Report Server performance tweak Change 2974030 on 2016/05/11 by Steve.Robb Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*. Change 2974053 on 2016/05/11 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2974191 on 2016/05/11 by Steve.Robb Fix for template instantiation error in VS2013. Change 2975298 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2975318 on 2016/05/12 by Steve.Robb Fix for hot reload info being reported as warnings. #jira UE-30586 Change 2975447 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator? warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects. warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead? warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set. Change 2975478 on 2016/05/12 by Steve.Robb Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings. Change 2975538 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'StaticResource' Change 2976640 on 2016/05/13 by Robert.Manuszewski Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked. #jira UE-30675 Change 2978320 on 2016/05/16 by Steve.Robb Fix for static analysis warnings in XNA headers. Change 2978329 on 2016/05/16 by Steve.Robb Static analysis fixes: warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages. Change 2980222 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2980458 on 2016/05/17 by Chris.Wood Attempt to fix crash report submission problems from CRP to CR website [UE-30257] - Crashreports are sometimes missing file attachments Passing crash GUID so that website can easily check for duplicates in future Increased request timeout for AddCrash to be longer than website database timeout Logging retries for future visibility CRP v.1.1.6 Change 2980639 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2981750 on 2016/05/18 by Steve.Robb check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly. Change 2982106 on 2016/05/18 by John.Mahoney Fixed a crash caused by loading two stat capture files simultaneously in the profiler. If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load. Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId. This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading. Cleaned up some weak pointer usage in the profiler window. #jira UE-30741 Change 2983366 on 2016/05/19 by Steven.Hutton Changes for passing crash type directly from CRP to CRW. Change 2983394 on 2016/05/19 by Steven.Hutton Minor changes to add crash with more error reporting Change 2984685 on 2016/05/20 by Robert.Manuszewski Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core) Change 2985143 on 2016/05/20 by Steve.Robb Missing semi-colons. Change 2986463 on 2016/05/23 by Steve.Robb CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs. Change 2986475 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986476 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986480 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant Change 2986515 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func' Change 2986680 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written. warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func' warning C6031: Return value ignored: 'snprintf'. warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'. Change 2986865 on 2016/05/23 by Robert.Manuszewski Removing redundand AddReferencedObjects functions Change 2987968 on 2016/05/24 by Robert.Manuszewski Removing redundant UPROPERTY macros from intrinsic classes. Change 2987979 on 2016/05/24 by Steve.Robb Optimization of some FString and FPaths operations to produce fewer temporaries. Change 2988297 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2988430 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read. Change 2988461 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Change 2988464 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap. Change 2988494 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects. Change 2989411 on 2016/05/25 by Robert.Manuszewski Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds. Change 2989429 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'. Change 2989982 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6001: Using uninitialized memory 'LODPlanesMin'. Change 2990018 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'X' Change 2990077 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2990114 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent. Change 2990125 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Change 2990162 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. Change 2990193 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did. warning C6011: Dereferencing NULL pointer 'Semantic'. Change 2991006 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered. Change 2991012 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'. Change 2991013 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2991016 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2991017 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2991019 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6292: Ill-defined for-loop: counts up from maximum. Change 2991023 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6322: Empty _except block. warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations. Change 2991070 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did. Change 2991416 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992738 on 2016/05/27 by Steve.Robb Revert changes to FString::MatchesWildcard. Change 2992916 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992960 on 2016/05/27 by Chris.Wood Optimized P4 access in Crash Report Process and MinidumpDiagostics. Change 2992964 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2993956 on 2016/05/30 by Robert.Manuszewski Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload. #jira UE-31309 Change 2993977 on 2016/05/30 by Robert.Manuszewski Don't wait for all packages to finish loading before PostLoading those which already have. Change 2994206 on 2016/05/31 by Robert.Manuszewski PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium) #lockdown Nick.Penwarden [CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
void FProfilerClientManager::FinalizeLoading(const FGuid InstanceId)
{
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057) ========================== MAJOR FEATURES + CHANGES ========================== Change 2975196 on 2016/05/12 by Robert.Manuszewski Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading. - This way we can avoid very long GC times after new blueprints have been loaded. - Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes) Change 2993960 on 2016/05/30 by Robert.Manuszewski Fixing leaked linkers created by blocking load requests during async loading. Change 2959398 on 2016/04/28 by Steve.Robb TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled. #jira UE-20828 Change 2960723 on 2016/04/29 by Graeme.Thornton Fix for texture asset import data being ignored when async loaded Change 2960938 on 2016/04/29 by Robert.Manuszewski Nulling out sql db handle after closing it. Change 2967127 on 2016/05/05 by Steve.Robb Move constructors explicitly disabled in generated code. Change 2967143 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2967164 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer Change 2968650 on 2016/05/06 by Steve.Robb Fix for HotReload copying module manager. Change 2968915 on 2016/05/06 by Robert.Manuszewski Fixing spelling of SetImageIntegrityStatus function name. Change 2970406 on 2016/05/09 by Steve.Robb Static analysis fixes: Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap. Change 2970419 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. warning C6011: Dereferencing NULL pointer '...'. warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read. warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written. Change 2970431 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results. Change 2972032 on 2016/05/10 by Steven.Hutton Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries. Change 2972085 on 2016/05/10 by Steve.Robb Const-correctness fix for FLogCategoryBase::IsSuppressed. Change 2972087 on 2016/05/10 by Steve.Robb ELogVerbosity moved into its own header. Change 2972090 on 2016/05/10 by Steve.Robb Redundant ensure removed. Change 2972103 on 2016/05/10 by Steve.Robb Removal of redundant use of USING_CODE_ANALYSIS. Change 2972139 on 2016/05/10 by Steve.Robb Fix for ensure macros throwing C6326 warnings during static analysis. Change 2972147 on 2016/05/10 by Steve.Robb Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis. Change 2972162 on 2016/05/10 by Steve.Robb SCOPE_CYCLE_COUNTER_GUARD removed. Change 2972168 on 2016/05/10 by Steve.Robb Compile error fix for logOrEnsureNanError in static analysis builds. Change 2973084 on 2016/05/10 by Chris.Wood Crash Report Server performance tweak Change 2974030 on 2016/05/11 by Steve.Robb Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*. Change 2974053 on 2016/05/11 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2974191 on 2016/05/11 by Steve.Robb Fix for template instantiation error in VS2013. Change 2975298 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2975318 on 2016/05/12 by Steve.Robb Fix for hot reload info being reported as warnings. #jira UE-30586 Change 2975447 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator? warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects. warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead? warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set. Change 2975478 on 2016/05/12 by Steve.Robb Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings. Change 2975538 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'StaticResource' Change 2976640 on 2016/05/13 by Robert.Manuszewski Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked. #jira UE-30675 Change 2978320 on 2016/05/16 by Steve.Robb Fix for static analysis warnings in XNA headers. Change 2978329 on 2016/05/16 by Steve.Robb Static analysis fixes: warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages. Change 2980222 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2980458 on 2016/05/17 by Chris.Wood Attempt to fix crash report submission problems from CRP to CR website [UE-30257] - Crashreports are sometimes missing file attachments Passing crash GUID so that website can easily check for duplicates in future Increased request timeout for AddCrash to be longer than website database timeout Logging retries for future visibility CRP v.1.1.6 Change 2980639 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2981750 on 2016/05/18 by Steve.Robb check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly. Change 2982106 on 2016/05/18 by John.Mahoney Fixed a crash caused by loading two stat capture files simultaneously in the profiler. If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load. Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId. This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading. Cleaned up some weak pointer usage in the profiler window. #jira UE-30741 Change 2983366 on 2016/05/19 by Steven.Hutton Changes for passing crash type directly from CRP to CRW. Change 2983394 on 2016/05/19 by Steven.Hutton Minor changes to add crash with more error reporting Change 2984685 on 2016/05/20 by Robert.Manuszewski Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core) Change 2985143 on 2016/05/20 by Steve.Robb Missing semi-colons. Change 2986463 on 2016/05/23 by Steve.Robb CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs. Change 2986475 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986476 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986480 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant Change 2986515 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func' Change 2986680 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written. warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func' warning C6031: Return value ignored: 'snprintf'. warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'. Change 2986865 on 2016/05/23 by Robert.Manuszewski Removing redundand AddReferencedObjects functions Change 2987968 on 2016/05/24 by Robert.Manuszewski Removing redundant UPROPERTY macros from intrinsic classes. Change 2987979 on 2016/05/24 by Steve.Robb Optimization of some FString and FPaths operations to produce fewer temporaries. Change 2988297 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2988430 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read. Change 2988461 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Change 2988464 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap. Change 2988494 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects. Change 2989411 on 2016/05/25 by Robert.Manuszewski Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds. Change 2989429 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'. Change 2989982 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6001: Using uninitialized memory 'LODPlanesMin'. Change 2990018 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'X' Change 2990077 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2990114 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent. Change 2990125 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Change 2990162 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. Change 2990193 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did. warning C6011: Dereferencing NULL pointer 'Semantic'. Change 2991006 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered. Change 2991012 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'. Change 2991013 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2991016 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2991017 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2991019 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6292: Ill-defined for-loop: counts up from maximum. Change 2991023 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6322: Empty _except block. warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations. Change 2991070 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did. Change 2991416 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992738 on 2016/05/27 by Steve.Robb Revert changes to FString::MatchesWildcard. Change 2992916 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992960 on 2016/05/27 by Chris.Wood Optimized P4 access in Crash Report Process and MinidumpDiagostics. Change 2992964 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2993956 on 2016/05/30 by Robert.Manuszewski Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload. #jira UE-31309 Change 2993977 on 2016/05/30 by Robert.Manuszewski Don't wait for all packages to finish loading before PostLoading those which already have. Change 2994206 on 2016/05/31 by Robert.Manuszewski PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium) #lockdown Nick.Penwarden [CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
if (Connections.Find(InstanceId) != nullptr)
{
ProfilerLoadCompletedDelegate.Broadcast(InstanceId);
LoadConnection = &Connections.FindChecked(InstanceId);
delete LoadConnection->StatsReader;
LoadConnection->StatsReader = nullptr;
LoadConnection = nullptr;
Connections.Remove(InstanceId);
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057) ========================== MAJOR FEATURES + CHANGES ========================== Change 2975196 on 2016/05/12 by Robert.Manuszewski Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading. - This way we can avoid very long GC times after new blueprints have been loaded. - Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes) Change 2993960 on 2016/05/30 by Robert.Manuszewski Fixing leaked linkers created by blocking load requests during async loading. Change 2959398 on 2016/04/28 by Steve.Robb TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled. #jira UE-20828 Change 2960723 on 2016/04/29 by Graeme.Thornton Fix for texture asset import data being ignored when async loaded Change 2960938 on 2016/04/29 by Robert.Manuszewski Nulling out sql db handle after closing it. Change 2967127 on 2016/05/05 by Steve.Robb Move constructors explicitly disabled in generated code. Change 2967143 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2967164 on 2016/05/05 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer Change 2968650 on 2016/05/06 by Steve.Robb Fix for HotReload copying module manager. Change 2968915 on 2016/05/06 by Robert.Manuszewski Fixing spelling of SetImageIntegrityStatus function name. Change 2970406 on 2016/05/09 by Steve.Robb Static analysis fixes: Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap. Change 2970419 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. warning C6011: Dereferencing NULL pointer '...'. warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read. warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written. Change 2970431 on 2016/05/09 by Steve.Robb Static analysis fixes: warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results. Change 2972032 on 2016/05/10 by Steven.Hutton Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries. Change 2972085 on 2016/05/10 by Steve.Robb Const-correctness fix for FLogCategoryBase::IsSuppressed. Change 2972087 on 2016/05/10 by Steve.Robb ELogVerbosity moved into its own header. Change 2972090 on 2016/05/10 by Steve.Robb Redundant ensure removed. Change 2972103 on 2016/05/10 by Steve.Robb Removal of redundant use of USING_CODE_ANALYSIS. Change 2972139 on 2016/05/10 by Steve.Robb Fix for ensure macros throwing C6326 warnings during static analysis. Change 2972147 on 2016/05/10 by Steve.Robb Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis. Change 2972162 on 2016/05/10 by Steve.Robb SCOPE_CYCLE_COUNTER_GUARD removed. Change 2972168 on 2016/05/10 by Steve.Robb Compile error fix for logOrEnsureNanError in static analysis builds. Change 2973084 on 2016/05/10 by Chris.Wood Crash Report Server performance tweak Change 2974030 on 2016/05/11 by Steve.Robb Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*. Change 2974053 on 2016/05/11 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2974191 on 2016/05/11 by Steve.Robb Fix for template instantiation error in VS2013. Change 2975298 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2975318 on 2016/05/12 by Steve.Robb Fix for hot reload info being reported as warnings. #jira UE-30586 Change 2975447 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator? warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator? warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects. warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead? warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set. Change 2975478 on 2016/05/12 by Steve.Robb Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings. Change 2975538 on 2016/05/12 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'StaticResource' Change 2976640 on 2016/05/13 by Robert.Manuszewski Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked. #jira UE-30675 Change 2978320 on 2016/05/16 by Steve.Robb Fix for static analysis warnings in XNA headers. Change 2978329 on 2016/05/16 by Steve.Robb Static analysis fixes: warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages. Change 2980222 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2980458 on 2016/05/17 by Chris.Wood Attempt to fix crash report submission problems from CRP to CR website [UE-30257] - Crashreports are sometimes missing file attachments Passing crash GUID so that website can easily check for duplicates in future Increased request timeout for AddCrash to be longer than website database timeout Logging retries for future visibility CRP v.1.1.6 Change 2980639 on 2016/05/17 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'X'. warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did. Change 2981750 on 2016/05/18 by Steve.Robb check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly. Change 2982106 on 2016/05/18 by John.Mahoney Fixed a crash caused by loading two stat capture files simultaneously in the profiler. If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load. Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId. This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading. Cleaned up some weak pointer usage in the profiler window. #jira UE-30741 Change 2983366 on 2016/05/19 by Steven.Hutton Changes for passing crash type directly from CRP to CRW. Change 2983394 on 2016/05/19 by Steven.Hutton Minor changes to add crash with more error reporting Change 2984685 on 2016/05/20 by Robert.Manuszewski Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core) Change 2985143 on 2016/05/20 by Steve.Robb Missing semi-colons. Change 2986463 on 2016/05/23 by Steve.Robb CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs. Change 2986475 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986476 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and. Change 2986480 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant Change 2986515 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func' Change 2986680 on 2016/05/23 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written. warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func' warning C6031: Return value ignored: 'snprintf'. warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'. Change 2986865 on 2016/05/23 by Robert.Manuszewski Removing redundand AddReferencedObjects functions Change 2987968 on 2016/05/24 by Robert.Manuszewski Removing redundant UPROPERTY macros from intrinsic classes. Change 2987979 on 2016/05/24 by Steve.Robb Optimization of some FString and FPaths operations to produce fewer temporaries. Change 2988297 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2988430 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read. Change 2988461 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant. warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Change 2988464 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap. Change 2988494 on 2016/05/24 by Steve.Robb Static analysis fixes: warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects. Change 2989411 on 2016/05/25 by Robert.Manuszewski Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds. Change 2989429 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'. Change 2989982 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6001: Using uninitialized memory 'LODPlanesMin'. Change 2990018 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6386: Buffer overrun while writing to 'X' Change 2990077 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2990114 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent. Change 2990125 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Change 2990162 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. Change 2990193 on 2016/05/25 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did. warning C6011: Dereferencing NULL pointer 'Semantic'. Change 2991006 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered. Change 2991012 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'. Change 2991013 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6287: Redundant code: the left and right sub-expressions are identical. Change 2991016 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant. Change 2991017 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6326: Potential comparison of a constant with another constant. Change 2991019 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6292: Ill-defined for-loop: counts up from maximum. Change 2991023 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6322: Empty _except block. warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations. Change 2991070 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did. Change 2991416 on 2016/05/26 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992738 on 2016/05/27 by Steve.Robb Revert changes to FString::MatchesWildcard. Change 2992916 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2992960 on 2016/05/27 by Chris.Wood Optimized P4 access in Crash Report Process and MinidumpDiagostics. Change 2992964 on 2016/05/27 by Steve.Robb Static analysis fixes: warning C6011: Dereferencing NULL pointer 'Ptr'. Change 2993956 on 2016/05/30 by Robert.Manuszewski Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload. #jira UE-31309 Change 2993977 on 2016/05/30 by Robert.Manuszewski Don't wait for all packages to finish loading before PostLoading those which already have. Change 2994206 on 2016/05/31 by Robert.Manuszewski PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium) #lockdown Nick.Penwarden [CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
RetryTime = 5.f;
}
}
void FProfilerClientManager::CancelLoading(const FGuid InstanceId)
{
if (Connections.Find(InstanceId) != nullptr)
{
ProfilerLoadCancelledDelegate.Broadcast(InstanceId);
LoadConnection = &Connections.FindChecked(InstanceId);
delete LoadConnection->StatsReader;
LoadConnection->StatsReader = nullptr;
LoadConnection = nullptr;
Connections.Remove(InstanceId);
}
}
#if STATS
int32 FServiceConnection::FindOrAddStat( const FStatNameAndInfo& StatNameAndInfo, uint32 StatType)
{
SCOPE_CYCLE_COUNTER(STAT_PC_FindOrAddStat);
const FName LongName = StatNameAndInfo.GetRawName();
int32* const StatIDPtr = LongNameToStatID.Find( LongName );
int32 StatID = StatIDPtr != nullptr ? *StatIDPtr : -1;
if (!StatIDPtr)
{
// meta data has been updated
CurrentData.MetaDataUpdated = true;
const FName StatName = StatNameAndInfo.GetShortName();
FName GroupName = StatNameAndInfo.GetGroupName();
Simple and Group Stat Exec commands can now be triggered from the level viewport Show menu directly. #ttp 306334 - ROCKET: TASK: PUNTABLE: Stats: FN: Make diagnostic stats discoverable and available in the UI (don't require console to toggle) #branch UE4 #change DECLARE_STATS_GROUP û Added additional param GroupCategory, for subfolder use in the UI. Fixedup all Stats Group usage so the category is now propagated through where it needs to be. Currently all Group stats have the Category æAdvancedÆ, and all engine stats have the Category æSimpleÆ û this is just to differentiate them for now, better categories will come along in future. Modified FindOrAddMetaData as it now broadcasts a delegate (via a TaskGraph) whenever a new stat meta data is added û this was needed as not all the stat groups are æregisteredÆ when the level viewports are created (they are drip loaded), so the viewports need to listen for any additions thereafter... GroupDescription is displayed as a tooltip in the UI for the stat entry and we may want to localize these. RenderStats & RenderGroupedWithHierarchy: Modified so that it now takes the viewport that it should render to as a param (which is also used to determine if each stat should be visible). Removed StatsEnabled delegate in favour of StatCheckEnabled, StatEnabled, StatDisabled, StatDisableAll for more finite usage and feedback when toggling them. Modified FHUDGroupManager HandleCommand It now uses the new delegates to work out whether it needs to enable or disable for the current viewport, so itÆs more involved than a simple toggle, itÆs more ôis the stat enabled for the current viewport, and is it enabled for any viewportö delegate querying so it can react accordingly. Added struct FSimpleStatFuncs: Which contains info on each æSimple StatÆ such as; name, category, description, renderfunc, togglefunc and the side of the viewport it should be rendered to ExecSimpleStat û Calls Exec for a registered Simple Stat, ensuring the correct viewport is set IsSimpleStat û Checks to see if a stat is a registered Simple Stat or not SetSimpleStat û Sets the state of a specified Simple Stats SetSimpleStats - Sets the state of the specified Simple Stats RenderSimpleStats û Renders the Simple Stats if they are enabled, and have Render functions assigned. Each Exec function had the code it executes which itÆs toggled and rendered into functions Added FStatUnitData & FStatHitchesData: Moved all the globals/static variables used when enabling Stat Unit/Hitches into a struct as itÆs now used by multiple viewports and they needed their own copies. Also moved their draw functions here too. FSceneViewport: SwapStatCommands û Exchanges the enabled stats between two viewports, this is so when PIEing the stats which were enabled on the Level Viewport (if playing in active viewport only) get transposed to the Game Viewport, and then restored when PIE ends. SEditorViewport: ToggleStatCommand û Called when a stat is enabled/disabled from the UI IsStatCommandVisible û Checks to see if a stat command should appear as visible in the UI SEditorViewportViewMenu: GenerateViewMenuContent û Made protected and virtual so it could be called externally. FLevelViewportCommands: Added the code needed to generate commands for each of the Stat menu entries, however because not all stats are registered when this happens, it also creates some delegates to listen out for others that are registered later Destructor û Needed to reset delegates HandleNewGroupStat û Creates the new group stat commands HandleNewStat û Creates the new stat command FindStatIndex û Looks for where a stat should be inserted in the menu in order to maintain alphabetical order SLevelViewport: Modified the code so that the states of all the SimpleStats are saved so they can be restored next time the editor is ran (previously just handled FPS). OnFloatingButtonClicked û Called whenever any of the level viewports floating buttons are clicked in order to correctly set the ælastÆ viewport global OnToggleAllStatCommands û Called when the user selects æHide AllÆ from the viewport. ToggleStatCommand û Called when the user selects any other stat option from the viewport. BindStatCommand û Used to bind the menu action to the command name (used by delegate) Added SLevelEditorViewportViewMenu (extends SEditorViewportViewMenu), and overrode GenerateViewMenuContent so that OnFloatingButtonClicked can be called whenever the menu is clicked on. This is also called during GenerateOptionsMenu, GenerateCameraMenu, GenerateShowMenu & OnToggleMaximize Added global ptr GStatProcessingViewportClient (sim to Current, Last) used to keep track of which viewport the stat should be applied too (only valid within the scope of the Exec call). FViewportClient: Moved global ESoundShowFlags enum list into this class. FCommonViewportClient: Destructor û Needed to reset GStatProcessingViewportClient FLevelEditorViewportClient SetCurrentViewport û moved code responsible for setting the global æcurrentÆ viewport ptr into a func SetLastKeyViewport û moved the code responsible for settings the global ælastÆ viewport ptr into a func UGameViewportClient: Destructor û Needed to cleanup delegate usage. FViewportClient & FLevelEditorViewportClient & UGameViewportClient* GetStatUnitData û The viewports copy of the variables needed when running the Stat Unit Exec GetStatHitchesData û The viewports copy of the variables needed when running the Stat Hitches Exec GetEnabledStats û Gets a list of all the stats which are enabled for the viewport SetEnabledStats û Sets a list of all the stats which should be enabled for the viewport IsStatEnabled û Checks to see if a specific stat is enabled for the viewport SetStatEnabled û Sets a specifics stats state to enabled or disabled GetSoundShowFlags û Gets which flags are enabled for the Stat Sounds Exec SetSoundShowFlags û Sets which flags are enabled for the Stat Sounds Exec HandleViewportStatCheckEnabled (delegate) û checks to see if a specific stat is enabled on this viewport HandleViewportStatEnabled (delegate) û enables a specific stat for the viewport HandleViewportStatDisabled (delegate) û disables a specific stat for the viewport HandleViewportStatDisableAll (delegate) û disables all stats for the viewport *FViewportClient has dummy virtual funcs and LevelEditor/Game both have the same implementations, the only differences is the GameViewports member variables are static so that the stat info persists between runs. FLevelEditorViewportInstanceSettings deprecated bShowFPS in favour of an EnabledStats array (so we can track the state of all stats, not just FPS). Added new config var bSaveSimpleStats: if enabled, restores previously enabled level viewport simple stats the next time the editor runs (defaults to false). Modified FillShowFlagMenu so that thereÆs just one func and you specify where (if any) youÆd like a separator to occur. Added FillShowStatsSubMenus so that menus can be generated which have submenus Added the Stats sub menu to the View menu Modified Execs so that the GStatProcessingViewportClient is set to the correct default viewport (if it wasnÆt specified), and clears again after itÆs been processed HandleStatCommand now takes World and ViewportClient as params too û needed when Execs enabled other Execs so the world/viewport persists. SetAverageUnitTimes û Added as a Setter func for GetAverageUnitTimes (moved code out of Stat Unit renderer and modified so that it only updates once per frame). Stripped out all unneeded globals [CL 2058522 by Andrew Brown in Main branch]
2014-04-29 04:04:27 -04:00
const FString Description = StatNameAndInfo.GetDescription();
// do some special stats first
if (StatName == TEXT("STAT_FrameTime"))
{
StatID = LongNameToStatID.Add(LongName, 2);
}
else if (StatName == FStatConstants::NAME_ThreadRoot)
{
StatID = LongNameToStatID.Add(LongName, 1);
GroupName = TEXT( "NoGroup" );
}
else
{
StatID = LongNameToStatID.Add(LongName, LongNameToStatID.Num()+10);
}
check(StatID != -1);
// add a new stat description to the meta data
FStatDescription StatDescription;
StatDescription.ID = StatID;
Simple and Group Stat Exec commands can now be triggered from the level viewport Show menu directly. #ttp 306334 - ROCKET: TASK: PUNTABLE: Stats: FN: Make diagnostic stats discoverable and available in the UI (don't require console to toggle) #branch UE4 #change DECLARE_STATS_GROUP û Added additional param GroupCategory, for subfolder use in the UI. Fixedup all Stats Group usage so the category is now propagated through where it needs to be. Currently all Group stats have the Category æAdvancedÆ, and all engine stats have the Category æSimpleÆ û this is just to differentiate them for now, better categories will come along in future. Modified FindOrAddMetaData as it now broadcasts a delegate (via a TaskGraph) whenever a new stat meta data is added û this was needed as not all the stat groups are æregisteredÆ when the level viewports are created (they are drip loaded), so the viewports need to listen for any additions thereafter... GroupDescription is displayed as a tooltip in the UI for the stat entry and we may want to localize these. RenderStats & RenderGroupedWithHierarchy: Modified so that it now takes the viewport that it should render to as a param (which is also used to determine if each stat should be visible). Removed StatsEnabled delegate in favour of StatCheckEnabled, StatEnabled, StatDisabled, StatDisableAll for more finite usage and feedback when toggling them. Modified FHUDGroupManager HandleCommand It now uses the new delegates to work out whether it needs to enable or disable for the current viewport, so itÆs more involved than a simple toggle, itÆs more ôis the stat enabled for the current viewport, and is it enabled for any viewportö delegate querying so it can react accordingly. Added struct FSimpleStatFuncs: Which contains info on each æSimple StatÆ such as; name, category, description, renderfunc, togglefunc and the side of the viewport it should be rendered to ExecSimpleStat û Calls Exec for a registered Simple Stat, ensuring the correct viewport is set IsSimpleStat û Checks to see if a stat is a registered Simple Stat or not SetSimpleStat û Sets the state of a specified Simple Stats SetSimpleStats - Sets the state of the specified Simple Stats RenderSimpleStats û Renders the Simple Stats if they are enabled, and have Render functions assigned. Each Exec function had the code it executes which itÆs toggled and rendered into functions Added FStatUnitData & FStatHitchesData: Moved all the globals/static variables used when enabling Stat Unit/Hitches into a struct as itÆs now used by multiple viewports and they needed their own copies. Also moved their draw functions here too. FSceneViewport: SwapStatCommands û Exchanges the enabled stats between two viewports, this is so when PIEing the stats which were enabled on the Level Viewport (if playing in active viewport only) get transposed to the Game Viewport, and then restored when PIE ends. SEditorViewport: ToggleStatCommand û Called when a stat is enabled/disabled from the UI IsStatCommandVisible û Checks to see if a stat command should appear as visible in the UI SEditorViewportViewMenu: GenerateViewMenuContent û Made protected and virtual so it could be called externally. FLevelViewportCommands: Added the code needed to generate commands for each of the Stat menu entries, however because not all stats are registered when this happens, it also creates some delegates to listen out for others that are registered later Destructor û Needed to reset delegates HandleNewGroupStat û Creates the new group stat commands HandleNewStat û Creates the new stat command FindStatIndex û Looks for where a stat should be inserted in the menu in order to maintain alphabetical order SLevelViewport: Modified the code so that the states of all the SimpleStats are saved so they can be restored next time the editor is ran (previously just handled FPS). OnFloatingButtonClicked û Called whenever any of the level viewports floating buttons are clicked in order to correctly set the ælastÆ viewport global OnToggleAllStatCommands û Called when the user selects æHide AllÆ from the viewport. ToggleStatCommand û Called when the user selects any other stat option from the viewport. BindStatCommand û Used to bind the menu action to the command name (used by delegate) Added SLevelEditorViewportViewMenu (extends SEditorViewportViewMenu), and overrode GenerateViewMenuContent so that OnFloatingButtonClicked can be called whenever the menu is clicked on. This is also called during GenerateOptionsMenu, GenerateCameraMenu, GenerateShowMenu & OnToggleMaximize Added global ptr GStatProcessingViewportClient (sim to Current, Last) used to keep track of which viewport the stat should be applied too (only valid within the scope of the Exec call). FViewportClient: Moved global ESoundShowFlags enum list into this class. FCommonViewportClient: Destructor û Needed to reset GStatProcessingViewportClient FLevelEditorViewportClient SetCurrentViewport û moved code responsible for setting the global æcurrentÆ viewport ptr into a func SetLastKeyViewport û moved the code responsible for settings the global ælastÆ viewport ptr into a func UGameViewportClient: Destructor û Needed to cleanup delegate usage. FViewportClient & FLevelEditorViewportClient & UGameViewportClient* GetStatUnitData û The viewports copy of the variables needed when running the Stat Unit Exec GetStatHitchesData û The viewports copy of the variables needed when running the Stat Hitches Exec GetEnabledStats û Gets a list of all the stats which are enabled for the viewport SetEnabledStats û Sets a list of all the stats which should be enabled for the viewport IsStatEnabled û Checks to see if a specific stat is enabled for the viewport SetStatEnabled û Sets a specifics stats state to enabled or disabled GetSoundShowFlags û Gets which flags are enabled for the Stat Sounds Exec SetSoundShowFlags û Sets which flags are enabled for the Stat Sounds Exec HandleViewportStatCheckEnabled (delegate) û checks to see if a specific stat is enabled on this viewport HandleViewportStatEnabled (delegate) û enables a specific stat for the viewport HandleViewportStatDisabled (delegate) û disables a specific stat for the viewport HandleViewportStatDisableAll (delegate) û disables all stats for the viewport *FViewportClient has dummy virtual funcs and LevelEditor/Game both have the same implementations, the only differences is the GameViewports member variables are static so that the stat info persists between runs. FLevelEditorViewportInstanceSettings deprecated bShowFPS in favour of an EnabledStats array (so we can track the state of all stats, not just FPS). Added new config var bSaveSimpleStats: if enabled, restores previously enabled level viewport simple stats the next time the editor runs (defaults to false). Modified FillShowFlagMenu so that thereÆs just one func and you specify where (if any) youÆd like a separator to occur. Added FillShowStatsSubMenus so that menus can be generated which have submenus Added the Stats sub menu to the View menu Modified Execs so that the GStatProcessingViewportClient is set to the correct default viewport (if it wasnÆt specified), and clears again after itÆs been processed HandleStatCommand now takes World and ViewportClient as params too û needed when Execs enabled other Execs so the world/viewport persists. SetAverageUnitTimes û Added as a Setter func for GetAverageUnitTimes (moved code out of Stat Unit renderer and modified so that it only updates once per frame). Stripped out all unneeded globals [CL 2058522 by Andrew Brown in Main branch]
2014-04-29 04:04:27 -04:00
StatDescription.Name = !Description.IsEmpty() ? Description : StatName.ToString();
if( StatDescription.Name.Contains( TEXT("STAT_") ) )
{
StatDescription.Name = StatDescription.Name.RightChop(FString(TEXT("STAT_")).Len());
}
StatDescription.StatType = StatType;
if( GroupName == NAME_None && Stream.Header.Version == EStatMagicNoHeader::NO_VERSION )
{
// @todo Add more ways to group the stats.
const int32 Thread_Pos = StatDescription.Name.Find( TEXT("Thread_") );
const int32 _0Pos = StatDescription.Name.Find( TEXT("_0") );
const bool bIsThread = Thread_Pos != INDEX_NONE && _0Pos > Thread_Pos;
// Add a special group for all threads.
if( bIsThread )
{
GroupName = TEXT("Threads");
}
// Add a special group for all objects.
else
{
GroupName = TEXT("Objects");
}
}
int32* const GroupIDPtr = GroupNameArray.Find( GroupName );
int32 GroupID = GroupIDPtr != nullptr ? *GroupIDPtr : -1;
if( !GroupIDPtr )
{
// add a new group description to the meta data
GroupID = GroupNameArray.Add(GroupName, GroupNameArray.Num()+10);
check( GroupID != -1 );
FStatGroupDescription GroupDescription;
GroupDescription.ID = GroupID;
GroupDescription.Name = GroupName.ToString();
Simple and Group Stat Exec commands can now be triggered from the level viewport Show menu directly. #ttp 306334 - ROCKET: TASK: PUNTABLE: Stats: FN: Make diagnostic stats discoverable and available in the UI (don't require console to toggle) #branch UE4 #change DECLARE_STATS_GROUP û Added additional param GroupCategory, for subfolder use in the UI. Fixedup all Stats Group usage so the category is now propagated through where it needs to be. Currently all Group stats have the Category æAdvancedÆ, and all engine stats have the Category æSimpleÆ û this is just to differentiate them for now, better categories will come along in future. Modified FindOrAddMetaData as it now broadcasts a delegate (via a TaskGraph) whenever a new stat meta data is added û this was needed as not all the stat groups are æregisteredÆ when the level viewports are created (they are drip loaded), so the viewports need to listen for any additions thereafter... GroupDescription is displayed as a tooltip in the UI for the stat entry and we may want to localize these. RenderStats & RenderGroupedWithHierarchy: Modified so that it now takes the viewport that it should render to as a param (which is also used to determine if each stat should be visible). Removed StatsEnabled delegate in favour of StatCheckEnabled, StatEnabled, StatDisabled, StatDisableAll for more finite usage and feedback when toggling them. Modified FHUDGroupManager HandleCommand It now uses the new delegates to work out whether it needs to enable or disable for the current viewport, so itÆs more involved than a simple toggle, itÆs more ôis the stat enabled for the current viewport, and is it enabled for any viewportö delegate querying so it can react accordingly. Added struct FSimpleStatFuncs: Which contains info on each æSimple StatÆ such as; name, category, description, renderfunc, togglefunc and the side of the viewport it should be rendered to ExecSimpleStat û Calls Exec for a registered Simple Stat, ensuring the correct viewport is set IsSimpleStat û Checks to see if a stat is a registered Simple Stat or not SetSimpleStat û Sets the state of a specified Simple Stats SetSimpleStats - Sets the state of the specified Simple Stats RenderSimpleStats û Renders the Simple Stats if they are enabled, and have Render functions assigned. Each Exec function had the code it executes which itÆs toggled and rendered into functions Added FStatUnitData & FStatHitchesData: Moved all the globals/static variables used when enabling Stat Unit/Hitches into a struct as itÆs now used by multiple viewports and they needed their own copies. Also moved their draw functions here too. FSceneViewport: SwapStatCommands û Exchanges the enabled stats between two viewports, this is so when PIEing the stats which were enabled on the Level Viewport (if playing in active viewport only) get transposed to the Game Viewport, and then restored when PIE ends. SEditorViewport: ToggleStatCommand û Called when a stat is enabled/disabled from the UI IsStatCommandVisible û Checks to see if a stat command should appear as visible in the UI SEditorViewportViewMenu: GenerateViewMenuContent û Made protected and virtual so it could be called externally. FLevelViewportCommands: Added the code needed to generate commands for each of the Stat menu entries, however because not all stats are registered when this happens, it also creates some delegates to listen out for others that are registered later Destructor û Needed to reset delegates HandleNewGroupStat û Creates the new group stat commands HandleNewStat û Creates the new stat command FindStatIndex û Looks for where a stat should be inserted in the menu in order to maintain alphabetical order SLevelViewport: Modified the code so that the states of all the SimpleStats are saved so they can be restored next time the editor is ran (previously just handled FPS). OnFloatingButtonClicked û Called whenever any of the level viewports floating buttons are clicked in order to correctly set the ælastÆ viewport global OnToggleAllStatCommands û Called when the user selects æHide AllÆ from the viewport. ToggleStatCommand û Called when the user selects any other stat option from the viewport. BindStatCommand û Used to bind the menu action to the command name (used by delegate) Added SLevelEditorViewportViewMenu (extends SEditorViewportViewMenu), and overrode GenerateViewMenuContent so that OnFloatingButtonClicked can be called whenever the menu is clicked on. This is also called during GenerateOptionsMenu, GenerateCameraMenu, GenerateShowMenu & OnToggleMaximize Added global ptr GStatProcessingViewportClient (sim to Current, Last) used to keep track of which viewport the stat should be applied too (only valid within the scope of the Exec call). FViewportClient: Moved global ESoundShowFlags enum list into this class. FCommonViewportClient: Destructor û Needed to reset GStatProcessingViewportClient FLevelEditorViewportClient SetCurrentViewport û moved code responsible for setting the global æcurrentÆ viewport ptr into a func SetLastKeyViewport û moved the code responsible for settings the global ælastÆ viewport ptr into a func UGameViewportClient: Destructor û Needed to cleanup delegate usage. FViewportClient & FLevelEditorViewportClient & UGameViewportClient* GetStatUnitData û The viewports copy of the variables needed when running the Stat Unit Exec GetStatHitchesData û The viewports copy of the variables needed when running the Stat Hitches Exec GetEnabledStats û Gets a list of all the stats which are enabled for the viewport SetEnabledStats û Sets a list of all the stats which should be enabled for the viewport IsStatEnabled û Checks to see if a specific stat is enabled for the viewport SetStatEnabled û Sets a specifics stats state to enabled or disabled GetSoundShowFlags û Gets which flags are enabled for the Stat Sounds Exec SetSoundShowFlags û Sets which flags are enabled for the Stat Sounds Exec HandleViewportStatCheckEnabled (delegate) û checks to see if a specific stat is enabled on this viewport HandleViewportStatEnabled (delegate) û enables a specific stat for the viewport HandleViewportStatDisabled (delegate) û disables a specific stat for the viewport HandleViewportStatDisableAll (delegate) û disables all stats for the viewport *FViewportClient has dummy virtual funcs and LevelEditor/Game both have the same implementations, the only differences is the GameViewports member variables are static so that the stat info persists between runs. FLevelEditorViewportInstanceSettings deprecated bShowFPS in favour of an EnabledStats array (so we can track the state of all stats, not just FPS). Added new config var bSaveSimpleStats: if enabled, restores previously enabled level viewport simple stats the next time the editor runs (defaults to false). Modified FillShowFlagMenu so that thereÆs just one func and you specify where (if any) youÆd like a separator to occur. Added FillShowStatsSubMenus so that menus can be generated which have submenus Added the Stats sub menu to the View menu Modified Execs so that the GStatProcessingViewportClient is set to the correct default viewport (if it wasnÆt specified), and clears again after itÆs been processed HandleStatCommand now takes World and ViewportClient as params too û needed when Execs enabled other Execs so the world/viewport persists. SetAverageUnitTimes û Added as a Setter func for GetAverageUnitTimes (moved code out of Stat Unit renderer and modified so that it only updates once per frame). Stripped out all unneeded globals [CL 2058522 by Andrew Brown in Main branch]
2014-04-29 04:04:27 -04:00
GroupDescription.Name.RemoveFromStart(TEXT("STATGROUP_"));
// add to the meta data
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
StatMetaData.GroupDescriptions.Add(GroupDescription.ID, GroupDescription);
}
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
StatDescription.GroupID = GroupID;
StatMetaData.StatDescriptions.Add(StatDescription.ID, StatDescription);
}
// return the stat id
return StatID;
}
int32 FServiceConnection::FindOrAddThread(const FStatNameAndInfo& Thread)
{
SCOPE_CYCLE_COUNTER(STAT_PC_FindOrAddThread);
Simple and Group Stat Exec commands can now be triggered from the level viewport Show menu directly. #ttp 306334 - ROCKET: TASK: PUNTABLE: Stats: FN: Make diagnostic stats discoverable and available in the UI (don't require console to toggle) #branch UE4 #change DECLARE_STATS_GROUP û Added additional param GroupCategory, for subfolder use in the UI. Fixedup all Stats Group usage so the category is now propagated through where it needs to be. Currently all Group stats have the Category æAdvancedÆ, and all engine stats have the Category æSimpleÆ û this is just to differentiate them for now, better categories will come along in future. Modified FindOrAddMetaData as it now broadcasts a delegate (via a TaskGraph) whenever a new stat meta data is added û this was needed as not all the stat groups are æregisteredÆ when the level viewports are created (they are drip loaded), so the viewports need to listen for any additions thereafter... GroupDescription is displayed as a tooltip in the UI for the stat entry and we may want to localize these. RenderStats & RenderGroupedWithHierarchy: Modified so that it now takes the viewport that it should render to as a param (which is also used to determine if each stat should be visible). Removed StatsEnabled delegate in favour of StatCheckEnabled, StatEnabled, StatDisabled, StatDisableAll for more finite usage and feedback when toggling them. Modified FHUDGroupManager HandleCommand It now uses the new delegates to work out whether it needs to enable or disable for the current viewport, so itÆs more involved than a simple toggle, itÆs more ôis the stat enabled for the current viewport, and is it enabled for any viewportö delegate querying so it can react accordingly. Added struct FSimpleStatFuncs: Which contains info on each æSimple StatÆ such as; name, category, description, renderfunc, togglefunc and the side of the viewport it should be rendered to ExecSimpleStat û Calls Exec for a registered Simple Stat, ensuring the correct viewport is set IsSimpleStat û Checks to see if a stat is a registered Simple Stat or not SetSimpleStat û Sets the state of a specified Simple Stats SetSimpleStats - Sets the state of the specified Simple Stats RenderSimpleStats û Renders the Simple Stats if they are enabled, and have Render functions assigned. Each Exec function had the code it executes which itÆs toggled and rendered into functions Added FStatUnitData & FStatHitchesData: Moved all the globals/static variables used when enabling Stat Unit/Hitches into a struct as itÆs now used by multiple viewports and they needed their own copies. Also moved their draw functions here too. FSceneViewport: SwapStatCommands û Exchanges the enabled stats between two viewports, this is so when PIEing the stats which were enabled on the Level Viewport (if playing in active viewport only) get transposed to the Game Viewport, and then restored when PIE ends. SEditorViewport: ToggleStatCommand û Called when a stat is enabled/disabled from the UI IsStatCommandVisible û Checks to see if a stat command should appear as visible in the UI SEditorViewportViewMenu: GenerateViewMenuContent û Made protected and virtual so it could be called externally. FLevelViewportCommands: Added the code needed to generate commands for each of the Stat menu entries, however because not all stats are registered when this happens, it also creates some delegates to listen out for others that are registered later Destructor û Needed to reset delegates HandleNewGroupStat û Creates the new group stat commands HandleNewStat û Creates the new stat command FindStatIndex û Looks for where a stat should be inserted in the menu in order to maintain alphabetical order SLevelViewport: Modified the code so that the states of all the SimpleStats are saved so they can be restored next time the editor is ran (previously just handled FPS). OnFloatingButtonClicked û Called whenever any of the level viewports floating buttons are clicked in order to correctly set the ælastÆ viewport global OnToggleAllStatCommands û Called when the user selects æHide AllÆ from the viewport. ToggleStatCommand û Called when the user selects any other stat option from the viewport. BindStatCommand û Used to bind the menu action to the command name (used by delegate) Added SLevelEditorViewportViewMenu (extends SEditorViewportViewMenu), and overrode GenerateViewMenuContent so that OnFloatingButtonClicked can be called whenever the menu is clicked on. This is also called during GenerateOptionsMenu, GenerateCameraMenu, GenerateShowMenu & OnToggleMaximize Added global ptr GStatProcessingViewportClient (sim to Current, Last) used to keep track of which viewport the stat should be applied too (only valid within the scope of the Exec call). FViewportClient: Moved global ESoundShowFlags enum list into this class. FCommonViewportClient: Destructor û Needed to reset GStatProcessingViewportClient FLevelEditorViewportClient SetCurrentViewport û moved code responsible for setting the global æcurrentÆ viewport ptr into a func SetLastKeyViewport û moved the code responsible for settings the global ælastÆ viewport ptr into a func UGameViewportClient: Destructor û Needed to cleanup delegate usage. FViewportClient & FLevelEditorViewportClient & UGameViewportClient* GetStatUnitData û The viewports copy of the variables needed when running the Stat Unit Exec GetStatHitchesData û The viewports copy of the variables needed when running the Stat Hitches Exec GetEnabledStats û Gets a list of all the stats which are enabled for the viewport SetEnabledStats û Sets a list of all the stats which should be enabled for the viewport IsStatEnabled û Checks to see if a specific stat is enabled for the viewport SetStatEnabled û Sets a specifics stats state to enabled or disabled GetSoundShowFlags û Gets which flags are enabled for the Stat Sounds Exec SetSoundShowFlags û Sets which flags are enabled for the Stat Sounds Exec HandleViewportStatCheckEnabled (delegate) û checks to see if a specific stat is enabled on this viewport HandleViewportStatEnabled (delegate) û enables a specific stat for the viewport HandleViewportStatDisabled (delegate) û disables a specific stat for the viewport HandleViewportStatDisableAll (delegate) û disables all stats for the viewport *FViewportClient has dummy virtual funcs and LevelEditor/Game both have the same implementations, the only differences is the GameViewports member variables are static so that the stat info persists between runs. FLevelEditorViewportInstanceSettings deprecated bShowFPS in favour of an EnabledStats array (so we can track the state of all stats, not just FPS). Added new config var bSaveSimpleStats: if enabled, restores previously enabled level viewport simple stats the next time the editor runs (defaults to false). Modified FillShowFlagMenu so that thereÆs just one func and you specify where (if any) youÆd like a separator to occur. Added FillShowStatsSubMenus so that menus can be generated which have submenus Added the Stats sub menu to the View menu Modified Execs so that the GStatProcessingViewportClient is set to the correct default viewport (if it wasnÆt specified), and clears again after itÆs been processed HandleStatCommand now takes World and ViewportClient as params too û needed when Execs enabled other Execs so the world/viewport persists. SetAverageUnitTimes û Added as a Setter func for GetAverageUnitTimes (moved code out of Stat Unit renderer and modified so that it only updates once per frame). Stripped out all unneeded globals [CL 2058522 by Andrew Brown in Main branch]
2014-04-29 04:04:27 -04:00
// The description of a thread group contains the thread id
const FString Desc = Thread.GetDescription();
const uint32 ThreadID = FStatsUtils::ParseThreadID( Desc );
const FName ShortName = Thread.GetShortName();
Simple and Group Stat Exec commands can now be triggered from the level viewport Show menu directly. #ttp 306334 - ROCKET: TASK: PUNTABLE: Stats: FN: Make diagnostic stats discoverable and available in the UI (don't require console to toggle) #branch UE4 #change DECLARE_STATS_GROUP û Added additional param GroupCategory, for subfolder use in the UI. Fixedup all Stats Group usage so the category is now propagated through where it needs to be. Currently all Group stats have the Category æAdvancedÆ, and all engine stats have the Category æSimpleÆ û this is just to differentiate them for now, better categories will come along in future. Modified FindOrAddMetaData as it now broadcasts a delegate (via a TaskGraph) whenever a new stat meta data is added û this was needed as not all the stat groups are æregisteredÆ when the level viewports are created (they are drip loaded), so the viewports need to listen for any additions thereafter... GroupDescription is displayed as a tooltip in the UI for the stat entry and we may want to localize these. RenderStats & RenderGroupedWithHierarchy: Modified so that it now takes the viewport that it should render to as a param (which is also used to determine if each stat should be visible). Removed StatsEnabled delegate in favour of StatCheckEnabled, StatEnabled, StatDisabled, StatDisableAll for more finite usage and feedback when toggling them. Modified FHUDGroupManager HandleCommand It now uses the new delegates to work out whether it needs to enable or disable for the current viewport, so itÆs more involved than a simple toggle, itÆs more ôis the stat enabled for the current viewport, and is it enabled for any viewportö delegate querying so it can react accordingly. Added struct FSimpleStatFuncs: Which contains info on each æSimple StatÆ such as; name, category, description, renderfunc, togglefunc and the side of the viewport it should be rendered to ExecSimpleStat û Calls Exec for a registered Simple Stat, ensuring the correct viewport is set IsSimpleStat û Checks to see if a stat is a registered Simple Stat or not SetSimpleStat û Sets the state of a specified Simple Stats SetSimpleStats - Sets the state of the specified Simple Stats RenderSimpleStats û Renders the Simple Stats if they are enabled, and have Render functions assigned. Each Exec function had the code it executes which itÆs toggled and rendered into functions Added FStatUnitData & FStatHitchesData: Moved all the globals/static variables used when enabling Stat Unit/Hitches into a struct as itÆs now used by multiple viewports and they needed their own copies. Also moved their draw functions here too. FSceneViewport: SwapStatCommands û Exchanges the enabled stats between two viewports, this is so when PIEing the stats which were enabled on the Level Viewport (if playing in active viewport only) get transposed to the Game Viewport, and then restored when PIE ends. SEditorViewport: ToggleStatCommand û Called when a stat is enabled/disabled from the UI IsStatCommandVisible û Checks to see if a stat command should appear as visible in the UI SEditorViewportViewMenu: GenerateViewMenuContent û Made protected and virtual so it could be called externally. FLevelViewportCommands: Added the code needed to generate commands for each of the Stat menu entries, however because not all stats are registered when this happens, it also creates some delegates to listen out for others that are registered later Destructor û Needed to reset delegates HandleNewGroupStat û Creates the new group stat commands HandleNewStat û Creates the new stat command FindStatIndex û Looks for where a stat should be inserted in the menu in order to maintain alphabetical order SLevelViewport: Modified the code so that the states of all the SimpleStats are saved so they can be restored next time the editor is ran (previously just handled FPS). OnFloatingButtonClicked û Called whenever any of the level viewports floating buttons are clicked in order to correctly set the ælastÆ viewport global OnToggleAllStatCommands û Called when the user selects æHide AllÆ from the viewport. ToggleStatCommand û Called when the user selects any other stat option from the viewport. BindStatCommand û Used to bind the menu action to the command name (used by delegate) Added SLevelEditorViewportViewMenu (extends SEditorViewportViewMenu), and overrode GenerateViewMenuContent so that OnFloatingButtonClicked can be called whenever the menu is clicked on. This is also called during GenerateOptionsMenu, GenerateCameraMenu, GenerateShowMenu & OnToggleMaximize Added global ptr GStatProcessingViewportClient (sim to Current, Last) used to keep track of which viewport the stat should be applied too (only valid within the scope of the Exec call). FViewportClient: Moved global ESoundShowFlags enum list into this class. FCommonViewportClient: Destructor û Needed to reset GStatProcessingViewportClient FLevelEditorViewportClient SetCurrentViewport û moved code responsible for setting the global æcurrentÆ viewport ptr into a func SetLastKeyViewport û moved the code responsible for settings the global ælastÆ viewport ptr into a func UGameViewportClient: Destructor û Needed to cleanup delegate usage. FViewportClient & FLevelEditorViewportClient & UGameViewportClient* GetStatUnitData û The viewports copy of the variables needed when running the Stat Unit Exec GetStatHitchesData û The viewports copy of the variables needed when running the Stat Hitches Exec GetEnabledStats û Gets a list of all the stats which are enabled for the viewport SetEnabledStats û Sets a list of all the stats which should be enabled for the viewport IsStatEnabled û Checks to see if a specific stat is enabled for the viewport SetStatEnabled û Sets a specifics stats state to enabled or disabled GetSoundShowFlags û Gets which flags are enabled for the Stat Sounds Exec SetSoundShowFlags û Sets which flags are enabled for the Stat Sounds Exec HandleViewportStatCheckEnabled (delegate) û checks to see if a specific stat is enabled on this viewport HandleViewportStatEnabled (delegate) û enables a specific stat for the viewport HandleViewportStatDisabled (delegate) û disables a specific stat for the viewport HandleViewportStatDisableAll (delegate) û disables all stats for the viewport *FViewportClient has dummy virtual funcs and LevelEditor/Game both have the same implementations, the only differences is the GameViewports member variables are static so that the stat info persists between runs. FLevelEditorViewportInstanceSettings deprecated bShowFPS in favour of an EnabledStats array (so we can track the state of all stats, not just FPS). Added new config var bSaveSimpleStats: if enabled, restores previously enabled level viewport simple stats the next time the editor runs (defaults to false). Modified FillShowFlagMenu so that thereÆs just one func and you specify where (if any) youÆd like a separator to occur. Added FillShowStatsSubMenus so that menus can be generated which have submenus Added the Stats sub menu to the View menu Modified Execs so that the GStatProcessingViewportClient is set to the correct default viewport (if it wasnÆt specified), and clears again after itÆs been processed HandleStatCommand now takes World and ViewportClient as params too û needed when Execs enabled other Execs so the world/viewport persists. SetAverageUnitTimes û Added as a Setter func for GetAverageUnitTimes (moved code out of Stat Unit renderer and modified so that it only updates once per frame). Stripped out all unneeded globals [CL 2058522 by Andrew Brown in Main branch]
2014-04-29 04:04:27 -04:00
// add to the meta data
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
const int32 OldNum = StatMetaData.ThreadDescriptions.Num();
StatMetaData.ThreadDescriptions.Add( ThreadID, ShortName.ToString() );
const int32 NewNum = StatMetaData.ThreadDescriptions.Num();
// meta data has been updated
CurrentData.MetaDataUpdated = CurrentData.MetaDataUpdated || OldNum != NewNum;
return ThreadID;
}
void FServiceConnection::GenerateAccumulators(TArray<FStatMessage>& Stats, TArray<FProfilerCountAccumulator>& CountAccumulators, TArray<FProfilerFloatAccumulator>& FloatAccumulators)
{
SCOPE_CYCLE_COUNTER(STAT_PC_GenerateAccumulator)
for (int32 Index = 0; Index < Stats.Num(); ++Index)
{
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2717513 on 2015/10/06 by Robert.Manuszewski@Robert_Manuszewski_EGUK_M1 GC and WeakObjectPtr performance optimizations. - Moved some of the EObjectFlags to EInternalObjectFlags and merged them with FUObjectArray - Moved WeakObjectPtr serial numbersto FUObjectArray - Added pre-allocated UObject array Change 2716517 on 2015/10/05 by Robert.Manuszewski@Robert_Manuszewski_EGUK_M1 Make SavePackage thread safe UObject-wise so that StaticFindObject etc can't run in parallel when packages are being saved. Change 2721142 on 2015/10/08 by Mikolaj.Sieluzycki@Dev-Core_D0920 UHT will now use makefiles to speed up iterative runs. Change 2726320 on 2015/10/13 by Jaroslaw.Palczynski@jaroslaw.palczynski_D1732_2963 Hot-reload performance optimizations: 1. Got rid of redundant touched BPs optimization (which was necessary before major HR fixes submitted earlier). 2. Parallelized search for old CDOs referencers. Change 2759032 on 2015/11/09 by Graeme.Thornton@GThornton_DesktopMaster Dependency preloading improvements - Asset registry dependencies now resolve asset redirectors - Rearrange runtime loading to put dependency preloads within BeginLoad/EndLoad for the source package Change 2754342 on 2015/11/04 by Robert.Manuszewski@Robert_Manuszewski_Stream1 Allow UnfocusedVolumeMultiplier to be set programmatically Change 2764008 on 2015/11/12 by Robert.Manuszewski@Robert_Manuszewski_Stream1 When cooking, don't add imports that are outers of objects excluded from the current cook target. Change 2755562 on 2015/11/05 by Steve.Robb@Dev-Core Inline storage for TFunction. Fix for delegate inline storage on Win64. Some build fixes. Visualizer fixes for new TFunction format. Change 2735084 on 2015/10/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReporter Web - Search by Platform Added initial support for streams (GetBranchesAsListItems, CopyToJira) Change 2762387 on 2015/11/11 by Steve.Robb@Dev-Core Unnecessary allocation removed when loading empty files in FFileHelper::LoadFileToString. Change 2762632 on 2015/11/11 by Steve.Robb@Dev-Core Some TSet function optimisations: Avoiding unnecessary hashing of function arguments if the container is empty (rather than the hash being empty, which is not necessarily equivalent). Taking local copies of HashSize during iterations. Change 2762936 on 2015/11/11 by Steve.Robb@Dev-Core BulkData zero byte allocations are now handled by an RAII object which owns the memory. Change 2765758 on 2015/11/13 by Steve.Robb@Dev-Core FName::operator== and != optimised to be a single comparison. Change 2757195 on 2015/11/06 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1305: Improvements in CrashReporter for Symbol Server usage (Contributed by bozaro) Change 2760778 on 2015/11/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1725: Fixed typos in ProfilerCommon.h; Added comments (Contributed by BGR360) Also fixed starting condition. Change 2739804 on 2015/10/23 by Robert.Manuszewski@Robert_Manuszewski_Stream1 PR #1470: [UObjectGlobals] Do not overwrite instanced subobjects with ones from CDO (Contributed by slonopotamus) Change 2744733 on 2015/10/28 by Steve.Robb@Dev-Core PR #1540 - Specifying a different Saved folder at launch through a command line parameter Integrated and optimized. #lockdown Nick.Penwarden [CL 2772222 by Robert Manuszewski in Main branch]
2015-11-18 16:20:49 -05:00
const FStatMessage& StatMessage = Stats[Index];
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2717513 on 2015/10/06 by Robert.Manuszewski@Robert_Manuszewski_EGUK_M1 GC and WeakObjectPtr performance optimizations. - Moved some of the EObjectFlags to EInternalObjectFlags and merged them with FUObjectArray - Moved WeakObjectPtr serial numbersto FUObjectArray - Added pre-allocated UObject array Change 2716517 on 2015/10/05 by Robert.Manuszewski@Robert_Manuszewski_EGUK_M1 Make SavePackage thread safe UObject-wise so that StaticFindObject etc can't run in parallel when packages are being saved. Change 2721142 on 2015/10/08 by Mikolaj.Sieluzycki@Dev-Core_D0920 UHT will now use makefiles to speed up iterative runs. Change 2726320 on 2015/10/13 by Jaroslaw.Palczynski@jaroslaw.palczynski_D1732_2963 Hot-reload performance optimizations: 1. Got rid of redundant touched BPs optimization (which was necessary before major HR fixes submitted earlier). 2. Parallelized search for old CDOs referencers. Change 2759032 on 2015/11/09 by Graeme.Thornton@GThornton_DesktopMaster Dependency preloading improvements - Asset registry dependencies now resolve asset redirectors - Rearrange runtime loading to put dependency preloads within BeginLoad/EndLoad for the source package Change 2754342 on 2015/11/04 by Robert.Manuszewski@Robert_Manuszewski_Stream1 Allow UnfocusedVolumeMultiplier to be set programmatically Change 2764008 on 2015/11/12 by Robert.Manuszewski@Robert_Manuszewski_Stream1 When cooking, don't add imports that are outers of objects excluded from the current cook target. Change 2755562 on 2015/11/05 by Steve.Robb@Dev-Core Inline storage for TFunction. Fix for delegate inline storage on Win64. Some build fixes. Visualizer fixes for new TFunction format. Change 2735084 on 2015/10/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReporter Web - Search by Platform Added initial support for streams (GetBranchesAsListItems, CopyToJira) Change 2762387 on 2015/11/11 by Steve.Robb@Dev-Core Unnecessary allocation removed when loading empty files in FFileHelper::LoadFileToString. Change 2762632 on 2015/11/11 by Steve.Robb@Dev-Core Some TSet function optimisations: Avoiding unnecessary hashing of function arguments if the container is empty (rather than the hash being empty, which is not necessarily equivalent). Taking local copies of HashSize during iterations. Change 2762936 on 2015/11/11 by Steve.Robb@Dev-Core BulkData zero byte allocations are now handled by an RAII object which owns the memory. Change 2765758 on 2015/11/13 by Steve.Robb@Dev-Core FName::operator== and != optimised to be a single comparison. Change 2757195 on 2015/11/06 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1305: Improvements in CrashReporter for Symbol Server usage (Contributed by bozaro) Change 2760778 on 2015/11/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1725: Fixed typos in ProfilerCommon.h; Added comments (Contributed by BGR360) Also fixed starting condition. Change 2739804 on 2015/10/23 by Robert.Manuszewski@Robert_Manuszewski_Stream1 PR #1470: [UObjectGlobals] Do not overwrite instanced subobjects with ones from CDO (Contributed by slonopotamus) Change 2744733 on 2015/10/28 by Steve.Robb@Dev-Core PR #1540 - Specifying a different Saved folder at launch through a command line parameter Integrated and optimized. #lockdown Nick.Penwarden [CL 2772222 by Robert Manuszewski in Main branch]
2015-11-18 16:20:49 -05:00
uint32 StatType = STATTYPE_Error;
if (StatMessage.NameAndInfo.GetField<EStatDataType>() == EStatDataType::ST_int64)
{
if (StatMessage.NameAndInfo.GetFlag( EStatMetaFlags::IsCycle ))
{
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2717513 on 2015/10/06 by Robert.Manuszewski@Robert_Manuszewski_EGUK_M1 GC and WeakObjectPtr performance optimizations. - Moved some of the EObjectFlags to EInternalObjectFlags and merged them with FUObjectArray - Moved WeakObjectPtr serial numbersto FUObjectArray - Added pre-allocated UObject array Change 2716517 on 2015/10/05 by Robert.Manuszewski@Robert_Manuszewski_EGUK_M1 Make SavePackage thread safe UObject-wise so that StaticFindObject etc can't run in parallel when packages are being saved. Change 2721142 on 2015/10/08 by Mikolaj.Sieluzycki@Dev-Core_D0920 UHT will now use makefiles to speed up iterative runs. Change 2726320 on 2015/10/13 by Jaroslaw.Palczynski@jaroslaw.palczynski_D1732_2963 Hot-reload performance optimizations: 1. Got rid of redundant touched BPs optimization (which was necessary before major HR fixes submitted earlier). 2. Parallelized search for old CDOs referencers. Change 2759032 on 2015/11/09 by Graeme.Thornton@GThornton_DesktopMaster Dependency preloading improvements - Asset registry dependencies now resolve asset redirectors - Rearrange runtime loading to put dependency preloads within BeginLoad/EndLoad for the source package Change 2754342 on 2015/11/04 by Robert.Manuszewski@Robert_Manuszewski_Stream1 Allow UnfocusedVolumeMultiplier to be set programmatically Change 2764008 on 2015/11/12 by Robert.Manuszewski@Robert_Manuszewski_Stream1 When cooking, don't add imports that are outers of objects excluded from the current cook target. Change 2755562 on 2015/11/05 by Steve.Robb@Dev-Core Inline storage for TFunction. Fix for delegate inline storage on Win64. Some build fixes. Visualizer fixes for new TFunction format. Change 2735084 on 2015/10/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReporter Web - Search by Platform Added initial support for streams (GetBranchesAsListItems, CopyToJira) Change 2762387 on 2015/11/11 by Steve.Robb@Dev-Core Unnecessary allocation removed when loading empty files in FFileHelper::LoadFileToString. Change 2762632 on 2015/11/11 by Steve.Robb@Dev-Core Some TSet function optimisations: Avoiding unnecessary hashing of function arguments if the container is empty (rather than the hash being empty, which is not necessarily equivalent). Taking local copies of HashSize during iterations. Change 2762936 on 2015/11/11 by Steve.Robb@Dev-Core BulkData zero byte allocations are now handled by an RAII object which owns the memory. Change 2765758 on 2015/11/13 by Steve.Robb@Dev-Core FName::operator== and != optimised to be a single comparison. Change 2757195 on 2015/11/06 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1305: Improvements in CrashReporter for Symbol Server usage (Contributed by bozaro) Change 2760778 on 2015/11/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1725: Fixed typos in ProfilerCommon.h; Added comments (Contributed by BGR360) Also fixed starting condition. Change 2739804 on 2015/10/23 by Robert.Manuszewski@Robert_Manuszewski_Stream1 PR #1470: [UObjectGlobals] Do not overwrite instanced subobjects with ones from CDO (Contributed by slonopotamus) Change 2744733 on 2015/10/28 by Steve.Robb@Dev-Core PR #1540 - Specifying a different Saved folder at launch through a command line parameter Integrated and optimized. #lockdown Nick.Penwarden [CL 2772222 by Robert Manuszewski in Main branch]
2015-11-18 16:20:49 -05:00
StatType = STATTYPE_CycleCounter;
}
else if (StatMessage.NameAndInfo.GetFlag( EStatMetaFlags::IsMemory ))
{
StatType = STATTYPE_MemoryCounter;
}
else
{
StatType = STATTYPE_AccumulatorDWORD;
}
}
else if (StatMessage.NameAndInfo.GetField<EStatDataType>() == EStatDataType::ST_double)
{
StatType = STATTYPE_AccumulatorFLOAT;
}
if (StatType != STATTYPE_Error)
{
const int32 StatId = FindOrAddStat( StatMessage.NameAndInfo, StatType );
if (StatMessage.NameAndInfo.GetField<EStatDataType>() == EStatDataType::ST_int64)
{
// add a count accumulator
FProfilerCountAccumulator Data;
Data.StatId = StatId;
Data.Value = StatMessage.GetValue_int64();
CountAccumulators.Add( Data );
}
else if (StatMessage.NameAndInfo.GetField<EStatDataType>() == EStatDataType::ST_double)
{
// add a float accumulator
FProfilerFloatAccumulator Data;
Data.StatId = StatId;
Data.Value = StatMessage.GetValue_double();
FloatAccumulators.Add( Data );
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
const FName StatName = StatMessage.NameAndInfo.GetRawName();
if (StatName == FStatConstants::RAW_SecondsPerCycle)
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2717513 on 2015/10/06 by Robert.Manuszewski@Robert_Manuszewski_EGUK_M1 GC and WeakObjectPtr performance optimizations. - Moved some of the EObjectFlags to EInternalObjectFlags and merged them with FUObjectArray - Moved WeakObjectPtr serial numbersto FUObjectArray - Added pre-allocated UObject array Change 2716517 on 2015/10/05 by Robert.Manuszewski@Robert_Manuszewski_EGUK_M1 Make SavePackage thread safe UObject-wise so that StaticFindObject etc can't run in parallel when packages are being saved. Change 2721142 on 2015/10/08 by Mikolaj.Sieluzycki@Dev-Core_D0920 UHT will now use makefiles to speed up iterative runs. Change 2726320 on 2015/10/13 by Jaroslaw.Palczynski@jaroslaw.palczynski_D1732_2963 Hot-reload performance optimizations: 1. Got rid of redundant touched BPs optimization (which was necessary before major HR fixes submitted earlier). 2. Parallelized search for old CDOs referencers. Change 2759032 on 2015/11/09 by Graeme.Thornton@GThornton_DesktopMaster Dependency preloading improvements - Asset registry dependencies now resolve asset redirectors - Rearrange runtime loading to put dependency preloads within BeginLoad/EndLoad for the source package Change 2754342 on 2015/11/04 by Robert.Manuszewski@Robert_Manuszewski_Stream1 Allow UnfocusedVolumeMultiplier to be set programmatically Change 2764008 on 2015/11/12 by Robert.Manuszewski@Robert_Manuszewski_Stream1 When cooking, don't add imports that are outers of objects excluded from the current cook target. Change 2755562 on 2015/11/05 by Steve.Robb@Dev-Core Inline storage for TFunction. Fix for delegate inline storage on Win64. Some build fixes. Visualizer fixes for new TFunction format. Change 2735084 on 2015/10/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReporter Web - Search by Platform Added initial support for streams (GetBranchesAsListItems, CopyToJira) Change 2762387 on 2015/11/11 by Steve.Robb@Dev-Core Unnecessary allocation removed when loading empty files in FFileHelper::LoadFileToString. Change 2762632 on 2015/11/11 by Steve.Robb@Dev-Core Some TSet function optimisations: Avoiding unnecessary hashing of function arguments if the container is empty (rather than the hash being empty, which is not necessarily equivalent). Taking local copies of HashSize during iterations. Change 2762936 on 2015/11/11 by Steve.Robb@Dev-Core BulkData zero byte allocations are now handled by an RAII object which owns the memory. Change 2765758 on 2015/11/13 by Steve.Robb@Dev-Core FName::operator== and != optimised to be a single comparison. Change 2757195 on 2015/11/06 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1305: Improvements in CrashReporter for Symbol Server usage (Contributed by bozaro) Change 2760778 on 2015/11/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1725: Fixed typos in ProfilerCommon.h; Added comments (Contributed by BGR360) Also fixed starting condition. Change 2739804 on 2015/10/23 by Robert.Manuszewski@Robert_Manuszewski_Stream1 PR #1470: [UObjectGlobals] Do not overwrite instanced subobjects with ones from CDO (Contributed by slonopotamus) Change 2744733 on 2015/10/28 by Steve.Robb@Dev-Core PR #1540 - Specifying a different Saved folder at launch through a command line parameter Integrated and optimized. #lockdown Nick.Penwarden [CL 2772222 by Robert Manuszewski in Main branch]
2015-11-18 16:20:49 -05:00
{
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2783106 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Introduced GC UObject clusters. GC clusters provide means to create disregard for GC subsets at load time (e.g. Materials with material expressions and their textures). - Saves about 25ms in reachability analysis (58ms -> 33ms) - UObject classes/instances can now be marked as cluster root objects with CanBeClusterRoot() function override. - Cluster creation is automatic. Clusters don't require any manual handling for GC to collect them when nothing is referencing them. - Moved token stream processing to a new class FFastReferenceFinder to make it more generic and re-usable by other code - Removed REFERENCE_INFO macro from GC code and replaced it with a local variable (saves about ~1.9ms: 33.2ms -> 31.3ms) Change 2773094 on 2015/11/19 by Steve.Robb@Dev-Core Multicast script delegate check for existing bindings replaced with ensure. Multicast native delegate no longer checks for existing bindings. Removal of old delegate code. Some FORCEINLINEing to improve debugging experience of stepping into delegate code. Change 2782180 on 2015/11/27 by Graeme.Thornton@GThornton_DesktopMaster Make scoped seconds timer class available outside of stats build. Normal usage macros still remain guarded Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE which only times during the outmost instance of a recursive function Added SCOPE_SECONDS_COUNTER_RECURSION_SAFE_BASE and SCOPE_SECONDS_COUNTER_BASE which are defined in all build types, for easy temporary timing in Test/Shipping builds. Added a boolean parameter to the timer class which can be used to disable it without having to mess around with scoping the calling code Change 2782635 on 2015/11/30 by Graeme.Thornton@GThornton_DesktopMaster Added GetTimeStampPair() to the filemanager and platformfile interfaces. Requests timestamps for a pair of files where we assume that both files would always exist at the same wrapper level. Allows us to skip file system queries for localization package lookups where the native file is in a pak but the localized file doesn't exist. Change 2775153 on 2015/11/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReportServer moved out of the not for licencees, a few fixes, removed RegisterPII Change 2775560 on 2015/11/20 by Steve.Robb@Dev-Core FDelegateBase::GetDelegateInstance deprecated and replaced with FDelegateBase::GetDelegateInstanceProtected. Change 2781138 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Converted is using a new stats reader, a few more optimizations, should be 10x times faster Change 2772990 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Fixing potential dead lock when suspending and resuming async loading multiple times Change 2773023 on 2015/11/19 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2 Support for references added through AddReferencedObjects in FArchiveReplaceObjectRef Change 2781055 on 2015/11/25 by Steve.Robb@Dev-Core Changes to IDelegateInstance reverted to allow licensees an easier time when upgrading their use of the now-deprecated GetDelegateInstance() code path. New TryGetBoundFunctionName() to aid the debugging of delegate bindings in non-shipping configs. Change 2773114 on 2015/11/19 by Steve.Robb@Dev-Core FMath::IsPowerOfTwo is now templated to take any type. Change 2773643 on 2015/11/19 by Steve.Robb@Dev-Core GetDelegateInstance() calls replaced - delegate instances never compare equal unless you are comparing two unbound delegates (both null) or comparing a delegate with itself. Change 2777686 on 2015/11/23 by Steve.Robb@Dev-Core GitHub #1793 - File write flags argument Change 2780590 on 2015/11/25 by Steve.Robb@Dev-Core Fix for FArchiveProxy::operator<< overloads. Change 2780845 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec #jira UE-23358 - MDD relies on hard-coded P4 depot paths (fixed source context for streams) Change 2780962 on 2015/11/25 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Stats - Added FStatsWriteStream for basic saving stat messages into a stream, initial support for reading a regular stats file, minor performance optimization, coding standard fixes #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781887 on 2015/11/26 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler/ProfilerClient - Removed unneeded synchronization points, replaces with task graph SendTo jobs, removed PROFILER_THREADED_LOAD, replaced with new stats loading mechanism, should be around 2x times faster (4x since the optimization pass) #jira UECORE-170 - Improve profiler loading performance (wip) Change 2781893 on 2015/11/26 by Steve.Robb@Dev-Core TCachedOSPageAllocator abstracted from MallocBinned2. Misc tidy-ups. Change 2782198 on 2015/11/27 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec Profiler - Better indication of the loading progress, should no longer freeze without a progress bar #jira UECORE-170 - Improve profiler loading performance (wip) Change 2782446 on 2015/11/29 by Steve.Robb@Dev-Core Warn when calling delegates' Create* functions when they're not assigned to anything. #codereview robert.manuszewski Change 2782538 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 #UE4 Removed DiskCachedAssetDataBuffer as it was not strictly necessary and was triggering a crash when loading the cached registry from disk. This data is now stored directly in DiskCachedAssetDataMap. It was already true that this map does not change outside of SerializeCache but now it is critical since NewCachedAssetDataMap keeps pointers directly to its values. Asset registry fixes by Bob Tellez. Possible fix for UE-23783. Change 2782564 on 2015/11/30 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1 FReferenceCollector::AddReferenceObjects performance improvements for TArrays. ARO will no longer call HandleObjectReference multiple times but instead will call HandleObjectReferences just once (currently only implemented for FGCCollector). Reduces the number of virtual function calls while GC'ing. Change 2782716 on 2015/11/30 by Steve.Robb@Dev-Core UObject serial number array initialized for debug visualization. Change 2782933 on 2015/11/30 by Steve.Robb@Dev-Core Critical sections are no longer copyable. Change 2783061 on 2015/11/30 by Steve.Robb@Dev-Core
2015-12-03 14:21:29 -05:00
StatMetaData.SecondsPerCycle = StatMessage.GetValue_double();
Copying //UE4/Dev-Core to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2717513 on 2015/10/06 by Robert.Manuszewski@Robert_Manuszewski_EGUK_M1 GC and WeakObjectPtr performance optimizations. - Moved some of the EObjectFlags to EInternalObjectFlags and merged them with FUObjectArray - Moved WeakObjectPtr serial numbersto FUObjectArray - Added pre-allocated UObject array Change 2716517 on 2015/10/05 by Robert.Manuszewski@Robert_Manuszewski_EGUK_M1 Make SavePackage thread safe UObject-wise so that StaticFindObject etc can't run in parallel when packages are being saved. Change 2721142 on 2015/10/08 by Mikolaj.Sieluzycki@Dev-Core_D0920 UHT will now use makefiles to speed up iterative runs. Change 2726320 on 2015/10/13 by Jaroslaw.Palczynski@jaroslaw.palczynski_D1732_2963 Hot-reload performance optimizations: 1. Got rid of redundant touched BPs optimization (which was necessary before major HR fixes submitted earlier). 2. Parallelized search for old CDOs referencers. Change 2759032 on 2015/11/09 by Graeme.Thornton@GThornton_DesktopMaster Dependency preloading improvements - Asset registry dependencies now resolve asset redirectors - Rearrange runtime loading to put dependency preloads within BeginLoad/EndLoad for the source package Change 2754342 on 2015/11/04 by Robert.Manuszewski@Robert_Manuszewski_Stream1 Allow UnfocusedVolumeMultiplier to be set programmatically Change 2764008 on 2015/11/12 by Robert.Manuszewski@Robert_Manuszewski_Stream1 When cooking, don't add imports that are outers of objects excluded from the current cook target. Change 2755562 on 2015/11/05 by Steve.Robb@Dev-Core Inline storage for TFunction. Fix for delegate inline storage on Win64. Some build fixes. Visualizer fixes for new TFunction format. Change 2735084 on 2015/10/20 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec CrashReporter Web - Search by Platform Added initial support for streams (GetBranchesAsListItems, CopyToJira) Change 2762387 on 2015/11/11 by Steve.Robb@Dev-Core Unnecessary allocation removed when loading empty files in FFileHelper::LoadFileToString. Change 2762632 on 2015/11/11 by Steve.Robb@Dev-Core Some TSet function optimisations: Avoiding unnecessary hashing of function arguments if the container is empty (rather than the hash being empty, which is not necessarily equivalent). Taking local copies of HashSize during iterations. Change 2762936 on 2015/11/11 by Steve.Robb@Dev-Core BulkData zero byte allocations are now handled by an RAII object which owns the memory. Change 2765758 on 2015/11/13 by Steve.Robb@Dev-Core FName::operator== and != optimised to be a single comparison. Change 2757195 on 2015/11/06 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1305: Improvements in CrashReporter for Symbol Server usage (Contributed by bozaro) Change 2760778 on 2015/11/10 by Jaroslaw.Surowiec@Stream.1.JarekSurowiec PR #1725: Fixed typos in ProfilerCommon.h; Added comments (Contributed by BGR360) Also fixed starting condition. Change 2739804 on 2015/10/23 by Robert.Manuszewski@Robert_Manuszewski_Stream1 PR #1470: [UObjectGlobals] Do not overwrite instanced subobjects with ones from CDO (Contributed by slonopotamus) Change 2744733 on 2015/10/28 by Steve.Robb@Dev-Core PR #1540 - Specifying a different Saved folder at launch through a command line parameter Integrated and optimized. #lockdown Nick.Penwarden [CL 2772222 by Robert Manuszewski in Main branch]
2015-11-18 16:20:49 -05:00
}
}
}
}
}
void FServiceConnection::CreateGraphRecursively(const FRawStatStackNode* Root, FProfilerCycleGraph& Graph, uint32 InStartCycles)
{
Graph.FrameStart = InStartCycles;
Graph.StatId = FindOrAddStat(Root->Meta.NameAndInfo, STATTYPE_CycleCounter);
// add the data
if (Root->Meta.NameAndInfo.GetField<EStatDataType>() == EStatDataType::ST_int64)
{
if (Root->Meta.NameAndInfo.GetFlag(EStatMetaFlags::IsPackedCCAndDuration))
{
Graph.CallsPerFrame = FromPackedCallCountDuration_CallCount(Root->Meta.GetValue_int64());
Graph.Value = FromPackedCallCountDuration_Duration(Root->Meta.GetValue_int64());
}
else
{
Graph.CallsPerFrame = 1;
Graph.Value = Root->Meta.GetValue_int64();
}
}
uint32 ChildStartCycles = InStartCycles;
TArray<FRawStatStackNode*> ChildArray;
Root->Children.GenerateValueArray(ChildArray);
ChildArray.Sort( FStatDurationComparer<FRawStatStackNode>() );
for( int32 Index = 0; Index < ChildArray.Num(); ++Index )
{
const FRawStatStackNode* ChildStat = ChildArray[Index];
// create the child graph
FProfilerCycleGraph ChildGraph;
ChildGraph.ThreadId = Graph.ThreadId;
CreateGraphRecursively(ChildStat, ChildGraph, ChildStartCycles);
// add to the graph
Graph.Children.Add(ChildGraph);
// update the start cycles
ChildStartCycles += ChildGraph.Value;
}
}
void FServiceConnection::GenerateCycleGraphs(const FRawStatStackNode& Root, TMap<uint32, FProfilerCycleGraph>& CycleGraphs)
{
SCOPE_CYCLE_COUNTER(STAT_PC_GenerateCycleGraph);
// Initialize the root stat.
FindOrAddStat(Root.Meta.NameAndInfo, STATTYPE_CycleCounter);
// get the cycle graph from each child of the stack root
TArray<FRawStatStackNode*> ChildArray;
Root.Children.GenerateValueArray(ChildArray);
for (int32 Index = 0; Index < ChildArray.Num(); ++Index)
{
FRawStatStackNode* ThreadNode = ChildArray[Index];
FProfilerCycleGraph Graph;
// determine the thread id
Graph.ThreadId = FindOrAddThread(ThreadNode->Meta.NameAndInfo);
// create the thread graph
CreateGraphRecursively(ThreadNode, Graph, 0);
// add to the map
CycleGraphs.Add(Graph.ThreadId, Graph);
}
}
void FServiceConnection::GenerateProfilerDataFrame()
{
SCOPE_CYCLE_COUNTER( STAT_PC_GenerateDataFrame );
FProfilerDataFrame& DataFrame = CurrentData;
DataFrame.Frame = CurrentThreadState.CurrentGameFrame;
DataFrame.FrameStart = 0.0;
DataFrame.CountAccumulators.Reset();
DataFrame.CycleGraphs.Reset();
DataFrame.FloatAccumulators.Reset();
DataFrame.MetaDataUpdated = false;
// get the stat stack root and the non frame stats
FRawStatStackNode Stack;
TArray<FStatMessage> NonFrameStats;
CurrentThreadState.UncondenseStackStats( CurrentThreadState.CurrentGameFrame, Stack, nullptr, &NonFrameStats );
// cycle graphs
GenerateCycleGraphs( Stack, DataFrame.CycleGraphs );
// accumulators
GenerateAccumulators( NonFrameStats, DataFrame.CountAccumulators, DataFrame.FloatAccumulators );
}
#endif