blob: 3c98a9030ea3b95ec718e49658b81056e03739ed [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::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::VarIs<Js::JavascriptBoolean>(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