Skip to content

Commit 282f7a2

Browse files
committed
move chakracore only types behind ifdefs
1 parent 6eb30a7 commit 282f7a2

17 files changed

+414
-195
lines changed

bin/ch/ChakraRtInterface.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ bool ChakraRTInterface::LoadChakraDll(ArgInfo* argInfo, HINSTANCE *outLibrary)
8585
m_jsApiHooks.pfJsrtDisposeRuntime = (JsAPIHooks::JsrtDisposeRuntimePtr)GetChakraCoreSymbol(library, "JsDisposeRuntime");
8686
m_jsApiHooks.pfJsrtCreateObject = (JsAPIHooks::JsrtCreateObjectPtr)GetChakraCoreSymbol(library, "JsCreateObject");
8787
m_jsApiHooks.pfJsrtCreateExternalObject = (JsAPIHooks::JsrtCreateExternalObjectPtr)GetChakraCoreSymbol(library, "JsCreateExternalObject");
88-
m_jsApiHooks.pfJsrtCreateCustomExternalObject = (JsAPIHooks::JsrtCreateCustomExternalObjectPtr)GetChakraCoreSymbol(library, "JsCreateCustomExternalObject");
8988
m_jsApiHooks.pfJsrtGetArrayForEachFunction = (JsAPIHooks::JsrtGetArrayForEachFunctionPtr)GetChakraCoreSymbol(library, "JsGetArrayForEachFunction");;
9089
m_jsApiHooks.pfJsrtGetArrayKeysFunction = (JsAPIHooks::JsrtGetArrayKeysFunctionPtr)GetChakraCoreSymbol(library, "JsGetArrayKeysFunction");;
9190
m_jsApiHooks.pfJsrtGetArrayValuesFunction = (JsAPIHooks::JsrtGetArrayValuesFunctionPtr)GetChakraCoreSymbol(library, "JsGetArrayValuesFunction");;
@@ -190,7 +189,15 @@ bool ChakraRTInterface::LoadChakraDll(ArgInfo* argInfo, HINSTANCE *outLibrary)
190189
m_jsApiHooks.pfJsrtTTDMoveToTopLevelEvent = (JsAPIHooks::JsrtTTDMoveToTopLevelEventPtr)GetChakraCoreSymbol(library, "JsTTDMoveToTopLevelEvent");
191190
m_jsApiHooks.pfJsrtTTDReplayExecution = (JsAPIHooks::JsrtTTDReplayExecutionPtr)GetChakraCoreSymbol(library, "JsTTDReplayExecution");
192191
m_jsApiHooks.pfJsrtVarSerializer = (JsAPIHooks::JsrtVarSerializerPtr)GetChakraCoreSymbol(library, "JsVarSerializer");
192+
m_jsApiHooks.pfJsrtVarSerializerSetTransferableVars = (JsAPIHooks::JsrtVarSerializerSetTransferableVarsPtr)GetChakraCoreSymbol(library, "JsVarSerializerSetTransferableVars");
193+
m_jsApiHooks.pfJsrtVarSerializerWriteValue = (JsAPIHooks::JsrtVarSerializerWriteValuePtr)GetChakraCoreSymbol(library, "JsVarSerializerWriteValue");
194+
m_jsApiHooks.pfJsrtVarSerializerReleaseData = (JsAPIHooks::JsrtVarSerializerReleaseDataPtr)GetChakraCoreSymbol(library, "JsVarSerializerReleaseData");
195+
m_jsApiHooks.pfJsrtVarSerializerFree = (JsAPIHooks::JsrtVarSerializerFreePtr)GetChakraCoreSymbol(library, "JsVarSerializerFree");
193196
m_jsApiHooks.pfJsrtVarDeserializer = (JsAPIHooks::JsrtVarDeserializerPtr)GetChakraCoreSymbol(library, "JsVarDeserializer");
197+
m_jsApiHooks.pfJsrtVarDeserializerSetTransferableVars = (JsAPIHooks::JsrtVarDeserializerSetTransferableVarsPtr)GetChakraCoreSymbol(library, "JsVarDeserializerSetTransferableVars");
198+
m_jsApiHooks.pfJsrtVarDeserializerReadValue = (JsAPIHooks::JsrtVarDeserializerReadValuePtr)GetChakraCoreSymbol(library, "JsVarDeserializerReadValue");
199+
m_jsApiHooks.pfJsrtVarDeserializerFree = (JsAPIHooks::JsrtVarDeserializerFreePtr)GetChakraCoreSymbol(library, "JsVarDeserializerFree");
200+
194201
m_jsApiHooks.pfJsrtDetachArrayBuffer = (JsAPIHooks::JsrtDetachArrayBufferPtr)GetChakraCoreSymbol(library, "JsDetachArrayBuffer");
195202

196203
#ifdef _WIN32

bin/ch/ChakraRtInterface.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ struct JsAPIHooks
1616
typedef JsErrorCode (WINAPI *JsrtDisposeRuntimePtr)(JsRuntimeHandle runtime);
1717
typedef JsErrorCode (WINAPI *JsrtCreateObjectPtr)(JsValueRef *object);
1818
typedef JsErrorCode (WINAPI *JsrtCreateExternalObjectPtr)(void* data, JsFinalizeCallback callback, JsValueRef *object);
19-
typedef JsErrorCode (WINAPI *JsrtCreateCustomExternalObjectPtr)(void* data, JsFinalizeCallback callback, JsGetterSetterInterceptor ** getterSetterInterceptor, JsValueRef *object);
2019
typedef JsErrorCode (WINAPI *JsrtGetArrayForEachFunctionPtr)(JsValueRef *result);
2120
typedef JsErrorCode (WINAPI *JsrtGetArrayKeysFunctionPtr)(JsValueRef *result);
2221
typedef JsErrorCode (WINAPI *JsrtGetArrayValuesFunctionPtr)(JsValueRef *result);
@@ -150,7 +149,6 @@ struct JsAPIHooks
150149
JsrtDisposeRuntimePtr pfJsrtDisposeRuntime;
151150
JsrtCreateObjectPtr pfJsrtCreateObject;
152151
JsrtCreateExternalObjectPtr pfJsrtCreateExternalObject;
153-
JsrtCreateCustomExternalObjectPtr pfJsrtCreateCustomExternalObject;
154152
JsrtGetArrayForEachFunctionPtr pfJsrtGetArrayForEachFunction;
155153
JsrtGetArrayKeysFunctionPtr pfJsrtGetArrayKeysFunction;
156154
JsrtGetArrayValuesFunctionPtr pfJsrtGetArrayValuesFunction;
@@ -386,7 +384,6 @@ class ChakraRTInterface
386384
static JsErrorCode WINAPI JsDisposeRuntime(JsRuntimeHandle runtime) { return HOOK_JS_API(DisposeRuntime(runtime)); }
387385
static JsErrorCode WINAPI JsCreateObject(JsValueRef *object) { return HOOK_JS_API(CreateObject(object)); }
388386
static JsErrorCode WINAPI JsCreateExternalObject(void *data, JsFinalizeCallback callback, JsValueRef *object) { return HOOK_JS_API(CreateExternalObject(data, callback, object)); }
389-
static JsErrorCode WINAPI JsCreateCustomExternalObject(void *data, JsFinalizeCallback callback, JsGetterSetterInterceptor ** getterSetterInterceptor, JsValueRef * object) { return HOOK_JS_API(CreateCustomExternalObject(data, callback, getterSetterInterceptor, object)); }
390387
static JsErrorCode WINAPI JsGetArrayForEachFunction(JsValueRef * result) { return HOOK_JS_API(GetArrayForEachFunction(result)); }
391388
static JsErrorCode WINAPI JsGetArrayKeysFunction(JsValueRef * result) { return HOOK_JS_API(GetArrayKeysFunction(result)); }
392389
static JsErrorCode WINAPI JsGetArrayValuesFunction(JsValueRef * result) { return HOOK_JS_API(GetArrayValuesFunction(result)); }

lib/Jsrt/ChakraCommon.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -739,14 +739,6 @@ typedef unsigned short uint16_t;
739739
/// </param>
740740
typedef void (CHAKRA_CALLBACK *JsFinalizeCallback)(_In_opt_ void *data);
741741

742-
/// <summary>
743-
/// A trace callback.
744-
/// </summary>
745-
/// <param name="data">
746-
/// The external data that was passed in when creating the object being traced.
747-
/// </param>
748-
typedef void (CHAKRA_CALLBACK *JsTraceCallback)(_In_opt_ void *data);
749-
750742
/// <summary>
751743
/// A function callback.
752744
/// </summary>

lib/Jsrt/ChakraCore.h

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,14 @@ typedef bool (CHAKRA_CALLBACK *JsDOMWrapperTracingDoneCallback)(_In_opt_ void *d
263263
/// </summary>
264264
typedef void(CHAKRA_CALLBACK *JsDOMWrapperTracingEnterFinalPauseCallback)(_In_opt_ void *data);
265265

266+
/// <summary>
267+
/// A trace callback.
268+
/// </summary>
269+
/// <param name="data">
270+
/// The external data that was passed in when creating the object being traced.
271+
/// </param>
272+
typedef void (CHAKRA_CALLBACK *JsTraceCallback)(_In_opt_ void *data);
273+
266274
/// <summary>
267275
/// Creates a new enhanced JavaScript function.
268276
/// </summary>
@@ -1053,6 +1061,29 @@ CHAKRA_API
10531061
_In_ JsValueRef object2,
10541062
_Out_ bool *result);
10551063

1064+
/// <summary>
1065+
/// Creates a new object (with prototype) that stores some external data.
1066+
/// </summary>
1067+
/// <remarks>
1068+
/// Requires an active script context.
1069+
/// </remarks>
1070+
/// <param name="data">External data that the object will represent. May be null.</param>
1071+
/// <param name="finalizeCallback">
1072+
/// A callback for when the object is finalized. May be null.
1073+
/// </param>
1074+
/// <param name="prototype">Prototype object or nullptr.</param>
1075+
/// <param name="object">The new object.</param>
1076+
/// <returns>
1077+
/// The code <c>JsNoError</c> if the operation succeeded, a failure code otherwise.
1078+
/// </returns>
1079+
CHAKRA_API
1080+
JsCreateExternalObjectWithPrototype(
1081+
_In_opt_ void *data,
1082+
_In_opt_ JsFinalizeCallback finalizeCallback,
1083+
_In_opt_ JsValueRef prototype,
1084+
_Out_ JsValueRef *object);
1085+
1086+
/// <summary>
10561087
/// Creates a new object (with prototype) that stores some data.
10571088
/// </summary>
10581089
/// <remarks>
@@ -1078,6 +1109,7 @@ JsCreateTracedExternalObject(
10781109
_In_opt_ JsValueRef prototype,
10791110
_Out_ JsValueRef *object);
10801111

1112+
/// <summary>
10811113
/// Creates a new object (with prototype) that stores some external data and also supports interceptors.
10821114
/// </summary>
10831115
/// <remarks>
@@ -1167,6 +1199,7 @@ JsIsConstructor(
11671199
_In_ JsValueRef object,
11681200
_Out_ bool *isConstructor);
11691201

1202+
/// <summary>
11701203
/// Clones an object
11711204
/// </summary>
11721205
/// <param name="source">The original object.</param>

lib/Jsrt/Core/JsrtCore.cpp

Lines changed: 31 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,37 @@ CHAKRA_API JsCreateCustomExternalObject(
599599
});
600600
}
601601

602+
CHAKRA_API JsCreateTracedExternalObject(
603+
_In_opt_ void *data,
604+
_In_opt_ size_t inlineSlotSize,
605+
_In_opt_ JsTraceCallback traceCallback,
606+
_In_opt_ JsFinalizeCallback finalizeCallback,
607+
_In_opt_ JsValueRef prototype,
608+
_Out_ JsValueRef *object)
609+
{
610+
return ContextAPINoScriptWrapper([&](Js::ScriptContext *scriptContext, TTDRecorder& _actionEntryPopper) -> JsErrorCode {
611+
PERFORM_JSRT_TTD_RECORD_ACTION(scriptContext, RecordJsRTAllocateExternalObject, prototype);
612+
613+
PARAM_NOT_NULL(object);
614+
615+
Js::RecyclableObject * prototypeObject = nullptr;
616+
if (prototype != JS_INVALID_REFERENCE)
617+
{
618+
VALIDATE_INCOMING_OBJECT_OR_NULL(prototype, scriptContext);
619+
prototypeObject = Js::VarTo<Js::RecyclableObject>(prototype);
620+
}
621+
if (inlineSlotSize > UINT32_MAX)
622+
{
623+
return JsErrorInvalidArgument;
624+
}
625+
*object = JsrtExternalObject::Create(data, (uint)inlineSlotSize, traceCallback, finalizeCallback, prototypeObject, scriptContext, nullptr);
626+
627+
PERFORM_JSRT_TTD_RECORD_ACTION_RESULT(scriptContext, object);
628+
629+
return JsNoError;
630+
});
631+
}
632+
602633
CHAKRA_API JsPrivateHasProperty(
603634
_In_ JsValueRef object,
604635
_In_ JsValueRef key,
@@ -830,99 +861,6 @@ CHAKRA_API JsCreateStringUtf16(
830861
}
831862

832863

833-
template <class CopyFunc>
834-
JsErrorCode WriteStringCopy(
835-
JsValueRef value,
836-
int start,
837-
int length,
838-
_Out_opt_ size_t* written,
839-
const CopyFunc& copyFunc)
840-
{
841-
if (written)
842-
{
843-
*written = 0; // init to 0 for default
844-
}
845-
846-
const char16* str = nullptr;
847-
size_t strLength = 0;
848-
JsErrorCode errorCode = JsStringToPointer(value, &str, &strLength);
849-
if (errorCode != JsNoError)
850-
{
851-
return errorCode;
852-
}
853-
854-
if (start < 0 || (size_t)start > strLength)
855-
{
856-
return JsErrorInvalidArgument; // start out of range, no chars written
857-
}
858-
859-
size_t count = min(static_cast<size_t>(length), strLength - start);
860-
if (count == 0)
861-
{
862-
return JsNoError; // no chars written
863-
}
864-
865-
errorCode = copyFunc(str + start, count, written);
866-
if (errorCode != JsNoError)
867-
{
868-
return errorCode;
869-
}
870-
871-
if (written)
872-
{
873-
*written = count;
874-
}
875-
876-
return JsNoError;
877-
}
878-
879-
CHAKRA_API JsCopyStringUtf16(
880-
_In_ JsValueRef value,
881-
_In_ int start,
882-
_In_ int length,
883-
_Out_opt_ uint16_t* buffer,
884-
_Out_opt_ size_t* written)
885-
{
886-
PARAM_NOT_NULL(value);
887-
VALIDATE_JSREF(value);
888-
889-
return WriteStringCopy(value, start, length, written,
890-
[buffer](const char16* src, size_t count, size_t *needed)
891-
{
892-
if (buffer)
893-
{
894-
memmove(buffer, src, sizeof(char16) * count);
895-
}
896-
return JsNoError;
897-
});
898-
}
899-
900-
CHAKRA_API JsCopyString(
901-
_In_ JsValueRef value,
902-
_Out_opt_ char* buffer,
903-
_In_ size_t bufferSize,
904-
_Out_opt_ size_t* length)
905-
{
906-
PARAM_NOT_NULL(value);
907-
VALIDATE_JSREF(value);
908-
909-
const char16* str = nullptr;
910-
size_t strLength = 0;
911-
JsErrorCode errorCode = JsStringToPointer(value, &str, &strLength);
912-
if (errorCode != JsNoError)
913-
{
914-
return errorCode;
915-
}
916-
917-
utf8::WideToNarrow utf8Str(str, strLength, buffer, bufferSize);
918-
if (length)
919-
{
920-
*length = utf8Str.Length();
921-
}
922-
923-
return JsNoError;
924-
}
925-
926864
CHAKRA_API JsCreatePropertyString(
927865
_In_z_ const char *name,
928866
_In_ size_t length,
@@ -943,50 +881,6 @@ CHAKRA_API JsCreatePropertyString(
943881
});
944882
}
945883

946-
CHAKRA_API JsCopyPropertyId(
947-
_In_ JsPropertyIdRef propertyId,
948-
_Out_ char* buffer,
949-
_In_ size_t bufferSize,
950-
_Out_ size_t* length)
951-
{
952-
PARAM_NOT_NULL(propertyId);
953-
954-
const char16* str = nullptr;
955-
JsErrorCode errorCode = JsGetPropertyNameFromId(propertyId, &str);
956-
957-
if (errorCode != JsNoError)
958-
{
959-
return errorCode;
960-
}
961-
962-
utf8::WideToNarrow utf8Str(str);
963-
if (!buffer)
964-
{
965-
if (length)
966-
{
967-
*length = utf8Str.Length();
968-
}
969-
}
970-
else
971-
{
972-
size_t count = min(bufferSize, utf8Str.Length());
973-
// Try to copy whole characters if buffer size insufficient
974-
auto maxFitChars = utf8::ByteIndexIntoCharacterIndex(
975-
(LPCUTF8)(const char*)utf8Str, count,
976-
utf8::DecodeOptions::doChunkedEncoding);
977-
count = utf8::CharacterIndexToByteIndex(
978-
(LPCUTF8)(const char*)utf8Str, utf8Str.Length(), maxFitChars);
979-
980-
memmove(buffer, utf8Str, sizeof(char) * count);
981-
if (length)
982-
{
983-
*length = count;
984-
}
985-
}
986-
987-
return JsNoError;
988-
}
989-
990884
CHAKRA_API JsCreatePromise(_Out_ JsValueRef *promise, _Out_ JsValueRef *resolve, _Out_ JsValueRef *reject)
991885
{
992886
return ContextAPIWrapper<JSRT_MAYBE_TRUE>([&](Js::ScriptContext *scriptContext, TTDRecorder& _actionEntryPopper) -> JsErrorCode {
@@ -1219,29 +1113,6 @@ CHAKRA_API JsGetAndClearExceptionWithMetadata(_Out_ JsValueRef *metadata)
12191113
});
12201114
}
12211115

1222-
CHAKRA_API JsCopyStringOneByte(
1223-
_In_ JsValueRef value,
1224-
_In_ int start,
1225-
_In_ int length,
1226-
_Out_opt_ char* buffer,
1227-
_Out_opt_ size_t* written)
1228-
{
1229-
PARAM_NOT_NULL(value);
1230-
VALIDATE_JSREF(value);
1231-
return WriteStringCopy(value, start, length, written,
1232-
[buffer](const char16* src, size_t count, size_t *needed)
1233-
{
1234-
if (buffer)
1235-
{
1236-
for (size_t i = 0; i < count; i++)
1237-
{
1238-
buffer[i] = (char)src[i];
1239-
}
1240-
}
1241-
return JsNoError;
1242-
});
1243-
}
1244-
12451116
CHAKRA_API JsGetDataViewInfo(
12461117
_In_ JsValueRef dataView,
12471118
_Out_opt_ JsValueRef *arrayBuffer,

0 commit comments

Comments
 (0)