JavascriptSymbolObject.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. #pragma once
  6. namespace Js
  7. {
  8. class JavascriptSymbolObject : public DynamicObject
  9. {
  10. private:
  11. Field(JavascriptSymbol*) value;
  12. DEFINE_VTABLE_CTOR(JavascriptSymbolObject, DynamicObject);
  13. DEFINE_MARSHAL_OBJECT_TO_SCRIPT_CONTEXT(JavascriptSymbolObject);
  14. public:
  15. JavascriptSymbolObject(JavascriptSymbol* value, DynamicType * type);
  16. static bool Is(Var aValue);
  17. static JavascriptSymbolObject* FromVar(Js::Var aValue);
  18. static JavascriptSymbolObject* UnsafeFromVar(Js::Var aValue);
  19. inline const PropertyRecord* GetValue()
  20. {
  21. if (value == nullptr)
  22. {
  23. return nullptr;
  24. }
  25. return value->GetValue();
  26. }
  27. Var Unwrap() const;
  28. virtual BOOL GetDiagValueString(StringBuilder<ArenaAllocator>* stringBuilder, ScriptContext* requestContext) override;
  29. virtual BOOL GetDiagTypeString(StringBuilder<ArenaAllocator>* stringBuilder, ScriptContext* requestContext) override;
  30. #if ENABLE_TTD
  31. public:
  32. void SetValue_TTD(Js::Var val);
  33. virtual void MarkVisitKindSpecificPtrs(TTD::SnapshotExtractor* extractor) override;
  34. virtual TTD::NSSnapObjects::SnapObjectType GetSnapTag_TTD() const override;
  35. virtual void ExtractSnapObjectDataInto(TTD::NSSnapObjects::SnapObject* objData, TTD::SlabAllocator& alloc) override;
  36. #endif
  37. };
  38. }