Port JavaScriptCore to OS(FUCHSIA)
authorabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 1 Jul 2018 06:52:34 +0000 (06:52 +0000)
committerabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 1 Jul 2018 06:52:34 +0000 (06:52 +0000)
https://bugs.webkit.org/show_bug.cgi?id=187223

Reviewed by Daniel Bates.

.:

* Source/cmake/OptionsJSCOnly.cmake: Add back ICU.

Source/JavaScriptCore:

* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::cacheFlush): Call zx_cache_flush to flush cache.
* runtime/MachineContext.h: Fuchsia has the same mcontext_t as glibc.
(JSC::MachineContext::stackPointerImpl):
(JSC::MachineContext::framePointerImpl):
(JSC::MachineContext::instructionPointerImpl):
(JSC::MachineContext::argumentPointer<1>):
(JSC::MachineContext::llintInstructionPointer):

Source/WTF:

* wtf/Platform.h: Fuchsia uses mcontext_t to provide machine context.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233408 268f45cc-cd09-0410-ab3c-d52691b4dbfc

ChangeLog
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/assembler/ARM64Assembler.h
Source/JavaScriptCore/runtime/MachineContext.h
Source/WTF/ChangeLog
Source/WTF/wtf/Platform.h
Source/cmake/OptionsJSCOnly.cmake

index 66887b1..3fa1c10 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2018-06-30  Adam Barth  <abarth@webkit.org>
+
+        Port JavaScriptCore to OS(FUCHSIA)
+        https://bugs.webkit.org/show_bug.cgi?id=187223
+
+        Reviewed by Daniel Bates.
+
+        * Source/cmake/OptionsJSCOnly.cmake: Add back ICU.
+
 2018-06-29  Ross Kirsling  <ross.kirsling@sony.com>
 
         [JSCOnly] Restore Windows build.
index 2b7fa74..fe9de3a 100644 (file)
@@ -1,3 +1,19 @@
+2018-06-30  Adam Barth  <abarth@webkit.org>
+
+        Port JavaScriptCore to OS(FUCHSIA)
+        https://bugs.webkit.org/show_bug.cgi?id=187223
+
+        Reviewed by Daniel Bates.
+
+        * assembler/ARM64Assembler.h:
+        (JSC::ARM64Assembler::cacheFlush): Call zx_cache_flush to flush cache.
+        * runtime/MachineContext.h: Fuchsia has the same mcontext_t as glibc.
+        (JSC::MachineContext::stackPointerImpl):
+        (JSC::MachineContext::framePointerImpl):
+        (JSC::MachineContext::instructionPointerImpl):
+        (JSC::MachineContext::argumentPointer<1>):
+        (JSC::MachineContext::llintInstructionPointer):
+
 2018-06-30  David Kilzer  <ddkilzer@apple.com>
 
         Fix clang static analyzer warnings: Garbage return value
index 49f1aee..209e53a 100644 (file)
 #include <wtf/Vector.h>
 #include <stdint.h>
 
+#if OS(FUCHSIA)
+#include <zircon/syscalls.h>
+#endif
+
 #define CHECK_DATASIZE_OF(datasize) ASSERT(datasize == 32 || datasize == 64)
 #define CHECK_MEMOPSIZE_OF(size) ASSERT(size == 8 || size == 16 || size == 32 || size == 64 || size == 128);
 #define DATASIZE_OF(datasize) ((datasize == 64) ? Datasize_64 : Datasize_32)
@@ -2857,6 +2861,8 @@ public:
     {
 #if OS(IOS)
         sys_cache_control(kCacheFunctionPrepareForExecution, code, size);
+#elif OS(FUCHSIA)
+        zx_cache_flush(code, size, ZX_CACHE_FLUSH_INSN);
 #elif OS(LINUX)
         size_t page = pageSize();
         uintptr_t current = reinterpret_cast<uintptr_t>(code);
index df29a93..26a4fc0 100644 (file)
@@ -187,7 +187,7 @@ static inline void*& stackPointerImpl(mcontext_t& machineContext)
 #error Unknown Architecture
 #endif
 
-#elif defined(__GLIBC__) || defined(__BIONIC__)
+#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
 
 #if CPU(X86)
     return reinterpret_cast<void*&>((uintptr_t&) machineContext.gregs[REG_ESP]);
@@ -334,7 +334,7 @@ static inline void*& framePointerImpl(mcontext_t& machineContext)
 #error Unknown Architecture
 #endif
 
-#elif defined(__GLIBC__) || defined(__BIONIC__)
+#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
 
 // The following sequence depends on glibc's sys/ucontext.h.
 #if CPU(X86)
@@ -477,7 +477,7 @@ static inline void*& instructionPointerImpl(mcontext_t& machineContext)
 #error Unknown Architecture
 #endif
 
-#elif defined(__GLIBC__) || defined(__BIONIC__)
+#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
 
 // The following sequence depends on glibc's sys/ucontext.h.
 #if CPU(X86)
@@ -634,7 +634,7 @@ inline void*& argumentPointer<1>(mcontext_t& machineContext)
 #error Unknown Architecture
 #endif
 
-#elif defined(__GLIBC__) || defined(__BIONIC__)
+#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
 
 // The following sequence depends on glibc's sys/ucontext.h.
 #if CPU(X86)
@@ -751,7 +751,7 @@ inline void*& llintInstructionPointer(mcontext_t& machineContext)
 #error Unknown Architecture
 #endif
 
-#elif defined(__GLIBC__) || defined(__BIONIC__)
+#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
 
 // The following sequence depends on glibc's sys/ucontext.h.
 #if CPU(X86)
index 0298cb4..1390846 100644 (file)
@@ -1,5 +1,14 @@
 2018-06-30  Adam Barth  <abarth@webkit.org>
 
+        Port JavaScriptCore to OS(FUCHSIA)
+        https://bugs.webkit.org/show_bug.cgi?id=187223
+
+        Reviewed by Daniel Bates.
+
+        * wtf/Platform.h: Fuchsia uses mcontext_t to provide machine context.
+
+2018-06-30  Adam Barth  <abarth@webkit.org>
+
         Port WTF to OS(FUCHSIA)
         https://bugs.webkit.org/show_bug.cgi?id=187221
 
index eedc2a5..be49251 100644 (file)
 #define HAVE_CFNETWORK_STORAGE_PARTITIONING 1
 #endif
 
-#if OS(DARWIN) || ((OS(FREEBSD) || defined(__GLIBC__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
+#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__GLIBC__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
 #define HAVE_MACHINE_CONTEXT 1
 #endif
 
index f6d5631..8872173 100644 (file)
@@ -98,12 +98,9 @@ else ()
 endif ()
 
 if (NOT APPLE)
-    if (NOT WTF_OS_FUCHSIA)
-        # TODO: Add ICU on Fuchsia.
-        find_package(ICU REQUIRED)
-        if (WIN32)
-            add_definitions(-DUCHAR_TYPE=wchar_t)
-        endif ()
+    find_package(ICU REQUIRED)
+    if (WIN32)
+        add_definitions(-DUCHAR_TYPE=wchar_t)
     endif ()
 else ()
     add_definitions(-DU_DISABLE_RENAMING=1 -DU_SHOW_CPLUSPLUS_API=0)