blob: 93882e5935f5f514bebf6a25392b3f6bae499d22 [file]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
#include "RuntimeLibraryPch.h"
namespace Js
{
JavascriptBooleanObject::JavascriptBooleanObject(JavascriptBoolean* value, DynamicType * type)
: DynamicObject(type), value(value)
{
Assert(type->GetTypeId() == TypeIds_BooleanObject);
}
bool JavascriptBooleanObject::Is(Var aValue)
{
return JavascriptOperators::GetTypeId(aValue) == TypeIds_BooleanObject;
}
JavascriptBooleanObject* JavascriptBooleanObject::FromVar(Js::Var aValue)
{
AssertMsg(Is(aValue), "Ensure var is actually a 'JavascriptBooleanObject'");
return static_cast<JavascriptBooleanObject *>(RecyclableObject::FromVar(aValue));
}
BOOL JavascriptBooleanObject::GetValue() const
{
if (this->value == nullptr)
{
return false;
}
return this->value->GetValue();
}
void JavascriptBooleanObject::Initialize(JavascriptBoolean* value)
{
Assert(this->value == nullptr);
this->value = value;
}
BOOL JavascriptBooleanObject::GetDiagValueString(StringBuilder<ArenaAllocator>* stringBuilder, ScriptContext* requestContext)
{
if (this->GetValue())
{
JavascriptString* trueDisplayString = GetLibrary()->GetTrueDisplayString();
stringBuilder->Append(trueDisplayString->GetString(), trueDisplayString->GetLength());
}
else
{
JavascriptString* falseDisplayString = GetLibrary()->GetFalseDisplayString();
stringBuilder->Append(falseDisplayString->GetString(), falseDisplayString->GetLength());
}
return TRUE;
}
BOOL JavascriptBooleanObject::GetDiagTypeString(StringBuilder<ArenaAllocator>* stringBuilder, ScriptContext* requestContext)
{
stringBuilder->AppendCppLiteral(_u("Boolean, (Object)"));
return TRUE;
}
#if ENABLE_TTD
void JavascriptBooleanObject::SetValue_TTD(Js::Var val)
{
TTDAssert(val == nullptr || Js::JavascriptBoolean::Is(val), "Only allowable values!");
this->value = static_cast<Js::JavascriptBoolean*>(val);
}
void JavascriptBooleanObject::MarkVisitKindSpecificPtrs(TTD::SnapshotExtractor* extractor)
{
if(this->value != nullptr)
{
extractor->MarkVisitVar(this->value);
}
}
TTD::NSSnapObjects::SnapObjectType JavascriptBooleanObject::GetSnapTag_TTD() const
{
return TTD::NSSnapObjects::SnapObjectType::SnapBoxedValueObject;
}
void JavascriptBooleanObject::ExtractSnapObjectDataInto(TTD::NSSnapObjects::SnapObject* objData, TTD::SlabAllocator& alloc)
{
TTD::NSSnapObjects::StdExtractSetKindSpecificInfo<TTD::TTDVar, TTD::NSSnapObjects::SnapObjectType::SnapBoxedValueObject>(objData, this->value);
}
#endif
} // namespace Js