Bladeren bron

Fix build breaks on Linux after merging with JsrtDebugging

Hitesh Kanwathirtha 9 jaren geleden
bovenliggende
commit
4f7bc942a0

+ 2 - 1
bin/ch/CMakeLists.txt

@@ -2,6 +2,7 @@ add_executable (ch
   ch.cpp
   ChakraRtInterface.cpp
   CodexAssert.cpp
+  Debugger.cpp
   Helpers.cpp
   HostConfigFlags.cpp
   WScriptJsrt.cpp
@@ -35,4 +36,4 @@ target_link_libraries (ch
 add_custom_command(TARGET ch POST_BUILD
   COMMAND ${CMAKE_COMMAND} -E copy_if_different
   "${CHAKRACORE_BINARY_DIR}/bin/ch/ch"
-  ${CHAKRACORE_BINARY_DIR}/)
+  ${CHAKRACORE_BINARY_DIR}/)

+ 5 - 0
bin/ch/Debugger.cpp

@@ -292,6 +292,7 @@ Error:
 
 bool Debugger::SetBaseline()
 {
+#ifdef _WIN32
     LPSTR script = nullptr;
     FILE *file = nullptr;
     int numChars = 0;
@@ -357,6 +358,10 @@ Error:
     }
 
     return hr == S_OK;
+#else
+    // xplat-todo: Implement this on Linux
+    return false;
+#endif
 }
 
 bool Debugger::SetInspectMaxStringLength()

+ 6 - 1
bin/ch/Debugger.h

@@ -4,11 +4,16 @@
 //-------------------------------------------------------------------------------------------------------
 #pragma once
 
+#ifdef _WIN32
 static const WCHAR controllerScript[] = {
 #include "DbgController.js.encoded"
     _u('\0')
 };
-
+#else
+// xplat-todo: Need to generate DbgController.js.encoded
+static const WCHAR controllerScript[] = { _u('\0') };
+#endif
+    
 class Debugger
 {
 public:

+ 2 - 2
bin/ch/Helpers.cpp

@@ -290,12 +290,12 @@ LPCWSTR Helpers::JsErrorCodeToString(JsErrorCode jsErrorCode)
     }
 }
 
-void Helpers::LogError(__in __nullterminated char16 *msg, ...)
+void Helpers::LogError(__in __nullterminated const char16 *msg, ...)
 {
     va_list args;
     va_start(args, msg);
     wprintf(_u("ERROR: "));
-    vwprintf(msg, args);
+    vfwprintf(stderr, msg, args);
     wprintf(_u("\n"));
     fflush(stdout);
     va_end(args);

+ 1 - 1
bin/ch/Helpers.h

@@ -12,5 +12,5 @@ public :
     static HRESULT WideStringToNarrowDynamic(LPCWSTR sourceString, LPSTR* destStringPtr);
     static HRESULT NarrowStringToWideDynamic(LPCSTR sourceString, LPWSTR* destStringPtr);
     static LPCWSTR JsErrorCodeToString(JsErrorCode jsErrorCode);
-    static void LogError(__in __nullterminated char16 *msg, ...);
+    static void LogError(__in __nullterminated const char16 *msg, ...);
 };

+ 4 - 4
bin/ch/WScriptJsrt.cpp

@@ -454,12 +454,12 @@ void QueueDebugOperation(JsValueRef function, const DebugOperationFunc& operatio
 
 JsValueRef WScriptJsrt::AttachCallback(JsValueRef callee, bool isConstructCall, JsValueRef *arguments, unsigned short argumentCount, void *callbackState)
 {
-    LPWSTR errorMessage = L"WScript.Attach requires a function, like WScript.Attach(foo);";
+    LPCWSTR errorMessage = _u("WScript.Attach requires a function, like WScript.Attach(foo);");
+    JsValueType argumentType = JsUndefined;
     if (argumentCount != 2)
     {
         goto Error;
     }
-    JsValueType argumentType = JsUndefined;
     IfJsrtError(ChakraRTInterface::JsGetValueType(arguments[1], &argumentType));
     if (argumentType != JsFunction)
     {
@@ -495,12 +495,12 @@ Error:
 
 JsValueRef WScriptJsrt::DetachCallback(JsValueRef callee, bool isConstructCall, JsValueRef *arguments, unsigned short argumentCount, void *callbackState)
 {
-    LPWSTR errorMessage = L"WScript.Detach requires a function, like WScript.Detach(foo);";
+    LPCWSTR errorMessage = _u("WScript.Detach requires a function, like WScript.Detach(foo);");
+    JsValueType argumentType = JsUndefined;
     if (argumentCount != 2)
     {
         goto Error;
     }
-    JsValueType argumentType = JsUndefined;
     IfJsrtError(ChakraRTInterface::JsGetValueType(arguments[1], &argumentType));
     if (argumentType != JsFunction)
     {

+ 5 - 5
bin/ch/stdafx.h

@@ -93,7 +93,7 @@ typedef void * Var;
 do { \
     JsErrorCode jsErrorCode = expr; \
     if ((jsErrorCode) != JsNoError) { \
-        fwprintf(stderr, L"ERROR: " TEXT(#expr) L" failed. JsErrorCode=0x%x (%s)\n", jsErrorCode, Helpers::JsErrorCodeToString(jsErrorCode)); \
+        fwprintf(stderr, _u("ERROR: ") _u(#expr) _u(" failed. JsErrorCode=0x%x (%s)\n"), jsErrorCode, Helpers::JsErrorCodeToString(jsErrorCode)); \
         fflush(stderr); \
         goto Error; \
     } \
@@ -103,7 +103,7 @@ do { \
 do { \
     JsErrorCode jsErrorCode = expr; \
     if ((jsErrorCode) != JsNoError) { \
-        fwprintf(stderr, L"ERROR: " TEXT(#expr) L" failed. JsErrorCode=0x%x (%s)\n", jsErrorCode, Helpers::JsErrorCodeToString(jsErrorCode)); \
+        fwprintf(stderr, _u("ERROR: ") _u(#expr) _u(" failed. JsErrorCode=0x%x (%s)\n"), jsErrorCode, Helpers::JsErrorCodeToString(jsErrorCode)); \
         fflush(stderr); \
         Assert(false); \
         return JS_INVALID_REFERENCE; \
@@ -114,7 +114,7 @@ do { \
 do { \
     JsErrorCode jsErrorCode = expr; \
     if ((jsErrorCode) != JsNoError) { \
-        fwprintf(stderr, L"ERROR: " TEXT(#expr) L" failed. JsErrorCode=0x%x (%s)\n", jsErrorCode, Helpers::JsErrorCodeToString(jsErrorCode)); \
+        fwprintf(stderr, _u("ERROR: ") _u(#expr) _u(" failed. JsErrorCode=0x%x (%s)\n"), jsErrorCode, Helpers::JsErrorCodeToString(jsErrorCode)); \
         fflush(stderr); \
         Assert(false); \
         return false; \
@@ -125,14 +125,14 @@ do { \
 do { \
     JsErrorCode jsErrorCode = expr; \
     if ((jsErrorCode) != JsNoError) { \
-        fwprintf(stderr, L"ERROR: " TEXT(#expr) L" failed. JsErrorCode=0x%x (%s)\n", jsErrorCode, Helpers::JsErrorCodeToString(jsErrorCode)); \
+        fwprintf(stderr, _u("ERROR: ") _u(#expr) _u(" failed. JsErrorCode=0x%x (%s)\n"), jsErrorCode, Helpers::JsErrorCodeToString(jsErrorCode)); \
         fflush(stderr); \
         return (jsErrorCode); \
     } \
 } while (0)
 
 #include "TestHooks.h"
-#include "chakrartinterface.h"
+#include "ChakraRtInterface.h"
 #include "HostConfigFlags.h"
 #include "MessageQueue.h"
 #include "WScriptJsrt.h"

+ 4 - 4
lib/Common/Memory/AutoPtr.h

@@ -38,7 +38,7 @@ class AutoArrayPtr : public BasePtr<T>
 protected:
     size_t m_elementCount;
 public:
-    AutoArrayPtr(T * ptr, size_t elementCount) : BasePtr(ptr), m_elementCount(elementCount) {}
+    AutoArrayPtr(T * ptr, size_t elementCount) : BasePtr<T>(ptr), m_elementCount(elementCount) {}
     ~AutoArrayPtr()
     {
         Clear();
@@ -54,10 +54,10 @@ public:
 private:
     void Clear()
     {
-        if (ptr != nullptr)
+        if (this->ptr != nullptr)
         {
-            HeapDeleteArray(m_elementCount, ptr);
-            ptr = nullptr;
+            HeapDeleteArray(m_elementCount, this->ptr);
+            this->ptr = nullptr;
         }
     }
 };

+ 0 - 19
lib/Common/Memory/HeapBlock.cpp

@@ -155,25 +155,6 @@ SmallHeapBlockT<TBlockAttributes>::GetPageCount() const
     return TBlockAttributes::PageCount;
 }
 
-template <>
-uint
-SmallHeapBlockT<SmallAllocationBlockAttributes>::GetUnusablePageCount()
-{
-    return 0;
-}
-
-template <>
-void
-SmallHeapBlockT<SmallAllocationBlockAttributes>::ProtectUnusablePages()
-{
-}
-
-template <>
-void
-SmallHeapBlockT<SmallAllocationBlockAttributes>::RestoreUnusablePages()
-{
-}
-
 template <>
 uint
 SmallHeapBlockT<MediumAllocationBlockAttributes>::GetUnusablePageCount()

+ 19 - 3
lib/Common/Memory/HeapBlock.h

@@ -444,9 +444,13 @@ public:
 public:
     ~SmallHeapBlockT();
 
-    void ProtectUnusablePages();
-    void RestoreUnusablePages();
-    uint GetUnusablePageCount();
+    void ProtectUnusablePages() {}
+    void RestoreUnusablePages() {}
+    
+    uint GetUnusablePageCount() 
+    {
+        return 0; 
+    }
 
 #ifdef RECYCLER_WRITE_BARRIER
     bool IsWithBarrier() const;
@@ -680,6 +684,18 @@ template <>
 uint
 SmallHeapBlockT<MediumAllocationBlockAttributes>::GetObjectBitDeltaForBucketIndex(uint bucketIndex);
 
+template <>
+uint
+SmallHeapBlockT<MediumAllocationBlockAttributes>::GetUnusablePageCount();
+
+template <>
+void
+SmallHeapBlockT<MediumAllocationBlockAttributes>::ProtectUnusablePages();
+
+template <>
+void
+SmallHeapBlockT<MediumAllocationBlockAttributes>::RestoreUnusablePages();
+
 // Declare the class templates
 typedef SmallHeapBlockT<SmallAllocationBlockAttributes>  SmallHeapBlock;
 typedef SmallHeapBlockT<MediumAllocationBlockAttributes> MediumHeapBlock;

+ 7 - 0
lib/Jsrt/CMakeLists.txt

@@ -1,8 +1,13 @@
 add_library (Chakra.Jsrt STATIC
     Jsrt.cpp
+    JsrtDebugUtils.cpp
+    JsrtDebugManager.cpp
+    JsrtDebuggerObject.cpp
+    JsrtDiag.cpp
     JsrtContext.cpp
     JsrtExternalArrayBuffer.cpp
     JsrtExternalObject.cpp
+    JsrtDebugEventObject.cpp
     JsrtHelper.cpp
     JsrtPch.cpp
     JsrtRuntime.cpp
@@ -15,5 +20,7 @@ add_subdirectory(Core)
 target_include_directories (
     Chakra.Jsrt PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
     ../Runtime
+    ../Runtime/Base
+    ../Runtime/Debug
     ../Parser
     )

+ 0 - 2
lib/Jsrt/ChakraCore.h

@@ -21,8 +21,6 @@
 #ifndef _CHAKRACORE_H_
 #define _CHAKRACORE_H_
 
-#include <windows.h>
-
 #include "ChakraCommon.h"
 
 #include "ChakraDebug.h"

+ 0 - 2
lib/Jsrt/ChakraDebug.h

@@ -20,8 +20,6 @@
 #ifndef _CHAKRADEBUG_H_
 #define _CHAKRADEBUG_H_
 
-#include <windows.h>
-
 #include "ChakraCommon.h"
 
     /// <summary>

+ 4 - 4
lib/Jsrt/JsrtDebugUtils.cpp

@@ -279,7 +279,7 @@ void JsrtDebugUtils::AddPropertyType(Js::DynamicObject * object, Js::IDiagObject
         {
             JsrtDebugUtils::AddPropertyToObject(object, JsrtDebugPropertyId::type, scriptContext->GetLibrary()->GetObjectTypeDisplayString(), scriptContext);
             addDisplay = true;
-            char16* className = JsrtDebugUtils::GetClassName(typeId);
+            const char16* className = JsrtDebugUtils::GetClassName(typeId);
             JsrtDebugUtils::AddPropertyToObject(object, JsrtDebugPropertyId::className, className, wcslen(className), scriptContext);
             break;
         }
@@ -295,7 +295,7 @@ void JsrtDebugUtils::AddPropertyType(Js::DynamicObject * object, Js::IDiagObject
         {
             JsrtDebugUtils::AddPropertyToObject(object, JsrtDebugPropertyId::type, scriptContext->GetLibrary()->GetObjectTypeDisplayString(), scriptContext);
             addDisplay = true;
-            char16* className = JsrtDebugUtils::GetClassName(Js::TypeIds_Object);
+            const char16* className = JsrtDebugUtils::GetClassName(Js::TypeIds_Object);
             JsrtDebugUtils::AddPropertyToObject(object, JsrtDebugPropertyId::className, className, wcslen(className), scriptContext);
         }
         else
@@ -386,7 +386,7 @@ void JsrtDebugUtils::AddPropertyToObject(Js::DynamicObject * object, JsrtDebugPr
     JsrtDebugUtils::AddVarPropertyToObject(object, propertyId, value, scriptContext);
 }
 
-char16 * JsrtDebugUtils::GetClassName(Js::TypeId typeId)
+const char16 * JsrtDebugUtils::GetClassName(Js::TypeId typeId)
 {
     switch (typeId)
     {
@@ -448,7 +448,7 @@ char16 * JsrtDebugUtils::GetClassName(Js::TypeId typeId)
     return _u("");
 }
 
-char16 * JsrtDebugUtils::GetDebugPropertyName(JsrtDebugPropertyId propertyId)
+const char16 * JsrtDebugUtils::GetDebugPropertyName(JsrtDebugPropertyId propertyId)
 {
     switch (propertyId)
     {

+ 2 - 2
lib/Jsrt/JsrtDebugUtils.h

@@ -39,6 +39,6 @@ public:
 
 private:
     static void AddVarPropertyToObject(Js::DynamicObject* object, JsrtDebugPropertyId propertyId, Js::Var value, Js::ScriptContext* scriptContext);
-    static char16* GetClassName(Js::TypeId typeId);
-    static char16* GetDebugPropertyName(JsrtDebugPropertyId propertyId);
+    static const char16* GetClassName(Js::TypeId typeId);
+    static const char16* GetDebugPropertyName(JsrtDebugPropertyId propertyId);
 };

+ 2 - 2
lib/Jsrt/JsrtDebuggerObject.cpp

@@ -75,7 +75,7 @@ Js::DynamicObject * JsrtDebuggerObjectBase::GetChildren(WeakArenaReference<Js::I
                     resolvedObject.propId = Js::Constants::NoProperty;
                 }
 
-                AutoPtr<WeakArenaReference<Js::IDiagObjectModelDisplay>> objectDisplayWeakRef = resolvedObject.GetObjectDisplay();
+                AutoPtr<WeakArenaReference<Js::IDiagObjectModelDisplay>> objectDisplayWeakRef(resolvedObject.GetObjectDisplay());
                 Js::IDiagObjectModelDisplay* resolvedObjectDisplay = objectDisplayWeakRef->GetStrongReference();
                 if (resolvedObjectDisplay != nullptr)
                 {
@@ -412,7 +412,7 @@ Js::DynamicObject * JsrtDebuggerStackFrame::GetLocalsObject(Js::ScriptContext* s
                     foundGroup = localsWalker->GetScopeObject(index++, &resolvedObject);
                     if (foundGroup == TRUE)
                     {
-                        AutoPtr<WeakArenaReference<Js::IDiagObjectModelDisplay>> objectDisplayWeakRef = resolvedObject.GetObjectDisplay();
+                        AutoPtr<WeakArenaReference<Js::IDiagObjectModelDisplay>> objectDisplayWeakRef(resolvedObject.GetObjectDisplay());
                         JsrtDebuggerObjectBase* debuggerObject = JsrtDebuggerObjectScope::Make(debuggerObjectsManager, objectDisplayWeakRef, scopesCount);
                         Js::DynamicObject* object = debuggerObject->GetJSONObject(resolvedObject.scriptContext);
                         Assert(object != nullptr);

+ 1 - 1
lib/Jsrt/JsrtDebuggerObject.h

@@ -33,7 +33,7 @@ public:
     template<class JsrtDebuggerObjectType, class PostFunction>
     static void CreateDebuggerObject(JsrtDebuggerObjectsManager* debuggerObjectsManager, Js::ResolvedObject resolvedObject, Js::ScriptContext* scriptContext, PostFunction postFunction)
     {
-        AutoPtr<WeakArenaReference<Js::IDiagObjectModelDisplay>> objectDisplayWeakRef = resolvedObject.GetObjectDisplay();
+        AutoPtr<WeakArenaReference<Js::IDiagObjectModelDisplay>> objectDisplayWeakRef(resolvedObject.GetObjectDisplay());
         Js::IDiagObjectModelDisplay* objectDisplay = objectDisplayWeakRef->GetStrongReference();
         if (objectDisplay != nullptr)
         {

+ 1 - 1
lib/Jsrt/JsrtDiag.cpp

@@ -6,7 +6,7 @@
 #include "JsrtPch.h"
 #include "JsrtInternal.h"
 #include "RuntimeDebugPch.h"
-#include "ThreadContextTLSEntry.h"
+#include "ThreadContextTlsEntry.h"
 #include "JsrtDebugUtils.h"
 
 #define VALIDATE_IS_DEBUGGING(jsrtDebugManager) \

+ 2 - 0
lib/Runtime/Debug/DiagObjectModel.cpp

@@ -89,6 +89,7 @@ namespace Js
 #endif
             pOMDisplay = Anew(pRefArena->Arena(), RecyclableArrayDisplay, this);
         }
+#ifdef ENABLE_SIMDJS
         else if (Js::JavascriptSIMDInt32x4::Is(obj))
         {
             pOMDisplay = Anew(pRefArena->Arena(), RecyclableSimdInt32x4ObjectDisplay, this);
@@ -129,6 +130,7 @@ namespace Js
         {
             pOMDisplay = Anew(pRefArena->Arena(), RecyclableSimdUint16x8ObjectDisplay, this);
         }
+#endif
         else
         {
             pOMDisplay = Anew(pRefArena->Arena(), RecyclableObjectDisplay, this);