Skip to content

Commit c952eaf

Browse files
author
Mihail Slavchev
committed
performance optimization
1 parent 1a91fbc commit c952eaf

1 file changed

Lines changed: 15 additions & 12 deletions

File tree

src/jni/ObjectManager.cpp

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ using namespace v8;
1616
using namespace std;
1717
using namespace tns;
1818

19+
1920
ObjectManager::ObjectManager()
2021
:
2122
m_env(JEnv()), m_numberOfGC(0), m_currentObjectId(0), m_cache(NewWeakGlobalRefCallback, DeleteWeakGlobalRefCallback, 1000, this)
@@ -452,6 +453,8 @@ void ObjectManager::MarkReachableObjects(Isolate *isolate, const Local<Object>&
452453
assert(!m_markedForGC.empty());
453454
auto& topGCInfo = m_markedForGC.top();
454455
int numberOfGC = topGCInfo.numberOfGC;
456+
auto fromJsInfo = GetJSInstanceInfo(obj);
457+
auto fromId = fromJsInfo->JavaObjectID;
455458

456459
auto curGCNumValue = Integer::New(isolate, numberOfGC);
457460

@@ -467,6 +470,18 @@ void ObjectManager::MarkReachableObjects(Isolate *isolate, const Local<Object>&
467470

468471
auto o = top.As<Object>();
469472

473+
auto jsInfo = GetJSInstanceInfo(o);
474+
if ((jsInfo != nullptr) && (jsInfo->JavaObjectID != fromId))
475+
{
476+
auto hasImplObject = HasImplObject(isolate, o);
477+
if (hasImplObject)
478+
{
479+
jsInfo->IsJavaObjectWeak = false;
480+
m_implObjStrong[jsInfo->JavaObjectID] = nullptr;
481+
}
482+
o->SetHiddenValue(propName, curGCNumValue);
483+
}
484+
470485
uint8_t *addr = NativeScriptExtension::GetAddress(o);
471486
auto itFound = m_visited.find(addr);
472487
if (itFound != m_visited.end())
@@ -492,18 +507,6 @@ void ObjectManager::MarkReachableObjects(Isolate *isolate, const Local<Object>&
492507
NativeScriptExtension::ReleaseClosureObjects(closureObjects);
493508
}
494509

495-
auto jsInfo = GetJSInstanceInfo(o);
496-
if (jsInfo != nullptr)
497-
{
498-
auto hasImplObject = HasImplObject(isolate, o);
499-
if (hasImplObject)
500-
{
501-
jsInfo->IsJavaObjectWeak = false;
502-
m_implObjStrong[jsInfo->JavaObjectID] = nullptr;
503-
}
504-
o->SetHiddenValue(propName, curGCNumValue);
505-
}
506-
507510
auto proto = o->GetPrototype();
508511
if (!proto.IsEmpty() && !proto->IsNull() && !proto->IsUndefined() && proto->IsObject())
509512
{

0 commit comments

Comments
 (0)