@@ -266,41 +266,6 @@ void ObjectManager::Link(const Local<Object> &object, uint32_t javaObjectID, jcl
266
266
m_idToObject.insert (make_pair (javaObjectID, objectHandle));
267
267
}
268
268
269
- void ObjectManager::LinkWithExtraData (const v8::Local<v8::Object>& object, uint32_t javaObjectID, jclass clazz, void * data) {
270
- if (!IsJsRuntimeObject (object)) {
271
- string errMsg (" Trying to link invalid 'this' to a Java object" );
272
- throw NativeScriptException (errMsg);
273
- }
274
-
275
- auto isolate = m_isolate;
276
-
277
- DEBUG_WRITE (" Linking js object: %d and java instance id: %d" , object->GetIdentityHash (),
278
- javaObjectID);
279
-
280
- auto jsInstanceInfo = new JSInstanceInfo (false /* isJavaObjWeak*/ , javaObjectID, clazz);
281
-
282
- auto objectHandle = new Persistent<Object>(isolate, object);
283
- auto state = new ObjectWeakCallbackState (this , jsInstanceInfo, objectHandle);
284
-
285
- // subscribe for JS GC event
286
- if (m_markingMode == JavaScriptMarkingMode::None) {
287
- objectHandle->SetWeak (state, JSObjectFinalizerStatic, WeakCallbackType::kFinalizer );
288
- } else {
289
- objectHandle->SetWeak (state, JSObjectWeakCallbackStatic, WeakCallbackType::kFinalizer );
290
- }
291
-
292
- auto jsInfoIdx = static_cast <int >(MetadataNodeKeys::JsInfo);
293
-
294
- auto jsInfo = External::New (isolate, jsInstanceInfo);
295
-
296
- // link
297
- object->SetInternalField (jsInfoIdx, jsInfo);
298
-
299
- V8SetPrivateValue (isolate, object, String::NewFromUtf8 (isolate," object_with_extra_data" ).ToLocalChecked (), External::New (isolate, data));
300
-
301
- m_idToObject.insert (make_pair (javaObjectID, objectHandle));
302
- }
303
-
304
269
bool ObjectManager::CloneLink (const Local<Object> &src, const Local<Object> &dest) {
305
270
auto jsInfo = GetJSInstanceInfo (src);
306
271
@@ -387,55 +352,6 @@ void ObjectManager::JSObjectFinalizer(Isolate *isolate, ObjectWeakCallbackState
387
352
}
388
353
389
354
390
- void ObjectManager::JSObjectFinalizerStaticWithExtraData (const WeakCallbackInfo<ObjectWeakCallbackState> &data) {
391
- ObjectWeakCallbackState *callbackState = data.GetParameter ();
392
-
393
- ObjectManager *thisPtr = callbackState->thisPtr ;
394
-
395
- auto isolate = data.GetIsolate ();
396
-
397
- thisPtr->JSObjectFinalizerWithExtraData (isolate, callbackState);
398
- }
399
-
400
- void ObjectManager::JSObjectFinalizerWithExtraData (Isolate *isolate, ObjectWeakCallbackState *callbackState) {
401
- HandleScope handleScope (m_isolate);
402
- Persistent<Object> *po = callbackState->target ;
403
- auto jsInstanceInfo = GetJSInstanceInfoFromRuntimeObject (po->Get (m_isolate));
404
-
405
- if (jsInstanceInfo == nullptr ) {
406
- po->Reset ();
407
- delete po;
408
- delete callbackState;
409
- return ;
410
- }
411
-
412
- auto javaObjectID = jsInstanceInfo->JavaObjectID ;
413
- JEnv env;
414
- jboolean isJavaInstanceAlive = env.CallBooleanMethod (m_javaRuntimeObject,
415
- MAKE_INSTANCE_WEAK_AND_CHECK_IF_ALIVE_METHOD_ID,
416
- javaObjectID);
417
- if (isJavaInstanceAlive) {
418
- // If the Java instance is alive, keep the JavaScript instance alive.
419
- po->SetWeak (callbackState, JSObjectFinalizerStatic, WeakCallbackType::kFinalizer );
420
- } else {
421
- // If the Java instance is dead, this JavaScript instance can be let die.
422
- delete jsInstanceInfo;
423
- auto jsInfoIdx = static_cast <int >(MetadataNodeKeys::JsInfo);
424
- po->Get (m_isolate)->SetInternalField (jsInfoIdx, Undefined (m_isolate));
425
- v8::Local<v8::Value> out;
426
- V8GetPrivateValue (isolate, po->Get (m_isolate), String::NewFromUtf8 (isolate," object_with_extra_data" ).ToLocalChecked (), out);
427
- V8SetPrivateValue (isolate, po->Get (m_isolate), String::NewFromUtf8 (isolate," object_with_extra_data" ).ToLocalChecked (), Undefined (m_isolate));
428
- if (!out.IsEmpty () && out->IsExternal ()) {
429
- auto data = out.As <v8::External>()->Value ();
430
- free (data);
431
- }
432
- po->Reset ();
433
- m_idToObject.erase (javaObjectID);
434
- delete po;
435
- delete callbackState;
436
- }
437
- }
438
-
439
355
/*
440
356
* When JS GC happens change state of the java counterpart to mirror state of JS object and REVIVE the JS object unconditionally
441
357
* "Regular" js objects are pushed into the "regular objects" array
@@ -466,7 +382,7 @@ void ObjectManager::JSObjectWeakCallback(Isolate *isolate, ObjectWeakCallbackSta
466
382
467
383
if (hasImplObj) {
468
384
if (jsInstanceInfo->IsJavaObjectWeak ) {
469
- m_implObjWeak.push_back ( PersistentObjectIdPair ( po, javaObjectID) );
385
+ m_implObjWeak.emplace_back ( po, javaObjectID);
470
386
} else {
471
387
m_implObjStrong.insert (make_pair (javaObjectID, po));
472
388
jsInstanceInfo->IsJavaObjectWeak = true ;
0 commit comments