2
0
Эх сурвалжийг харах

Update Jsrt Utf8 types and naming

Oguz Bastemur 9 жил өмнө
parent
commit
adbea399e0

+ 3 - 3
bin/ch/ChakraRtInterface.cpp

@@ -141,9 +141,9 @@ bool ChakraRTInterface::LoadChakraDll(ArgInfo* argInfo, HINSTANCE *outLibrary)
     m_jsApiHooks.pfJsrtParse = (JsAPIHooks::JsrtParse)GetChakraCoreSymbol(library, "JsParse");
     m_jsApiHooks.pfJsrtSerialize = (JsAPIHooks::JsrtSerialize)GetChakraCoreSymbol(library, "JsSerialize");
     m_jsApiHooks.pfJsrtRunSerialized = (JsAPIHooks::JsrtRunSerialized)GetChakraCoreSymbol(library, "JsRunSerialized");
-    m_jsApiHooks.pfJsrtCreateStringUtf8 = (JsAPIHooks::JsrtCreateStringUtf8)GetChakraCoreSymbol(library, "JsCreateStringUtf8");
-    m_jsApiHooks.pfJsrtCopyStringUtf8 = (JsAPIHooks::JsrtCopyStringUtf8)GetChakraCoreSymbol(library, "JsCopyStringUtf8");
-    m_jsApiHooks.pfJsrtCreatePropertyIdUtf8= (JsAPIHooks::JsrtCreatePropertyIdUtf8)GetChakraCoreSymbol(library, "JsCreatePropertyIdUtf8");
+    m_jsApiHooks.pfJsrtCreateString = (JsAPIHooks::JsrtCreateString)GetChakraCoreSymbol(library, "JsCreateString");
+    m_jsApiHooks.pfJsrtCopyString = (JsAPIHooks::JsrtCopyString)GetChakraCoreSymbol(library, "JsCopyString");
+    m_jsApiHooks.pfJsrtCreatePropertyId = (JsAPIHooks::JsrtCreatePropertyId)GetChakraCoreSymbol(library, "JsCreatePropertyId");
     m_jsApiHooks.pfJsrtCreateExternalArrayBuffer = (JsAPIHooks::JsrtCreateExternalArrayBuffer)GetChakraCoreSymbol(library, "JsCreateExternalArrayBuffer");
 
     m_jsApiHooks.pfJsrtTTDCreateRecordRuntime = (JsAPIHooks::JsrtTTDCreateRecordRuntimePtr)GetChakraCoreSymbol(library, "JsTTDCreateRecordRuntime");

+ 9 - 9
bin/ch/ChakraRtInterface.h

@@ -73,10 +73,10 @@ struct JsAPIHooks
     typedef JsErrorCode(WINAPI *JsrtParse)(JsValueRef script, JsSourceContext sourceContext, JsValueRef sourceUrl, JsParseScriptAttributes parseAttributes, JsValueRef *result);
     typedef JsErrorCode(WINAPI *JsrtSerialize)(JsValueRef script, JsValueRef *buffer, JsParseScriptAttributes parseAttributes);
     typedef JsErrorCode(WINAPI *JsrtRunSerialized)(JsValueRef buffer, JsSerializedLoadScriptCallback scriptLoadCallback, JsSourceContext sourceContext, JsValueRef sourceUrl, JsValueRef * result);
-    typedef JsErrorCode(WINAPI *JsrtCopyStringUtf8)(JsValueRef value, unsigned char* buffer, size_t bufferSize, size_t* written);
-    typedef JsErrorCode(WINAPI *JsrtCreateStringUtf8)(const unsigned char *content, size_t length, JsValueRef *value);
+    typedef JsErrorCode(WINAPI *JsrtCopyString)(JsValueRef value, char* buffer, size_t bufferSize, size_t* written);
+    typedef JsErrorCode(WINAPI *JsrtCreateString)(const char *content, size_t length, JsValueRef *value);
     typedef JsErrorCode(WINAPI *JsrtCreateExternalArrayBuffer)(void *data, unsigned int byteLength, JsFinalizeCallback finalizeCallback, void *callbackState, JsValueRef *result);
-    typedef JsErrorCode(WINAPI *JsrtCreatePropertyIdUtf8)(const char *name, size_t length, JsPropertyIdRef *propertyId);
+    typedef JsErrorCode(WINAPI *JsrtCreatePropertyId)(const char *name, size_t length, JsPropertyIdRef *propertyId);
 
     typedef JsErrorCode(WINAPI *JsrtTTDCreateRecordRuntimePtr)(JsRuntimeAttributes attributes, const byte* infoUri, size_t infoUriCount, size_t snapInterval, size_t snapHistoryLength, JsTTDInitializeForWriteLogStreamCallback writeInitializeFunction, TTDOpenResourceStreamCallback openResourceStream, JsTTDReadBytesFromStreamCallback readBytesFromStream, JsTTDWriteBytesToStreamCallback writeBytesToStream, JsTTDFlushAndCloseStreamCallback flushAndCloseStream, JsThreadServiceCallback threadService, JsRuntimeHandle *runtime);
     typedef JsErrorCode(WINAPI *JsrtTTDCreateReplayRuntimePtr)(JsRuntimeAttributes attributes, const byte* infoUri, size_t infoUriCount, bool enableDebugging, JsTTDInitializeForWriteLogStreamCallback writeInitializeFunction, TTDOpenResourceStreamCallback openResourceStream, JsTTDReadBytesFromStreamCallback readBytesFromStream, JsTTDWriteBytesToStreamCallback writeBytesToStream, JsTTDFlushAndCloseStreamCallback flushAndCloseStream, JsThreadServiceCallback threadService, JsRuntimeHandle *runtime);
@@ -164,9 +164,9 @@ struct JsAPIHooks
     JsrtParse pfJsrtParse;
     JsrtSerialize pfJsrtSerialize;
     JsrtRunSerialized pfJsrtRunSerialized;
-    JsrtCreateStringUtf8 pfJsrtCreateStringUtf8;
-    JsrtCopyStringUtf8 pfJsrtCopyStringUtf8;
-    JsrtCreatePropertyIdUtf8 pfJsrtCreatePropertyIdUtf8;
+    JsrtCreateString pfJsrtCreateString;
+    JsrtCopyString pfJsrtCopyString;
+    JsrtCreatePropertyId pfJsrtCreatePropertyId;
     JsrtCreateExternalArrayBuffer pfJsrtCreateExternalArrayBuffer;
 
     JsrtTTDCreateRecordRuntimePtr pfJsrtTTDCreateRecordRuntime;
@@ -368,9 +368,9 @@ public:
     static JsErrorCode WINAPI JsParse(JsValueRef script, JsSourceContext sourceContext, JsValueRef sourceUrl, JsParseScriptAttributes parseAttributes, JsValueRef *result) { return HOOK_JS_API(Parse(script, sourceContext, sourceUrl, parseAttributes, result)); }
     static JsErrorCode WINAPI JsSerialize(JsValueRef script, JsValueRef *buffer, JsParseScriptAttributes parseAttributes) { return HOOK_JS_API(Serialize(script, buffer, parseAttributes)); }
     static JsErrorCode WINAPI JsRunSerialized(JsValueRef buffer, JsSerializedLoadScriptCallback scriptLoadCallback, JsSourceContext sourceContext, JsValueRef sourceUrl, JsValueRef * result) { return HOOK_JS_API(RunSerialized(buffer, scriptLoadCallback, sourceContext, sourceUrl, result)); }
-    static JsErrorCode WINAPI JsCopyStringUtf8(JsValueRef value, unsigned char* buffer, size_t bufferSize, size_t* written) { return HOOK_JS_API(CopyStringUtf8(value, buffer, bufferSize, written)); }
-    static JsErrorCode WINAPI JsCreateStringUtf8(const unsigned char *content, size_t length, JsValueRef *value) { return HOOK_JS_API(CreateStringUtf8(content, length, value)); }
-    static JsErrorCode WINAPI JsCreatePropertyIdUtf8(const char *name, size_t length, JsPropertyIdRef *propertyId) { return HOOK_JS_API(CreatePropertyIdUtf8(name, length, propertyId)); }
+    static JsErrorCode WINAPI JsCopyString(JsValueRef value, char* buffer, size_t bufferSize, size_t* written) { return HOOK_JS_API(CopyString(value, buffer, bufferSize, written)); }
+    static JsErrorCode WINAPI JsCreateString(const char *content, size_t length, JsValueRef *value) { return HOOK_JS_API(CreateString(content, length, value)); }
+    static JsErrorCode WINAPI JsCreatePropertyId(const char *name, size_t length, JsPropertyIdRef *propertyId) { return HOOK_JS_API(CreatePropertyId(name, length, propertyId)); }
     static JsErrorCode WINAPI JsCreateExternalArrayBuffer(void *data, unsigned int byteLength, JsFinalizeCallback finalizeCallback, void *callbackState, JsValueRef *result)  { return HOOK_JS_API(CreateExternalArrayBuffer(data, byteLength, finalizeCallback, callbackState, result)); }
 };
 

+ 4 - 4
bin/ch/Debugger.cpp

@@ -235,8 +235,8 @@ bool Debugger::Initialize()
         (void*)controllerScript, (unsigned int)strlen(controllerScript),
         nullptr, nullptr, &scriptSource));
     JsValueRef fname;
-    ChakraRTInterface::JsCreateStringUtf8(
-        (const unsigned char*)"DbgController.js", strlen("DbgController.js"), &fname);
+    ChakraRTInterface::JsCreateString(
+        "DbgController.js", strlen("DbgController.js"), &fname);
     IfJsrtErrorFailLogAndRetFalse(ChakraRTInterface::JsParse(scriptSource,
         JS_SOURCE_CONTEXT_NONE, fname, JsParseScriptAttributeLibraryCode,
         &globalFunc));
@@ -323,8 +323,8 @@ bool Debugger::SetBaseline()
                 script[numChars] = '\0';
 
                 JsValueRef wideScriptRef;
-                IfJsrtErrorFailLogAndRetFalse(ChakraRTInterface::JsCreateStringUtf8(
-                  (const unsigned char*)script, strlen(script), &wideScriptRef));
+                IfJsrtErrorFailLogAndRetFalse(ChakraRTInterface::JsCreateString(
+                  script, strlen(script), &wideScriptRef));
 
                 this->CallFunctionNoResult("SetBaseline", wideScriptRef);
             }

+ 23 - 27
bin/ch/WScriptJsrt.cpp

@@ -51,14 +51,12 @@ DWORD_PTR WScriptJsrt::sourceContext = 0;
         char *errorMessageNarrow;                                                   \
         if (FAILED(WideStringToNarrowDynamic(errorMessage, &errorMessageNarrow)))   \
         {                                                                           \
-            errorCode = ChakraRTInterface::JsCreateStringUtf8(                      \
-                (const unsigned char*)outOfMemoryString,                            \
+            errorCode = ChakraRTInterface::JsCreateString(outOfMemoryString,        \
                 strlen(outOfMemoryString), &errorMessageString);                    \
         }                                                                           \
         else                                                                        \
         {                                                                           \
-            errorCode = ChakraRTInterface::JsCreateStringUtf8(                      \
-                (const unsigned char*)errorMessageNarrow,                           \
+            errorCode = ChakraRTInterface::JsCreateString(errorMessageNarrow,       \
                 strlen(errorMessageNarrow), &errorMessageString);                   \
             free(errorMessageNarrow);                                               \
         }                                                                           \
@@ -90,8 +88,8 @@ bool WScriptJsrt::CreateArgumentsObject(JsValueRef *argsObject)
         {
             return false;
         }
-        JsErrorCode errCode  = ChakraRTInterface::JsCreateStringUtf8(
-            (const unsigned char*)argNarrow,
+        JsErrorCode errCode  = ChakraRTInterface::JsCreateString(
+            argNarrow,
             strlen(argNarrow), &value);
         free(argNarrow);
         IfJsrtErrorFail(errCode, false);
@@ -325,8 +323,8 @@ JsErrorCode WScriptJsrt::LoadModuleFromString(LPCSTR fileName, LPCSTR fileConten
     if (moduleRecordEntry == moduleRecordMap.end())
     {
         JsValueRef specifier;
-        errorCode = ChakraRTInterface::JsCreateStringUtf8(
-            (const unsigned char*)fileName, strlen(fileName), &specifier);
+        errorCode = ChakraRTInterface::JsCreateString(
+            fileName, strlen(fileName), &specifier);
         if (errorCode == JsNoError)
         {
             errorCode = ChakraRTInterface::JsInitializeModuleRecord(
@@ -413,7 +411,7 @@ JsValueRef WScriptJsrt::LoadScript(JsValueRef callee, LPCSTR fileName,
         IfJsrtErrorSetGo(ChakraRTInterface::JsCreateExternalArrayBuffer((void*)fileContent,
             (unsigned int)strlen(fileContent), nullptr, nullptr, &scriptSource));
         JsValueRef fname;
-        IfJsrtErrorSetGo(ChakraRTInterface::JsCreateStringUtf8((const unsigned char*)fullPathNarrow,
+        IfJsrtErrorSetGo(ChakraRTInterface::JsCreateString(fullPathNarrow,
             strlen(fullPathNarrow), &fname));
         errorCode = ChakraRTInterface::JsRun(scriptSource, GetNextSourceContext(),
             fname, JsParseScriptAttributeNone, &returnValue);
@@ -446,7 +444,7 @@ JsValueRef WScriptJsrt::LoadScript(JsValueRef callee, LPCSTR fileName,
         IfJsrtErrorSetGo(ChakraRTInterface::JsCreateExternalArrayBuffer((void*)fileContent,
             (unsigned int)strlen(fileContent), nullptr, nullptr, &scriptSource));
         JsValueRef fname;
-        IfJsrtErrorSetGo(ChakraRTInterface::JsCreateStringUtf8((const unsigned char*)fullPathNarrow,
+        IfJsrtErrorSetGo(ChakraRTInterface::JsCreateString(fullPathNarrow,
             strlen(fullPathNarrow), &fname));
         errorCode = ChakraRTInterface::JsRun(scriptSource, GetNextSourceContext(),
             fname, JsParseScriptAttributeNone, &returnValue);
@@ -723,8 +721,8 @@ bool WScriptJsrt::CreateNamedFunction(const char* nameString, JsNativeFunction c
     JsValueRef* functionVar)
 {
     JsValueRef nameVar;
-    IfJsrtErrorFail(ChakraRTInterface::JsCreateStringUtf8(
-        (const unsigned char*)nameString, strlen(nameString), &nameVar), false);
+    IfJsrtErrorFail(ChakraRTInterface::JsCreateString(
+        nameString, strlen(nameString), &nameVar), false);
     IfJsrtErrorFail(ChakraRTInterface::JsCreateNamedFunction(nameVar, callback,
         nullptr, functionVar), false);
     return true;
@@ -851,8 +849,8 @@ bool WScriptJsrt::Initialize()
     JsPropertyIdRef archProperty;
     IfJsrtErrorFail(CreatePropertyIdFromString("ARCH", &archProperty), false);
     JsValueRef archValue;
-    IfJsrtErrorFail(ChakraRTInterface::JsCreateStringUtf8(
-        (const unsigned char*)CPU_ARCH_TEXT, strlen(CPU_ARCH_TEXT), &archValue), false);
+    IfJsrtErrorFail(ChakraRTInterface::JsCreateString(
+        CPU_ARCH_TEXT, strlen(CPU_ARCH_TEXT), &archValue), false);
     IfJsrtErrorFail(ChakraRTInterface::JsSetProperty(platformObject, archProperty,
         archValue, true), false);
 
@@ -865,8 +863,8 @@ bool WScriptJsrt::Initialize()
 #else
 #define BUILD_TYPE_STRING_CH "Release" // consider Test is also Release build (O3)
 #endif
-    IfJsrtErrorFail(ChakraRTInterface::JsCreateStringUtf8(
-        (const unsigned char*)BUILD_TYPE_STRING_CH, strlen(BUILD_TYPE_STRING_CH), &buildValue), false);
+    IfJsrtErrorFail(ChakraRTInterface::JsCreateString(
+        BUILD_TYPE_STRING_CH, strlen(BUILD_TYPE_STRING_CH), &buildValue), false);
     IfJsrtErrorFail(ChakraRTInterface::JsSetProperty(platformObject, buildProperty,
         buildValue, true), false);
 #undef BUILD_TYPE_STRING_CH
@@ -875,8 +873,8 @@ bool WScriptJsrt::Initialize()
     JsPropertyIdRef linkProperty;
     IfJsrtErrorFail(CreatePropertyIdFromString("LINK_TYPE", &linkProperty), false);
     JsValueRef linkValue;
-    IfJsrtErrorFail(ChakraRTInterface::JsCreateStringUtf8(
-        (const unsigned char*)LINK_TYPE, strlen(LINK_TYPE), &linkValue), false);
+    IfJsrtErrorFail(ChakraRTInterface::JsCreateString(
+        LINK_TYPE, strlen(LINK_TYPE), &linkValue), false);
     IfJsrtErrorFail(ChakraRTInterface::JsSetProperty(platformObject, linkProperty,
       linkValue, true), false);
 
@@ -887,8 +885,8 @@ bool WScriptJsrt::Initialize()
     JsPropertyIdRef binaryPathProperty;
     IfJsrtErrorFail(CreatePropertyIdFromString("BINARY_PATH", &binaryPathProperty), false);
 
-    IfJsrtErrorFail(ChakraRTInterface::JsCreateStringUtf8(
-        (const unsigned char*)CH_BINARY_LOCATION,
+    IfJsrtErrorFail(ChakraRTInterface::JsCreateString(
+        CH_BINARY_LOCATION,
         strlen(CH_BINARY_LOCATION), &binaryPathValue), false);
     IfJsrtErrorFail(ChakraRTInterface::JsSetProperty(
         platformObject, binaryPathProperty, binaryPathValue, true), false);
@@ -897,9 +895,8 @@ bool WScriptJsrt::Initialize()
     JsPropertyIdRef osProperty;
     IfJsrtErrorFail(CreatePropertyIdFromString("OS", &osProperty), false);
     JsValueRef osValue;
-    IfJsrtErrorFail(ChakraRTInterface::JsCreateStringUtf8(
-        (const unsigned char*)DEST_PLATFORM_TEXT,
-        strlen(DEST_PLATFORM_TEXT), &osValue), false);
+    IfJsrtErrorFail(ChakraRTInterface::JsCreateString(
+        DEST_PLATFORM_TEXT, strlen(DEST_PLATFORM_TEXT), &osValue), false);
     IfJsrtErrorFail(ChakraRTInterface::JsSetProperty(platformObject, osProperty,
         osValue, true), false);
 
@@ -978,9 +975,8 @@ JsValueRef __stdcall WScriptJsrt::LoadTextFileCallback(JsValueRef callee, bool i
             else
             {
                 JsValueRef stringObject;
-                IfJsrtErrorSetGo(ChakraRTInterface::JsCreateStringUtf8(
-                    (const unsigned char*)fileContent,
-                    lengthBytes, &stringObject));
+                IfJsrtErrorSetGo(ChakraRTInterface::JsCreateString(
+                    fileContent, lengthBytes, &stringObject));
                 return stringObject;
             }
         }
@@ -1204,7 +1200,7 @@ HRESULT WScriptJsrt::CallbackMessage::CallFunction(LPCSTR fileName)
         IfJsrtErrorHR(ChakraRTInterface::JsConvertValueToString(m_function, &stringValue));
 
         JsValueRef fname;
-        ChakraRTInterface::JsCreateStringUtf8((const unsigned char*)"", strlen(""), &fname);
+        ChakraRTInterface::JsCreateString("", strlen(""), &fname);
         // Run the code
         errorCode = ChakraRTInterface::JsRun(stringValue, JS_SOURCE_CONTEXT_NONE,
           fname, JsParseScriptAttributeArrayBufferIsUtf16Encoded,

+ 1 - 1
bin/ch/ch.cpp

@@ -290,7 +290,7 @@ HRESULT RunScript(const char* fileName, LPCSTR fileContents, JsValueRef bufferVa
 
         JsErrorCode runScript;
         JsValueRef fname;
-        IfJsErrorFailLog(ChakraRTInterface::JsCreateStringUtf8((const unsigned char*)fullPath,
+        IfJsErrorFailLog(ChakraRTInterface::JsCreateString(fullPath,
             strlen(fullPath), &fname));
 
         if(bufferValue != nullptr)

+ 3 - 4
bin/ch/stdafx.h

@@ -182,12 +182,11 @@ public:
         if (errorCode == JsNoError)
         {
             size_t len = 0;
-            errorCode = ChakraRTInterface::JsCopyStringUtf8(strValue, nullptr, 0, &len);
+            errorCode = ChakraRTInterface::JsCopyString(strValue, nullptr, 0, &len);
             if (errorCode == JsNoError)
             {
                 data = (char*) malloc((len + 1) * sizeof(char));
-                unsigned char *udata = (unsigned char*)data;
-                ChakraRTInterface::JsCopyStringUtf8(strValue, udata, len + 1, &length);
+                ChakraRTInterface::JsCopyString(strValue, data, len + 1, &length);
                 AssertMsg(len == length, "If you see this message.. There is something seriously wrong. Good Luck!");
                 *(data + len) = char(0);
             }
@@ -256,7 +255,7 @@ public:
 
 inline JsErrorCode CreatePropertyIdFromString(const char* str, JsPropertyIdRef *Id)
 {
-    return ChakraRTInterface::JsCreatePropertyIdUtf8(str, strlen(str), Id);
+    return ChakraRTInterface::JsCreatePropertyId(str, strlen(str), Id);
 }
 
 #ifdef __ANDROID__

+ 8 - 0
lib/Jsrt/ChakraCommon.h

@@ -91,6 +91,14 @@ typedef UINT32 DWORD;
 
 #endif //  defined(_WIN32) && defined(_MSC_VER)
 
+#if (defined(_MSC_VER) && _MSC_VER < 1900) || (!defined(_MSC_VER) && __cplusplus <= 199711L) // !C++11
+typedef unsigned short uint16_t;
+#endif
+
+#if !defined(NTBUILD) && !defined(CHAKRACOREBUILD_)
+#define CHAKRACOREBUILD_
+#endif
+
     /// <summary>
     ///     An error code returned from a Chakra hosting API.
     /// </summary>

+ 10 - 64
lib/Jsrt/ChakraCore.h

@@ -163,7 +163,6 @@ JsGetModuleHostInfo(
     _In_ JsModuleHostInfoKind moduleHostInfo,
     _Outptr_result_maybenull_ void** hostInfo);
 
-#ifndef NTBUILD
 /// <summary>
 ///     Called by the runtime to load the source code of the serialized script.
 /// </summary>
@@ -177,11 +176,11 @@ typedef bool (CHAKRA_CALLBACK * JsSerializedLoadScriptCallback)
     _Out_ JsParseScriptAttributes *parseAttributes);
 
 /// <summary>
-///     Create JavascriptString variable from C string
+///     Create JavascriptString variable from ASCII or Utf8 string
 /// </summary>
 /// <remarks>
 ///     <para>
-///         C string is expected to be ASCII
+///         Input string can be either ASCII or Utf8
 ///     </para>
 /// </remarks>
 /// <param name="content">Pointer to string memory.</param>
@@ -196,26 +195,6 @@ CHAKRA_API
         _In_ size_t length,
         _Out_ JsValueRef *value);
 
-/// <summary>
-///     Create JavascriptString variable from Utf8 string
-/// </summary>
-/// <remarks>
-///     <para>
-///         Input string can be either ASCII or Utf8
-///     </para>
-/// </remarks>
-/// <param name="content">Pointer to string memory.</param>
-/// <param name="length">Number of bytes within the string</param>
-/// <param name="value">JsValueRef representing the JavascriptString</param>
-/// <returns>
-///     The code <c>JsNoError</c> if the operation succeeded, a failure code otherwise.
-/// </returns>
-CHAKRA_API
-    JsCreateStringUtf8(
-        _In_ const unsigned char *content,
-        _In_ size_t length,
-        _Out_ JsValueRef *value);
-
 /// <summary>
 ///     Create JavascriptString variable from Utf16 string
 /// </summary>
@@ -232,12 +211,12 @@ CHAKRA_API
 /// </returns>
 CHAKRA_API
     JsCreateStringUtf16(
-        _In_ const unsigned short *content,
+        _In_ const uint16_t *content,
         _In_ size_t length,
         _Out_ JsValueRef *value);
 
 /// <summary>
-///     Write JavascriptString value into C string buffer
+///     Write JavascriptString value into C string buffer (Utf8)
 /// </summary>
 /// <remarks>
 ///     <para>
@@ -245,18 +224,10 @@ CHAKRA_API
 ///         `buffer` argument can be nullptr.
 ///         In that case, `written` argument will return the length needed.
 ///     </para>
-///     <para>
-///         when start is out of range or < 0, returns JsErrorInvalidArgument
-///         and `written` will be equal to 0.
-///         If calculated length is 0 (It can be due to string length or `start`
-///         and length combination), then `written` will be equal to 0 and call
-///         returns JsNoError
-///     </para>
 /// </remarks>
 /// <param name="value">JavascriptString value</param>
-/// <param name="start">start offset of buffer</param>
-/// <param name="length">length to be written</param>
 /// <param name="buffer">Pointer to buffer</param>
+/// <param name="bufferSize">Buffer size</param>
 /// <param name="written">Total number of characters written</param>
 /// <returns>
 ///     The code <c>JsNoError</c> if the operation succeeded, a failure code otherwise.
@@ -264,32 +235,7 @@ CHAKRA_API
 CHAKRA_API
     JsCopyString(
         _In_ JsValueRef value,
-        _In_ int start,
-        _In_ int length,
         _Out_opt_ char* buffer,
-        _Out_opt_ size_t* written);
-
-/// <summary>
-///     Write JavascriptString value into Utf8 string buffer
-/// </summary>
-/// <remarks>
-///     <para>
-///         When size of the `buffer` is unknown,
-///         `buffer` argument can be nullptr.
-///         In that case, `written` argument will return the length needed.
-///     </para>
-/// </remarks>
-/// <param name="value">JavascriptString value</param>
-/// <param name="buffer">Pointer to buffer</param>
-/// <param name="bufferSize">Buffer size</param>
-/// <param name="written">Total number of characters written</param>
-/// <returns>
-///     The code <c>JsNoError</c> if the operation succeeded, a failure code otherwise.
-/// </returns>
-CHAKRA_API
-    JsCopyStringUtf8(
-        _In_ JsValueRef value,
-        _Out_opt_ unsigned char* buffer,
         _In_ size_t bufferSize,
         _Out_opt_ size_t* written);
 
@@ -323,7 +269,7 @@ CHAKRA_API
         _In_ JsValueRef value,
         _In_ int start,
         _In_ int length,
-        _Out_opt_ unsigned short* buffer,
+        _Out_opt_ uint16_t* buffer,
         _Out_opt_ size_t* written);
 
 /// <summary>
@@ -417,7 +363,7 @@ CHAKRA_API
 ///     The code <c>JsNoError</c> if the operation succeeded, a failure code otherwise.
 /// </returns>
 CHAKRA_API
-    JsCreatePropertyIdUtf8(
+    JsCreatePropertyId(
         _In_z_ const char *name,
         _In_ size_t length,
         _Out_ JsPropertyIdRef *propertyId);
@@ -443,9 +389,9 @@ CHAKRA_API
 ///     The code <c>JsNoError</c> if the operation succeeded, a failure code otherwise.
 /// </returns>
 CHAKRA_API
-    JsCopyPropertyIdUtf8(
+    JsCopyPropertyId(
         _In_ JsPropertyIdRef propertyId,
-        _Out_ unsigned char* buffer,
+        _Out_ char* buffer,
         _In_ size_t bufferSize,
         _Out_ size_t* length);
 
@@ -547,5 +493,5 @@ CHAKRA_API
         _In_ JsSourceContext sourceContext,
         _In_ JsValueRef sourceUrl,
         _Out_ JsValueRef *result);
-#endif // NTBUILD
+
 #endif // _CHAKRACORE_H_

+ 17 - 18
lib/Jsrt/ChakraDebug.h

@@ -552,7 +552,6 @@ typedef unsigned __int32 uint32_t;
             _In_ unsigned int objectHandle,
             _Out_ JsValueRef *handleObject);
 
-#ifdef _WIN32
     /// <summary>
     ///     Evaluates an expression on given frame.
     /// </summary>
@@ -596,8 +595,7 @@ typedef unsigned __int32 uint32_t;
             _In_ unsigned int stackFrameIndex,
             _Out_ JsValueRef *evalResult);
 
-#endif // _WIN32
-
+#ifdef CHAKRACOREBUILD_
     /// <summary>
     ///     Evaluates an expression on given frame.
     /// </summary>
@@ -639,6 +637,7 @@ typedef unsigned __int32 uint32_t;
         _In_z_ const char *expression,
         _In_ unsigned int stackFrameIndex,
         _Out_ JsValueRef *evalResult);
+#endif // CHAKRACOREBUILD_
 
     /////////////////////
     /// <summary>
@@ -803,10 +802,10 @@ typedef unsigned __int32 uint32_t;
             _In_reads_(infoUriCount) const byte* infoUri,
             _In_ size_t infoUriCount,
             _In_ bool enableDebugging,
-            _In_ JsTTDInitializeForWriteLogStreamCallback writeInitializeFunction, 
+            _In_ JsTTDInitializeForWriteLogStreamCallback writeInitializeFunction,
             _In_ TTDOpenResourceStreamCallback openResourceStream,
-            _In_ JsTTDReadBytesFromStreamCallback readBytesFromStream, 
-            _In_ JsTTDWriteBytesToStreamCallback writeBytesToStream, 
+            _In_ JsTTDReadBytesFromStreamCallback readBytesFromStream,
+            _In_ JsTTDWriteBytesToStreamCallback writeBytesToStream,
             _In_ JsTTDFlushAndCloseStreamCallback flushAndCloseStream,
             _In_opt_ JsThreadServiceCallback threadService,
             _Out_ JsRuntimeHandle *runtime);
@@ -822,7 +821,7 @@ typedef unsigned __int32 uint32_t;
     ///     The code <c>JsNoError</c> if the operation succeeded, a failure code otherwise.
     /// </returns>
     CHAKRA_API JsTTDCreateContext(
-        _In_ JsRuntimeHandle runtimeHandle, 
+        _In_ JsRuntimeHandle runtimeHandle,
         _In_ bool useRuntimeTTDMode,
         _Out_ JsContextRef *newContext);
 
@@ -861,19 +860,19 @@ typedef unsigned __int32 uint32_t;
     CHAKRA_API
         JsTTDEmitRecording();
 
-    /// <summary> 
-    ///     TTD API -- may change in future versions: 
-    ///     Pause Time-Travel recording before executing code on behalf of debugger or other diagnostic/telemetry. 
-    /// </summary> 
-    /// <returns>The code <c>JsNoError</c> if the operation succeeded, a failure code otherwise.</returns> 
+    /// <summary>
+    ///     TTD API -- may change in future versions:
+    ///     Pause Time-Travel recording before executing code on behalf of debugger or other diagnostic/telemetry.
+    /// </summary>
+    /// <returns>The code <c>JsNoError</c> if the operation succeeded, a failure code otherwise.</returns>
     CHAKRA_API
         JsTTDPauseTimeTravelBeforeRuntimeOperation();
 
-    /// <summary> 
-    ///     TTD API -- may change in future versions: 
-    ///     ReStart Time-Travel recording after executing code on behalf of debugger or other diagnostic/telemetry. 
-    /// </summary> 
-    /// <returns>The code <c>JsNoError</c> if the operation succeeded, a failure code otherwise.</returns> 
+    /// <summary>
+    ///     TTD API -- may change in future versions:
+    ///     ReStart Time-Travel recording after executing code on behalf of debugger or other diagnostic/telemetry.
+    /// </summary>
+    /// <returns>The code <c>JsNoError</c> if the operation succeeded, a failure code otherwise.</returns>
     CHAKRA_API
         JsTTDReStartTimeTravelAfterRuntimeOperation();
 
@@ -1010,7 +1009,7 @@ typedef unsigned __int32 uint32_t;
 
     /// <summary>
     ///     TTD API -- may change in future versions:
-    ///     During debug operations some additional information is populated during replay. This runs the code between the given 
+    ///     During debug operations some additional information is populated during replay. This runs the code between the given
     ///     snapshots to poulate this information which may be needed by the debugger to determine time-travel jump targets.
     /// </summary>
     /// <param name="runtimeHandle">The runtime handle that the script is executing in.</param>

+ 10 - 55
lib/Jsrt/Jsrt.cpp

@@ -4066,7 +4066,7 @@ CHAKRA_API JsTTDReplayExecution(_Inout_ JsTTDMoveMode* moveMode, _Out_ int64_t*
 #endif
 }
 
-#ifndef NTBUILD // ChakraCore Only
+#ifdef CHAKRACOREBUILD_
 
 template <class SrcChar, class DstChar>
 static void CastCopy(const SrcChar* src, DstChar* dst, size_t count)
@@ -4085,27 +4085,7 @@ CHAKRA_API JsCreateString(
 {
     PARAM_NOT_NULL(content);
 
-    AutoArrayPtr<uint16_t> data(HeapNewNoThrowArray(uint16_t, length), length);
-    if (!data)
-    {
-        return JsErrorOutOfMemory;
-    }
-
-    // Cast source char to "unsigned" for correct cast
-    CastCopy((unsigned char*)content, (uint16_t*)data, length);
-
-    return JsPointerToString(
-        reinterpret_cast<const char16*>((uint16_t*)data), length, value);
-}
-
-CHAKRA_API JsCreateStringUtf8(
-    _In_ const uint8_t *content,
-    _In_ size_t length,
-    _Out_ JsValueRef *value)
-{
-    PARAM_NOT_NULL(content);
-
-    utf8::NarrowToWide wstr((LPCSTR)content, length);
+    utf8::NarrowToWide wstr(content, length);
     if (!wstr)
     {
         return JsErrorOutOfMemory;
@@ -4172,31 +4152,6 @@ JsErrorCode WriteStringCopy(
     return JsNoError;
 }
 
-CHAKRA_API JsCopyString(
-    _In_ JsValueRef value,
-    _In_ int start,
-    _In_ int length,
-    _Out_opt_ char* buffer,
-    _Out_opt_ size_t* written)
-{
-    PARAM_NOT_NULL(value);
-    VALIDATE_JSREF(value);
-
-    return WriteStringCopy(value, start, length, written,
-        [buffer](const char16* src, size_t count, size_t *needed)
-        {
-            if (buffer)
-            {
-                CastCopy(src, buffer, count);
-            }
-            else
-            {
-                *needed = count;
-            }
-            return JsNoError;
-        });
-}
-
 CHAKRA_API JsCopyStringUtf16(
     _In_ JsValueRef value,
     _In_ int start,
@@ -4222,9 +4177,9 @@ CHAKRA_API JsCopyStringUtf16(
         });
 }
 
-CHAKRA_API JsCopyStringUtf8(
+CHAKRA_API JsCopyString(
     _In_ JsValueRef value,
-    _Out_opt_ uint8_t* buffer,
+    _Out_opt_ char* buffer,
     _In_ size_t bufferSize,
     _Out_opt_ size_t* length)
 {
@@ -4257,7 +4212,7 @@ CHAKRA_API JsCopyStringUtf8(
         count = utf8::CharacterIndexToByteIndex(
             (LPCUTF8)(const char*)utf8Str, utf8Str.Length(), maxFitChars);
 
-        memmove(buffer, utf8Str, sizeof(uint8_t) * count);
+        memmove(buffer, utf8Str, sizeof(char) * count);
         if (length)
         {
             *length = count;
@@ -4359,7 +4314,7 @@ CHAKRA_API JsRun(
         result, false);
 }
 
-CHAKRA_API JsCreatePropertyIdUtf8(
+CHAKRA_API JsCreatePropertyId(
     _In_z_ const char *name,
     _In_ size_t length,
     _Out_ JsPropertyIdRef *propertyId)
@@ -4374,9 +4329,9 @@ CHAKRA_API JsCreatePropertyIdUtf8(
     return JsGetPropertyIdFromName(wname, propertyId);
 }
 
-CHAKRA_API JsCopyPropertyIdUtf8(
+CHAKRA_API JsCopyPropertyId(
     _In_ JsPropertyIdRef propertyId,
-    _Out_ uint8_t* buffer,
+    _Out_ char* buffer,
     _In_ size_t bufferSize,
     _Out_ size_t* length)
 {
@@ -4408,7 +4363,7 @@ CHAKRA_API JsCopyPropertyIdUtf8(
         count = utf8::CharacterIndexToByteIndex(
             (LPCUTF8)(const char*)utf8Str, utf8Str.Length(), maxFitChars);
 
-        memmove(buffer, utf8Str, sizeof(uint8_t) * count);
+        memmove(buffer, utf8Str, sizeof(char) * count);
         if (length)
         {
             *length = count;
@@ -4553,4 +4508,4 @@ CHAKRA_API JsRunSerialized(
         sourceContext, // use the same user provided sourceContext as scriptLoadSourceContext
         buffer, bufferVal, sourceContext, url, false, result);
 }
-#endif // NTBUILD
+#endif // CHAKRACOREBUILD_

+ 2 - 4
lib/Jsrt/JsrtCommonExports.inc

@@ -105,17 +105,15 @@
     JsSetPromiseContinuationCallback
 #ifndef NTBUILD
     JsCreateString
-    JsCreateStringUtf8
     JsCreateStringUtf16
     JsCopyString
-    JsCopyStringUtf8
     JsCopyStringUtf16
     JsParse
     JsRun
     JsSerialize
     JsParseSerialized
     JsRunSerialized
-    JsCreatePropertyIdUtf8
-    JsCopyPropertyIdUtf8
+    JsCreatePropertyId
+    JsCopyPropertyId
     JsDiagEvaluateUtf8
 #endif

+ 2 - 0
lib/Jsrt/JsrtDiag.cpp

@@ -715,6 +715,7 @@ CHAKRA_API JsDiagEvaluate(
     }, false /*allowInObjectBeforeCollectCallback*/, true /*scriptExceptionAllowed*/);
 }
 
+#ifdef CHAKRACOREBUILD_
 CHAKRA_API JsDiagEvaluateUtf8(
     _In_z_ const char *expression,
     _In_ unsigned int stackFrameIndex,
@@ -729,3 +730,4 @@ CHAKRA_API JsDiagEvaluateUtf8(
 
     return JsDiagEvaluate(wstr, stackFrameIndex, evalResult);
 }
+#endif

+ 6 - 4
test/native-tests/test-c98/sample.cpp

@@ -23,7 +23,9 @@
 
 using namespace std;
 
+#ifndef nullptr
 #define nullptr 0
+#endif
 
 int main()
 {
@@ -59,11 +61,11 @@ int main()
     FAIL_CHECK(JsConvertValueToString(result, &resultJSString));
 
     // Project script result back to C++.
-    uint8_t *resultSTR = nullptr;
+    char *resultSTR = nullptr;
     size_t stringLength;
-    FAIL_CHECK(JsCopyStringUtf8(resultJSString, nullptr, 0, &stringLength));
-    resultSTR = (uint8_t*)malloc(stringLength + 1);
-    FAIL_CHECK(JsCopyStringUtf8(resultJSString, resultSTR, stringLength + 1, nullptr));
+    FAIL_CHECK(JsCopyString(resultJSString, nullptr, 0, &stringLength));
+    resultSTR = (char*)malloc(stringLength + 1);
+    FAIL_CHECK(JsCopyString(resultJSString, resultSTR, stringLength + 1, nullptr));
     resultSTR[stringLength] = 0;
 
     printf("Result -> %s \n", resultSTR);

+ 4 - 4
test/native-tests/test-char/sample.cpp

@@ -57,11 +57,11 @@ int main()
     FAIL_CHECK(JsConvertValueToString(result, &resultJSString));
 
     // Project script result back to C++.
-    uint8_t *resultSTR = nullptr;
+    char *resultSTR = nullptr;
     size_t stringLength;
-    FAIL_CHECK(JsCopyStringUtf8(resultJSString, nullptr, 0, &stringLength));
-    resultSTR = (uint8_t*)malloc(stringLength + 1);
-    FAIL_CHECK(JsCopyStringUtf8(resultJSString, resultSTR, stringLength + 1, nullptr));
+    FAIL_CHECK(JsCopyString(resultJSString, nullptr, 0, &stringLength));
+    resultSTR = (char*)malloc(stringLength + 1);
+    FAIL_CHECK(JsCopyString(resultJSString, resultSTR, stringLength + 1, nullptr));
     resultSTR[stringLength] = 0;
 
     printf("Result -> %s \n", resultSTR);

+ 5 - 5
test/native-tests/test-char16/sample.cpp

@@ -51,7 +51,7 @@ int main()
     JsSetCurrentContext(context);
 
     JsValueRef fname;
-    FAIL_CHECK(JsCreateStringUtf8((const uint8_t*)"sample", strlen("sample"), &fname));
+    FAIL_CHECK(JsCreateString("sample", strlen("sample"), &fname));
 
     JsValueRef scriptSource;
     FAIL_CHECK(JsCreateStringUtf16(script16, length, &scriptSource));
@@ -67,11 +67,11 @@ int main()
     FAIL_CHECK(JsConvertValueToString(result, &resultJSString));
 
     // Project script result back to C++.
-    uint8_t *resultSTR = nullptr;
+    char *resultSTR = nullptr;
     size_t stringLength;
-    FAIL_CHECK(JsCopyStringUtf8(resultJSString, nullptr, 0, &stringLength));
-    resultSTR = (uint8_t*) malloc(stringLength + 1);
-    FAIL_CHECK(JsCopyStringUtf8(resultJSString, resultSTR, stringLength + 1, nullptr));
+    FAIL_CHECK(JsCopyString(resultJSString, nullptr, 0, &stringLength));
+    resultSTR = (char*) malloc(stringLength + 1);
+    FAIL_CHECK(JsCopyString(resultJSString, resultSTR, stringLength + 1, nullptr));
     resultSTR[stringLength] = 0;
 
     printf("Result -> %s \n", resultSTR);

+ 3 - 3
test/native-tests/test-python/helloWorld.py

@@ -37,7 +37,7 @@ chakraCore.JsSetCurrentContext(context);
 
 fname = c_void_p();
 # create JsValueRef from filename
-chakraCore.JsCreateStringUtf8(fileName, len(fileName), byref(fname));
+chakraCore.JsCreateString(fileName, len(fileName), byref(fname));
 
 scriptSource = c_void_p();
 # Create ArrayBuffer from script source
@@ -53,12 +53,12 @@ chakraCore.JsConvertValueToString(jsResult, byref(resultJSString));
 
 stringLength = c_size_t();
 # Get buffer size needed for the result string
-chakraCore.JsCopyStringUtf8(resultJSString, 0, 0, byref(stringLength));
+chakraCore.JsCopyString(resultJSString, 0, 0, byref(stringLength));
 
 resultSTR = create_string_buffer(stringLength.value + 1); # buffer is big enough to store the result
 
 # Get String from JsValueRef
-chakraCore.JsCopyStringUtf8(resultJSString, byref(resultSTR), stringLength.value + 1, 0);
+chakraCore.JsCopyString(resultJSString, byref(resultSTR), stringLength.value + 1, 0);
 
 # Set `null-ending` to the end
 resultSTRLastByte = (c_char * stringLength.value).from_address(addressof(resultSTR))

+ 5 - 5
test/native-tests/test-static-native/sample.cpp

@@ -42,7 +42,7 @@ int main()
     JsSetCurrentContext(context);
 
     JsValueRef fname;
-    FAIL_CHECK(JsCreateStringUtf8((const uint8_t*)"sample", strlen("sample"), &fname));
+    FAIL_CHECK(JsCreateString("sample", strlen("sample"), &fname));
 
     JsValueRef scriptSource;
     FAIL_CHECK(JsCreateExternalArrayBuffer((void*)script, (unsigned int)strlen(script),
@@ -55,11 +55,11 @@ int main()
     FAIL_CHECK(JsConvertValueToString(result, &resultJSString));
 
     // Project script result back to C++.
-    uint8_t *resultSTR = nullptr;
+    char *resultSTR = nullptr;
     size_t stringLength;
-    FAIL_CHECK(JsCopyStringUtf8(resultJSString, nullptr, 0, &stringLength));
-    resultSTR = (uint8_t*) malloc(stringLength + 1);
-    FAIL_CHECK(JsCopyStringUtf8(resultJSString, resultSTR, stringLength + 1, nullptr));
+    FAIL_CHECK(JsCopyString(resultJSString, nullptr, 0, &stringLength));
+    resultSTR = (char*) malloc(stringLength + 1);
+    FAIL_CHECK(JsCopyString(resultJSString, resultSTR, stringLength + 1, nullptr));
     resultSTR[stringLength] = 0;
 
     printf("Result -> %s \n", resultSTR);