Skip to content

Commit af04cbb

Browse files
committed
profiling...
1 parent 4bcabdb commit af04cbb

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

Plugins/UnrealJS/Source/V8/Private/JavascriptIsolate_Private.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ class FJavascriptIsolateImplementation : public FJavascriptIsolate
8686

8787
if (IsValid(Object))
8888
{
89+
FScopeCycleCounterUObject ContextScope(Object);
90+
FScopeCycleCounterUObject PropertyScope(Property);
91+
SCOPE_CYCLE_COUNTER(STAT_JavascriptPropertyGet);
92+
8993
if (auto p = Cast<UMulticastDelegateProperty>(Property))
9094
{
9195
return GetSelf(isolate)->Delegates->GetProxy(self, Object, p);
@@ -156,6 +160,10 @@ class FJavascriptIsolateImplementation : public FJavascriptIsolate
156160

157161
if (IsValid(Object))
158162
{
163+
FScopeCycleCounterUObject ContextScope(Object);
164+
FScopeCycleCounterUObject PropertyScope(Property);
165+
SCOPE_CYCLE_COUNTER(STAT_JavascriptPropertySet);
166+
159167
// Multicast delegate
160168
if (auto p = Cast<UMulticastDelegateProperty>(Property))
161169
{
@@ -545,8 +553,24 @@ class FJavascriptIsolateImplementation : public FJavascriptIsolate
545553

546554
void ReadOffStruct(Local<Object> v8_obj, UStruct* Struct, uint8* struct_buffer)
547555
{
556+
SCOPE_CYCLE_COUNTER(STAT_JavascriptReadOffStruct);
557+
FScopeCycleCounterUObject StructContext(Struct);
558+
548559
FIsolateHelper I(isolate_);
549560

561+
/*
562+
MaybeLocal<Array> _arr = v8_obj->GetOwnPropertyNames();
563+
if (_arr.IsEmpty()) return;
564+
565+
auto arr = _arr.ToLocalChecked();
566+
567+
auto len = arr->Length();
568+
569+
for (decltype(len) Index = 0; Index < len; ++Index)
570+
{
571+
}
572+
*/
573+
550574
for (TFieldIterator<UProperty> PropertyIt(Struct, EFieldIteratorFlags::IncludeSuper); PropertyIt; ++PropertyIt)
551575
{
552576
auto Property = *PropertyIt;
@@ -902,6 +926,7 @@ class FJavascriptIsolateImplementation : public FJavascriptIsolate
902926
if (info.Length() == 1)
903927
{
904928
auto Profile = profiler->StopProfiling(info[0].As<String>());
929+
if (!Profile) return;
905930

906931
auto Out = Object::New(isolate);
907932
Out->Set(I.Keyword("Root"), Visit(isolate, Profile->GetTopDownRoot()));
@@ -1117,6 +1142,8 @@ class FJavascriptIsolateImplementation : public FJavascriptIsolate
11171142
template <typename Fn>
11181143
static Local<Value> CallFunction(Isolate* isolate, Local<Value> self, UFunction* Function, UObject* Object, Fn&& GetArg)
11191144
{
1145+
SCOPE_CYCLE_COUNTER(STAT_JavascriptFunctionCall);
1146+
11201147
FIsolateHelper I(isolate);
11211148

11221149
EscapableHandleScope handle_scope(isolate);

Plugins/UnrealJS/Source/V8/Private/JavascriptStats.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ DECLARE_CYCLE_STAT_EXTERN(TEXT("ProcessWeakCallbacks"), STAT_ProcessWeakCallback
99

1010
DECLARE_CYCLE_STAT_EXTERN(TEXT("Delegate"), STAT_JavascriptDelegate, STATGROUP_Javascript, V8_API);
1111
DECLARE_CYCLE_STAT_EXTERN(TEXT("Proxy"), STAT_JavascriptProxy, STATGROUP_Javascript, V8_API);
12+
DECLARE_CYCLE_STAT_EXTERN(TEXT("get"), STAT_JavascriptPropertyGet, STATGROUP_Javascript, V8_API);
13+
DECLARE_CYCLE_STAT_EXTERN(TEXT("set"), STAT_JavascriptPropertySet, STATGROUP_Javascript, V8_API);
14+
DECLARE_CYCLE_STAT_EXTERN(TEXT("call"), STAT_JavascriptFunctionCall, STATGROUP_Javascript, V8_API);
15+
16+
DECLARE_CYCLE_STAT_EXTERN(TEXT("struct(naive)"), STAT_JavascriptReadOffStruct, STATGROUP_Javascript, V8_API);
1217

1318
DECLARE_MEMORY_STAT_EXTERN(TEXT("NewSpace"), STAT_NewSpace, STATGROUP_Javascript, V8_API);
1419
DECLARE_MEMORY_STAT_EXTERN(TEXT("OldSpace"), STAT_OldSpace, STATGROUP_Javascript, V8_API);

Plugins/UnrealJS/Source/V8/Private/V8Module.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ DEFINE_STAT(STAT_MarkSweepCompact);
1111
DEFINE_STAT(STAT_IncrementalMarking);
1212
DEFINE_STAT(STAT_ProcessWeakCallbacks);
1313

14+
DEFINE_STAT(STAT_JavascriptPropertyGet);
15+
DEFINE_STAT(STAT_JavascriptPropertySet);
16+
DEFINE_STAT(STAT_JavascriptFunctionCall);
17+
DEFINE_STAT(STAT_JavascriptReadOffStruct);
18+
1419
DEFINE_STAT(STAT_NewSpace);
1520
DEFINE_STAT(STAT_OldSpace);
1621
DEFINE_STAT(STAT_CodeSpace);

0 commit comments

Comments
 (0)