WebCoreTypedArrayController.cpp [plain text]
#include "config.h"
#include "WebCoreTypedArrayController.h"
#include "JSDOMBinding.h"
#include "JSDOMGlobalObject.h"
#include <runtime/ArrayBuffer.h>
#include <runtime/JSArrayBuffer.h>
#include <runtime/JSCInlines.h>
namespace WebCore {
WebCoreTypedArrayController::WebCoreTypedArrayController()
{
}
WebCoreTypedArrayController::~WebCoreTypedArrayController()
{
}
JSC::JSArrayBuffer* WebCoreTypedArrayController::toJS(JSC::ExecState* state, JSC::JSGlobalObject* globalObject, JSC::ArrayBuffer* buffer)
{
return JSC::jsCast<JSC::JSArrayBuffer*>(WebCore::toJS(state, JSC::jsCast<JSDOMGlobalObject*>(globalObject), buffer));
}
bool WebCoreTypedArrayController::JSArrayBufferOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, JSC::SlotVisitor& visitor)
{
auto& wrapper = *JSC::jsCast<JSC::JSArrayBuffer*>(handle.slot()->asCell());
if (!wrapper.hasCustomProperties())
return false;
return visitor.containsOpaqueRoot(wrapper.impl());
}
void WebCoreTypedArrayController::JSArrayBufferOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context)
{
auto& wrapper = *static_cast<JSC::JSArrayBuffer*>(handle.slot()->asCell());
auto& buffer = *wrapper.impl();
uncacheWrapper(*static_cast<DOMWrapperWorld*>(context), &buffer, &wrapper);
buffer.deref();
}
}