|
|
@@ -463,6 +463,26 @@ CHAKRA_API JsPrivateCollectGarbageSkipStack(_In_ JsRuntimeHandle runtimeHandle)
|
|
|
{
|
|
|
return JsCollectGarbageCommon<CollectNowExhaustiveSkipStack>(runtimeHandle);
|
|
|
}
|
|
|
+
|
|
|
+CHAKRA_API JsPrivateDetachArrayBuffer(_In_ JsValueRef ref, _Out_ void** detachedState)
|
|
|
+{
|
|
|
+ return GlobalAPIWrapper_NoRecord([&]() -> JsErrorCode
|
|
|
+ {
|
|
|
+ VALIDATE_JSREF(ref);
|
|
|
+ *detachedState = Js::JavascriptOperators::DetachVarAndGetState(ref);
|
|
|
+ return JsNoError;
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+CHAKRA_API JsPrivateFreeDetachedArrayBuffer(_In_ void* detachedState)
|
|
|
+{
|
|
|
+ return GlobalAPIWrapper_NoRecord([&]() -> JsErrorCode
|
|
|
+ {
|
|
|
+ auto state = reinterpret_cast<Js::ArrayBufferDetachedStateBase*>(detachedState);
|
|
|
+ state->CleanUp();
|
|
|
+ return JsNoError;
|
|
|
+ });
|
|
|
+}
|
|
|
#endif
|
|
|
|
|
|
CHAKRA_API JsDisposeRuntime(_In_ JsRuntimeHandle runtimeHandle)
|
|
|
@@ -3706,7 +3726,7 @@ template <typename TLoadCallback, typename TUnloadCallback>
|
|
|
JsErrorCode RunSerializedScriptCore(
|
|
|
TLoadCallback scriptLoadCallback, TUnloadCallback scriptUnloadCallback,
|
|
|
JsSourceContext scriptLoadSourceContext, // only used by scriptLoadCallback
|
|
|
- unsigned char *buffer, JsValueRef bufferVal,
|
|
|
+ unsigned char *buffer, Js::ArrayBuffer* bufferVal,
|
|
|
JsSourceContext sourceContext, const WCHAR *sourceUrl,
|
|
|
bool parseOnly, JsValueRef *result)
|
|
|
{
|
|
|
@@ -4939,12 +4959,13 @@ CHAKRA_API JsParseSerialized(
|
|
|
return JsErrorInvalidArgument;
|
|
|
}
|
|
|
|
|
|
- byte* buffer = Js::ArrayBuffer::FromVar(bufferVal)->GetBuffer();
|
|
|
+ Js::ArrayBuffer* arrayBuffer = Js::ArrayBuffer::FromVar(bufferVal);
|
|
|
+ byte* buffer = arrayBuffer->GetBuffer();
|
|
|
|
|
|
return RunSerializedScriptCore(
|
|
|
scriptLoadCallback, DummyScriptUnloadCallback,
|
|
|
sourceContext,// use the same user provided sourceContext as scriptLoadSourceContext
|
|
|
- buffer, bufferVal, sourceContext, url, true, result);
|
|
|
+ buffer, arrayBuffer, sourceContext, url, true, result);
|
|
|
}
|
|
|
|
|
|
CHAKRA_API JsRunSerialized(
|
|
|
@@ -4972,12 +4993,13 @@ CHAKRA_API JsRunSerialized(
|
|
|
return JsErrorInvalidArgument;
|
|
|
}
|
|
|
|
|
|
- byte* buffer = Js::ArrayBuffer::FromVar(bufferVal)->GetBuffer();
|
|
|
+ Js::ArrayBuffer* arrayBuffer = Js::ArrayBuffer::FromVar(bufferVal);
|
|
|
+ byte* buffer = arrayBuffer->GetBuffer();
|
|
|
|
|
|
return RunSerializedScriptCore(
|
|
|
scriptLoadCallback, DummyScriptUnloadCallback,
|
|
|
sourceContext, // use the same user provided sourceContext as scriptLoadSourceContext
|
|
|
- buffer, bufferVal, sourceContext, url, false, result);
|
|
|
+ buffer, arrayBuffer, sourceContext, url, false, result);
|
|
|
}
|
|
|
|
|
|
CHAKRA_API JsCreatePromise(_Out_ JsValueRef *promise, _Out_ JsValueRef *resolve, _Out_ JsValueRef *reject)
|