@@ -281,15 +281,15 @@ void MetadataNode::NullObjectAccessorGetterCallback(Local<String> property,const
281281 DEBUG_WRITE (" NullObjectAccessorGetterCallback" );
282282 auto isolate = info.GetIsolate ();
283283
284- auto node = reinterpret_cast <MetadataNode*>(info.Data ().As <External>()->Value ());
285-
286- DEBUG_WRITE (" NullObjectAccessorGetterCallback node name: %s" , node->GetName ().c_str ());
287-
288- Local<Object> value = Object::New (isolate);
289- value->SetHiddenValue (V8StringConstants::GetNullNodeName (), External::New (isolate, node));
290284 // TODO: pete: Set .valueOf() callback to return null
285+ auto thiz = info.This ();
286+ if (!(thiz->GetHiddenValue (V8StringConstants::GetNullNodeName ())).IsEmpty ())
287+ {
288+ auto node = reinterpret_cast <MetadataNode*>(info.Data ().As <External>()->Value ());
289+ thiz->SetHiddenValue (V8StringConstants::GetNullNodeName (), External::New (isolate, node));
290+ }
291291
292- info.GetReturnValue ().Set (value );
292+ info.GetReturnValue ().Set (thiz );
293293 }
294294 catch (NativeScriptException& e)
295295 {
@@ -389,28 +389,26 @@ void MetadataNode::SuperAccessorGetterCallback(Local<String> property, const Pro
389389 {
390390 auto thiz = info.This ();
391391 auto isolate = info.GetIsolate ();
392- auto k = ConvertToV8String (" supervalue" );
393- auto superValue = thiz->GetHiddenValue (k ).As <Object>();
392+ auto key = ConvertToV8String (" supervalue" );
393+ auto superValue = thiz->GetHiddenValue (key ).As <Object>();
394394 if (superValue.IsEmpty ())
395395 {
396396 auto runtime = Runtime::GetRuntime (isolate);
397397 auto objectManager = runtime->GetObjectManager ();
398398
399399 superValue = objectManager->GetEmptyObject (isolate);
400- bool d = superValue->Delete (ConvertToV8String ( " toString " ));
401- d = superValue->Delete (ConvertToV8String ( " valueOf " ));
400+ bool d = superValue->Delete (V8StringConstants::GetToString ( ));
401+ d = superValue->Delete (V8StringConstants::GetValueOf ( ));
402402 superValue->SetInternalField (static_cast <int >(ObjectManager::MetadataNodeKeys::CallSuper), True (isolate));
403403
404404 superValue->SetPrototype (thiz->GetPrototype ().As <Object>()->GetPrototype ().As <Object>()->GetPrototype ());
405- thiz->SetHiddenValue (k , superValue);
405+ thiz->SetHiddenValue (key , superValue);
406406 objectManager->CloneLink (thiz, superValue);
407407
408408 DEBUG_WRITE (" superValue.GetPrototype=%d" , superValue->GetPrototype ().As <Object>()->GetIdentityHash ());
409409
410410 auto node = GetInstanceMetadata (isolate, thiz);
411411 SetInstanceMetadata (isolate, superValue, node);
412-
413- thiz->SetHiddenValue (k, superValue);
414412 }
415413
416414 info.GetReturnValue ().Set (superValue);
0 commit comments