JsrtExternalArrayBuffer.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637
  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. class JsrtExternalArrayBuffer : public ExternalArrayBuffer
  8. {
  9. protected:
  10. DEFINE_VTABLE_CTOR(JsrtExternalArrayBuffer, ExternalArrayBuffer);
  11. DEFINE_MARSHAL_OBJECT_TO_SCRIPT_CONTEXT(JsrtExternalArrayBuffer);
  12. JsrtExternalArrayBuffer(byte *buffer, uint32 length, JsFinalizeCallback finalizeCallback, void *callbackState, DynamicType *type);
  13. virtual ArrayBufferDetachedStateBase* CreateDetachedState(BYTE* buffer, DECLSPEC_GUARD_OVERFLOW uint32 bufferLength) override;
  14. public:
  15. static JsrtExternalArrayBuffer* New(byte *buffer, uint32 length, JsFinalizeCallback finalizeCallback, void *callbackState, DynamicType *type);
  16. void Finalize(bool isShutdown) override;
  17. private:
  18. FieldNoBarrier(JsFinalizeCallback) finalizeCallback;
  19. FieldNoBarrier(void *) callbackState;
  20. class JsrtExternalArrayBufferDetachedState : public ExternalArrayBufferDetachedState
  21. {
  22. FieldNoBarrier(JsFinalizeCallback) finalizeCallback;
  23. FieldNoBarrier(void *) callbackState;
  24. public:
  25. JsrtExternalArrayBufferDetachedState(BYTE* buffer, uint32 bufferLength, JsFinalizeCallback finalizeCallback, void *callbackState);
  26. virtual void ClearSelfOnly() override;
  27. virtual void DiscardState() override;
  28. virtual ArrayBuffer* Create(JavascriptLibrary* library) override;
  29. };
  30. };
  31. }
  32. AUTO_REGISTER_RECYCLER_OBJECT_DUMPER(Js::JsrtExternalArrayBuffer, &Js::RecyclableObject::DumpObjectFunction);