Title: [161498] trunk
Revision
161498
Author
[email protected]
Date
2014-01-08 07:21:27 -0800 (Wed, 08 Jan 2014)

Log Message

[EFL] Make FTL buildable
https://bugs.webkit.org/show_bug.cgi?id=125777

Patch by Dániel Bátyai <[email protected]> on 2014-01-08
Reviewed by Csaba Osztrogonác.

.:

* Source/cmake/OptionsEfl.cmake:
* Source/cmakeconfig.h.cmake:

Source/_javascript_Core:

* CMakeLists.txt:
* ftl/FTLOSREntry.cpp:
* ftl/FTLOSRExitCompiler.cpp:
* llvm/library/config_llvm.h:

Modified Paths

Added Paths

Diff

Modified: trunk/ChangeLog (161497 => 161498)


--- trunk/ChangeLog	2014-01-08 15:13:06 UTC (rev 161497)
+++ trunk/ChangeLog	2014-01-08 15:21:27 UTC (rev 161498)
@@ -1,3 +1,13 @@
+2014-01-08  Dániel Bátyai  <[email protected]>
+
+        [EFL] Make FTL buildable
+        https://bugs.webkit.org/show_bug.cgi?id=125777
+
+        Reviewed by Csaba Osztrogonác.
+
+        * Source/cmake/OptionsEfl.cmake:
+        * Source/cmakeconfig.h.cmake:
+
 2014-01-08  Alberto Garcia  <[email protected]>
 
         REGRESSION(r160304): [GTK] Disable libtool fast install

Modified: trunk/Source/_javascript_Core/CMakeLists.txt (161497 => 161498)


--- trunk/Source/_javascript_Core/CMakeLists.txt	2014-01-08 15:13:06 UTC (rev 161497)
+++ trunk/Source/_javascript_Core/CMakeLists.txt	2014-01-08 15:21:27 UTC (rev 161498)
@@ -16,6 +16,7 @@
     "${_javascript_CORE_DIR}/interpreter"
     "${_javascript_CORE_DIR}/jit"
     "${_javascript_CORE_DIR}/llint"
+    "${_javascript_CORE_DIR}/llvm"
     "${_javascript_CORE_DIR}/parser"
     "${_javascript_CORE_DIR}/profiler"
     "${_javascript_CORE_DIR}/runtime"
@@ -576,6 +577,81 @@
     )
 endif ()
 
+if (ENABLE_FTL_JIT)
+    if (NOT LLVM_STATIC_LIBRARIES)
+        message(FATAL_ERROR "No LLVM libs found, but FTL is enabled. Stopping build.")
+    endif ()
+
+    # Configure llvmForJSC.so
+    set(llvmForJSC_SOURCES
+        llvm/library/LLVMAnchor.cpp
+        llvm/library/LLVMExports.cpp
+        llvm/library/LLVMOverrides.cpp
+    )
+    set(llvmForJSC_INCLUDE_DIRECTORIES
+        ${LLVM_INCLUDE_DIRS}
+        "${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}"
+    )
+
+    add_custom_command(
+        OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h
+        DEPENDS ${LLVM_STATIC_LIBRARIES}
+        COMMAND ${CMAKE_COMMAND} -E touch ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h
+        VERBATIM)
+
+    WEBKIT_WRAP_SOURCELIST(${llvmForJSC_SOURCES})
+    add_library(llvmForJSC SHARED ${llvmForJSC_SOURCES} ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h)
+    target_link_libraries(llvmForJSC ${LLVM_STATIC_LIBRARIES} "pthread" "dl")
+
+    # Added extra items for _javascript_Core
+    list(APPEND _javascript_Core_INCLUDE_DIRECTORIES
+        ${LLVM_INCLUDE_DIRS}
+    )
+
+    list(APPEND _javascript_Core_SOURCES
+        llvm/InitializeLLVM.cpp
+        llvm/InitializeLLVMPOSIX.cpp
+        llvm/InitializeLLVMLinux.cpp
+        llvm/LLVMAPI.cpp
+
+        dfg/DFGToFTLDeferredCompilationCallback.cpp
+        dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp
+
+        disassembler/LLVMDisassembler.cpp
+        disassembler/X86Disassembler.cpp
+
+        ftl/FTLAbstractHeap.cpp
+        ftl/FTLAbstractHeapRepository.cpp
+        ftl/FTLCapabilities.cpp
+        ftl/FTLCommonValues.cpp
+        ftl/FTLCompile.cpp
+        ftl/FTLExitArgument.cpp
+        ftl/FTLExitArgumentForOperand.cpp
+        ftl/FTLExitThunkGenerator.cpp
+        ftl/FTLExitValue.cpp
+        ftl/FTLFail.cpp
+        ftl/FTLForOSREntryJITCode.cpp
+        ftl/FTLInlineCacheSize.cpp
+        ftl/FTLIntrinsicRepository.cpp
+        ftl/FTLJITCode.cpp
+        ftl/FTLJITFinalizer.cpp
+        ftl/FTLLink.cpp
+        ftl/FTLLocation.cpp
+        ftl/FTLLowerDFGToLLVM.cpp
+        ftl/FTLOSREntry.cpp
+        ftl/FTLOSRExit.cpp
+        ftl/FTLOSRExitCompiler.cpp
+        ftl/FTLOutput.cpp
+        ftl/FTLSaveRestore.cpp
+        ftl/FTLSlowPathCall.cpp
+        ftl/FTLSlowPathCallKey.cpp
+        ftl/FTLStackMaps.cpp
+        ftl/FTLState.cpp
+        ftl/FTLThunks.cpp
+        ftl/FTLValueFormat.cpp
+    )
+endif ()
+
 set(HASH_LUT_GENERATOR ${CMAKE_CURRENT_SOURCE_DIR}/create_hash_table)
 macro(GENERATE_HASH_LUT _input _output)
     add_custom_command(
@@ -596,7 +672,6 @@
     assembler
     bindings
     bytecode
-    collector/handles
     debugger
     heap
     inspector
@@ -607,6 +682,8 @@
     profiler
     runtime
     yarr
+
+    collector/handles
 )
 
 set(_javascript_Core_FORWARDING_HEADERS_FILES
@@ -771,3 +848,7 @@
     set_target_properties(_javascript_Core PROPERTIES VERSION ${_javascript_CORE_VERSION} SOVERSION ${_javascript_CORE_VERSION_MAJOR})
     install(TARGETS _javascript_Core DESTINATION "${LIB_INSTALL_DIR}")
 endif ()
+
+if (ENABLE_FTL_JIT)
+    add_dependencies(_javascript_Core llvmForJSC)
+endif ()

Modified: trunk/Source/_javascript_Core/ChangeLog (161497 => 161498)


--- trunk/Source/_javascript_Core/ChangeLog	2014-01-08 15:13:06 UTC (rev 161497)
+++ trunk/Source/_javascript_Core/ChangeLog	2014-01-08 15:21:27 UTC (rev 161498)
@@ -1,3 +1,15 @@
+2014-01-08  Dániel Bátyai  <[email protected]>
+
+        [EFL] Make FTL buildable
+        https://bugs.webkit.org/show_bug.cgi?id=125777
+
+        Reviewed by Csaba Osztrogonác.
+
+        * CMakeLists.txt:
+        * ftl/FTLOSREntry.cpp:
+        * ftl/FTLOSRExitCompiler.cpp:
+        * llvm/library/config_llvm.h:
+
 2014-01-08  Zan Dobersek  <[email protected]>
 
         [Automake] Scripts for generated build targets do not necessarily produce their output

Copied: trunk/Source/_javascript_Core/llvm/InitializeLLVMLinux.cpp (from rev 161497, trunk/Source/_javascript_Core/llvm/library/config_llvm.h) (0 => 161498)


--- trunk/Source/_javascript_Core/llvm/InitializeLLVMLinux.cpp	                        (rev 0)
+++ trunk/Source/_javascript_Core/llvm/InitializeLLVMLinux.cpp	2014-01-08 15:21:27 UTC (rev 161498)
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2013 University of Szeged. All rights reserved.
+ * Copyright (C) 2013 Samsung Electronics. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF SZEGED. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "InitializeLLVM.h"
+
+#if HAVE(LLVM)
+
+#include "InitializeLLVMPOSIX.h"
+
+namespace JSC {
+
+void initializeLLVMImpl()
+{
+    initializeLLVMPOSIX("libllvmForJSC.so");
+}
+
+} // namespace JSC
+
+#endif // HAVE(LLVM)

Modified: trunk/Source/_javascript_Core/llvm/library/config_llvm.h (161497 => 161498)


--- trunk/Source/_javascript_Core/llvm/library/config_llvm.h	2014-01-08 15:13:06 UTC (rev 161497)
+++ trunk/Source/_javascript_Core/llvm/library/config_llvm.h	2014-01-08 15:21:27 UTC (rev 161498)
@@ -23,6 +23,11 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#if defined(HAVE_CONFIG_H) && HAVE_CONFIG_H
+#ifdef BUILDING_WITH_CMAKE
+#include "cmakeconfig.h"
+#endif
+#endif
 #include <wtf/Platform.h>
 #include <wtf/ExportMacros.h>
 

Added: trunk/Source/cmake/FindLLVM.cmake (0 => 161498)


--- trunk/Source/cmake/FindLLVM.cmake	                        (rev 0)
+++ trunk/Source/cmake/FindLLVM.cmake	2014-01-08 15:21:27 UTC (rev 161498)
@@ -0,0 +1,23 @@
+#
+# Check if the llvm-config gives us the path for the llvm libs.
+#
+# The following variables are set:
+#  LLVM_CONFIG_EXE
+#  LLVM_VERSION
+#  LLVM_INCLUDE_DIRS - include directories for the llvm headers.
+#  LLVM_STATIC_LIBRARIES - list of paths for the static llvm libraries.
+
+find_program(LLVM_CONFIG_EXE NAMES "llvm-config")
+
+execute_process(COMMAND ${LLVM_CONFIG_EXE} --version OUTPUT_VARIABLE LLVM_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
+execute_process(COMMAND ${LLVM_CONFIG_EXE} --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIRS OUTPUT_STRIP_TRAILING_WHITESPACE)
+execute_process(COMMAND ${LLVM_CONFIG_EXE} --libfiles OUTPUT_VARIABLE LLVM_STATIC_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+# convert the list of paths into a cmake list
+separate_arguments(LLVM_STATIC_LIBRARIES)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(LLVM DEFAULT_MSG
+                                  LLVM_VERSION LLVM_INCLUDE_DIRS LLVM_STATIC_LIBRARIES)
+
+mark_as_advanced(LLVM_VERSION LLVM_INCLUDE_DIRS LLVM_STATIC_LIBRARIES)

Modified: trunk/Source/cmake/OptionsEfl.cmake (161497 => 161498)


--- trunk/Source/cmake/OptionsEfl.cmake	2014-01-08 15:13:06 UTC (rev 161497)
+++ trunk/Source/cmake/OptionsEfl.cmake	2014-01-08 15:21:27 UTC (rev 161498)
@@ -281,3 +281,8 @@
     set(WTF_USE_LEVELDB 1)
     add_definitions(-DWTF_USE_LEVELDB=1)
 endif ()
+
+if (ENABLE_FTL_JIT)
+    find_package(LLVM REQUIRED)
+    set(HAVE_LLVM ON)
+endif ()

Modified: trunk/Source/cmakeconfig.h.cmake (161497 => 161498)


--- trunk/Source/cmakeconfig.h.cmake	2014-01-08 15:13:06 UTC (rev 161497)
+++ trunk/Source/cmakeconfig.h.cmake	2014-01-08 15:21:27 UTC (rev 161498)
@@ -42,6 +42,7 @@
 #cmakedefine01 ENABLE_FILTERS
 #cmakedefine01 ENABLE_FIXED_REPORTED_SIZE
 #cmakedefine01 ENABLE_FTPDIR
+#cmakedefine01 ENABLE_FTL_JIT
 #cmakedefine01 ENABLE_FONT_LOAD_EVENTS
 #cmakedefine01 ENABLE_FULLSCREEN_API
 #cmakedefine01 ENABLE_GAMEPAD
@@ -125,5 +126,6 @@
 #cmakedefine01 ENABLE_XSLT
 #cmakedefine01 USE_SYSTEM_MALLOC
 #cmakedefine01 WTF_USE_TILED_BACKING_STORE
+#cmakedefine01 HAVE_LLVM
 
 #endif /* CMAKECONFIG_H */
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to