2
0

JsrtExternalArrayBuffer.h 2.2 KB

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