Diff
Modified: trunk/ChangeLog (196076 => 196077)
--- trunk/ChangeLog 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/ChangeLog 2016-02-03 21:21:46 UTC (rev 196077)
@@ -1,3 +1,13 @@
+2016-02-03 Michael Catanzaro <[email protected]>
+
+ [GTK][EFL] Switch FTL to B3
+ https://bugs.webkit.org/show_bug.cgi?id=153478
+
+ Reviewed by Csaba Osztrogonác.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsGTK.cmake:
+
2016-02-02 Joseph Pecoraro <[email protected]>
Unreviewed attempt to fix Mac CMake build after r195999.
Modified: trunk/Source/_javascript_Core/CMakeLists.txt (196076 => 196077)
--- trunk/Source/_javascript_Core/CMakeLists.txt 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/_javascript_Core/CMakeLists.txt 2016-02-03 21:21:46 UTC (rev 196077)
@@ -991,36 +991,11 @@
llint/LowLevelInterpreter.cpp
)
-
if (ENABLE_FTL_JIT)
- # 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
- COMMAND ${CMAKE_COMMAND} -E touch ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h
- VERBATIM)
-
- # Added extra items for _javascript_Core
- list(APPEND _javascript_Core_SYSTEM_INCLUDE_DIRECTORIES
- ${LLVM_INCLUDE_DIRS}
- )
-
list(APPEND _javascript_Core_SOURCES
dfg/DFGToFTLDeferredCompilationCallback.cpp
dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp
- disassembler/LLVMDisassembler.cpp
- disassembler/X86Disassembler.cpp
-
ftl/FTLAbstractHeap.cpp
ftl/FTLAbstractHeapRepository.cpp
ftl/FTLAvailableRecovery.cpp
@@ -1071,7 +1046,32 @@
ftl/FTLThunks.cpp
ftl/FTLUnwindInfo.cpp
ftl/FTLValueRange.cpp
+ )
+endif ()
+if (USE_LLVM_DISASSEMBLER)
+ # 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
+ COMMAND ${CMAKE_COMMAND} -E touch ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h
+ VERBATIM)
+
+ # Added extra items for _javascript_Core
+ list(APPEND _javascript_Core_SYSTEM_INCLUDE_DIRECTORIES
+ ${LLVM_INCLUDE_DIRS}
+ )
+
+ list(APPEND _javascript_Core_SOURCES
llvm/InitializeLLVM.cpp
llvm/LLVMAPI.cpp
)
@@ -1366,12 +1366,12 @@
WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
-if (ENABLE_FTL_JIT AND NOT WIN32)
+if (USE_LLVM_DISASSEMBLER AND NOT WIN32)
if (NOT llvmForJSC_LIBRARIES)
set(llvmForJSC_LIBRARIES ${LLVM_STATIC_LIBRARIES})
endif ()
if (NOT llvmForJSC_LIBRARIES)
- message(FATAL_ERROR "No LLVM libs found, but FTL is enabled. Stopping build.")
+ message(FATAL_ERROR "No LLVM libs found, but LLVM disassembler is enabled. Stopping build.")
endif ()
WEBKIT_WRAP_SOURCELIST(${llvmForJSC_SOURCES})
@@ -1416,7 +1416,7 @@
install(TARGETS _javascript_Core DESTINATION "${LIB_INSTALL_DIR}")
endif ()
-if (ENABLE_FTL_JIT)
+if (USE_LLVM_DISASSEMBLER)
add_dependencies(_javascript_Core llvmForJSC)
endif ()
Modified: trunk/Source/_javascript_Core/ChangeLog (196076 => 196077)
--- trunk/Source/_javascript_Core/ChangeLog 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-02-03 21:21:46 UTC (rev 196077)
@@ -1,3 +1,23 @@
+2016-02-03 Michael Catanzaro <[email protected]>
+
+ [GTK][EFL] Switch FTL to B3
+ https://bugs.webkit.org/show_bug.cgi?id=153478
+
+ Reviewed by Csaba Osztrogonác.
+
+ Conditionalize code to make it possible to build FTL completely without LLVM.
+
+ * CMakeLists.txt:
+ * dfg/DFGCommon.h:
+ * dfg/DFGPlan.cpp:
+ (JSC::DFG::Plan::compileInThreadImpl):
+ * ftl/FTLAbbreviatedTypes.h:
+ * ftl/FTLFail.cpp:
+ (JSC::FTL::fail):
+ * ftl/FTLState.cpp:
+ (JSC::FTL::State::State):
+ (JSC::FTL::State::~State):
+
2016-02-03 Carlos Garcia Campos <[email protected]>
Unreviewed. Fix _javascript_Core build with B3 enabled.
Modified: trunk/Source/_javascript_Core/PlatformGTK.cmake (196076 => 196077)
--- trunk/Source/_javascript_Core/PlatformGTK.cmake 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/_javascript_Core/PlatformGTK.cmake 2016-02-03 21:21:46 UTC (rev 196077)
@@ -38,7 +38,7 @@
)
endif ()
-if (ENABLE_FTL_JIT)
+if (USE_LLVM_DISASSEMBLER)
set(llvmForJSC_LIBRARIES ${LLVM_LIBRARIES})
set(llvmForJSC_INSTALL_DIR "${LIB_INSTALL_DIR}/_javascript_coregtk-${WEBKITGTK_API_VERSION}")
endif ()
Modified: trunk/Source/_javascript_Core/dfg/DFGCommon.h (196076 => 196077)
--- trunk/Source/_javascript_Core/dfg/DFGCommon.h 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/_javascript_Core/dfg/DFGCommon.h 2016-02-03 21:21:46 UTC (rev 196077)
@@ -37,7 +37,7 @@
// We are in the middle of a transition from LLVM to B3 as the backend for the FTL. This flag will go
// away once that transition is finished. For now, we enable B3 only on some platforms.
-#if CPU(X86_64) && PLATFORM(MAC) && ENABLE(FTL_JIT)
+#if CPU(X86_64) && ENABLE(FTL_JIT)
#define FTL_USES_B3 1
#else
#define FTL_USES_B3 0
Modified: trunk/Source/_javascript_Core/dfg/DFGPlan.cpp (196076 => 196077)
--- trunk/Source/_javascript_Core/dfg/DFGPlan.cpp 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/_javascript_Core/dfg/DFGPlan.cpp 2016-02-03 21:21:46 UTC (rev 196077)
@@ -455,15 +455,20 @@
dumpAndVerifyGraph(dfg, "Graph just before FTL lowering:", shouldDumpDisassembly(mode));
+#if HAVE(LLVM) && !FTL_USES_B3
bool haveLLVM;
+#endif
Safepoint::Result safepointResult;
{
GraphSafepoint safepoint(dfg, safepointResult);
+#if HAVE(LLVM) && !FTL_USES_B3
haveLLVM = initializeLLVM();
+#endif
}
if (safepointResult.didGetCancelled())
return CancelPath;
-
+
+#if HAVE(LLVM) && !FTL_USES_B3
if (!haveLLVM) {
if (Options::ftlCrashesIfCantInitializeLLVM()) {
dataLog("LLVM can't be initialized.\n");
@@ -472,6 +477,7 @@
finalizer = std::make_unique<FailedFinalizer>(*this);
return FailPath;
}
+#endif
FTL::State state(dfg);
FTL::lowerDFGToLLVM(state);
Modified: trunk/Source/_javascript_Core/ftl/FTLAbbreviatedTypes.h (196076 => 196077)
--- trunk/Source/_javascript_Core/ftl/FTLAbbreviatedTypes.h 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/_javascript_Core/ftl/FTLAbbreviatedTypes.h 2016-02-03 21:21:46 UTC (rev 196077)
@@ -43,11 +43,20 @@
typedef B3::BasicBlock* LBasicBlock;
typedef B3::Type LType;
typedef B3::Value* LValue;
+
+typedef void* LAtomicOrdering;
+typedef void* LBuilder;
+typedef void* LCallConv;
+typedef void* LContext;
+typedef void* LIntPredicate;
+typedef void* LLinkage;
+typedef void* LModule;
+typedef void* LRealPredicate;
+typedef void* LMemoryBuffer;
#else
typedef LLVMBasicBlockRef LBasicBlock;
typedef LLVMTypeRef LType;
typedef LLVMValueRef LValue;
-#endif
typedef LLVMAtomicOrdering LAtomicOrdering;
typedef LLVMBuilderRef LBuilder;
@@ -58,6 +67,7 @@
typedef LLVMModuleRef LModule;
typedef LLVMRealPredicate LRealPredicate;
typedef LLVMMemoryBufferRef LMemoryBuffer;
+#endif
enum SynchronizationScope { SingleThread, CrossThread };
Modified: trunk/Source/_javascript_Core/ftl/FTLFail.cpp (196076 => 196077)
--- trunk/Source/_javascript_Core/ftl/FTLFail.cpp 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/_javascript_Core/ftl/FTLFail.cpp 2016-02-03 21:21:46 UTC (rev 196077)
@@ -40,8 +40,10 @@
{
state.graph.m_plan.finalizer = std::make_unique<FailedFinalizer>(state.graph.m_plan);
+#if !FTL_USES_B3
if (state.module)
llvm->DisposeModule(state.module);
+#endif
}
} } // namespace JSC::FTL
Modified: trunk/Source/_javascript_Core/ftl/FTLState.cpp (196076 => 196077)
--- trunk/Source/_javascript_Core/ftl/FTLState.cpp 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/_javascript_Core/ftl/FTLState.cpp 2016-02-03 21:21:46 UTC (rev 196077)
@@ -44,7 +44,11 @@
State::State(Graph& graph)
: graph(graph)
+#if FTL_USES_B3
+ , context(nullptr)
+#else
, context(llvm->ContextCreate())
+#endif
, module(0)
, function(0)
, generatedFunction(0)
@@ -85,7 +89,9 @@
State::~State()
{
+#if !FTL_USES_B3
llvm->ContextDispose(context);
+#endif
}
void State::dumpState(const char* when)
Modified: trunk/Source/WTF/ChangeLog (196076 => 196077)
--- trunk/Source/WTF/ChangeLog 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/WTF/ChangeLog 2016-02-03 21:21:46 UTC (rev 196077)
@@ -1,3 +1,14 @@
+2016-02-03 Michael Catanzaro <[email protected]>
+
+ [GTK][EFL] Switch FTL to B3
+ https://bugs.webkit.org/show_bug.cgi?id=153478
+
+ Reviewed by Csaba Osztrogonác.
+
+ Enable B3 by default on all x86.
+
+ * wtf/Platform.h:
+
2016-02-03 Anders Carlsson <[email protected]>
Fix BlockPtr's call operator
Modified: trunk/Source/WTF/wtf/Platform.h (196076 => 196077)
--- trunk/Source/WTF/wtf/Platform.h 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/WTF/wtf/Platform.h 2016-02-03 21:21:46 UTC (rev 196077)
@@ -716,10 +716,6 @@
#define HAVE_LLVM 1
#endif
-#if PLATFORM(GTK) && HAVE(LLVM) && ENABLE(JIT) && !defined(ENABLE_FTL_JIT) && CPU(X86_64)
-#define ENABLE_FTL_JIT 1
-#endif
-
/* The FTL *does not* work on 32-bit platforms. Disable it even if someone asked us to enable it. */
#if USE(JSVALUE32_64)
#undef ENABLE_FTL_JIT
@@ -785,9 +781,8 @@
#define ENABLE_CONCURRENT_JIT 1
#endif
-/* The B3 compiler is an experimental backend that is still in development. We will keep it building
- on Mac/x86-64 for now, though it is unused except for tests. */
-#if (PLATFORM(MAC) || PLATFORM(IOS)) && (CPU(X86_64) || CPU(ARM64)) && ENABLE(FTL_JIT)
+/* This controls whether B3 is built. It will not be used unless FTL_USES_B3 is enabled. */
+#if (CPU(X86_64) || CPU(ARM64)) && ENABLE(FTL_JIT)
#define ENABLE_B3_JIT 1
#endif
Modified: trunk/Source/cmake/OptionsEfl.cmake (196076 => 196077)
--- trunk/Source/cmake/OptionsEfl.cmake 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/cmake/OptionsEfl.cmake 2016-02-03 21:21:46 UTC (rev 196077)
@@ -69,12 +69,6 @@
set(WebKit2_VERSION_SCRIPT "-Wl,--version-script,${CMAKE_MODULE_PATH}/eflsymbols.filter")
endif ()
-if (WTF_CPU_X86_64)
- set(ENABLE_FTL_DEFAULT ON)
-else ()
- set(ENABLE_FTL_DEFAULT OFF)
-endif ()
-
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_3D_TRANSFORMS PUBLIC ON)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCESSIBILITY PUBLIC ON)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ALLINONE_BUILD PUBLIC OFF)
@@ -97,7 +91,7 @@
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ENCRYPTED_MEDIA PUBLIC OFF)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ENCRYPTED_MEDIA_V2 PUBLIC ON)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FILTERS_LEVEL_2 PUBLIC OFF)
-WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PUBLIC ${ENABLE_FTL_DEFAULT})
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PUBLIC ${WTF_CPU_X86_64})
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FULLSCREEN_API PUBLIC ON)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD PUBLIC OFF)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD_DEPRECATED PUBLIC ON)
@@ -282,20 +276,15 @@
find_package(Espeak REQUIRED)
endif ()
-if (ENABLE_FTL_JIT)
- if (WTF_CPU_X86_64)
- find_package(LLVM 3.6.0 REQUIRED)
- elseif (WTF_CPU_ARM64)
- find_package(LLVM REQUIRED)
- if (NOT "${LLVM_VERSION}" STREQUAL "3.5.0ftl")
- message(FATAL_ERROR "FTL JIT is only available on AArch64 architecture with patched LLVM 3.5.0, use Tools/Scripts/update-webkitefl-libs llvm-3.5-for-AArch64 to build it.")
- endif ()
- else ()
- message(FATAL_ERROR "FTL JIT is only available on X86_64 and AArch64 architectures.")
- endif ()
+if (USE_LLVM_DISASSEMBLER)
+ find_package(LLVM REQUIRED)
SET_AND_EXPOSE_TO_BUILD(HAVE_LLVM TRUE)
endif ()
+if (ENABLE_FTL_JIT AND NOT WTF_CPU_X86_64 AND NOT DEVELOPER_MODE)
+ message(FATAL_ERROR "FTL JIT is only available on X86_64 architecture.")
+endif ()
+
if (ENABLE_SUBTLE_CRYPTO)
find_package(GnuTLS 3.0.0 REQUIRED)
endif ()
Modified: trunk/Source/cmake/OptionsGTK.cmake (196076 => 196077)
--- trunk/Source/cmake/OptionsGTK.cmake 2016-02-03 21:10:08 UTC (rev 196076)
+++ trunk/Source/cmake/OptionsGTK.cmake 2016-02-03 21:21:46 UTC (rev 196077)
@@ -66,12 +66,6 @@
set(ENABLE_GLES2_DEFAULT ON)
endif ()
-if (WTF_CPU_X86_64)
- set(ENABLE_FTL_DEFAULT ON)
-else ()
- set(ENABLE_FTL_DEFAULT OFF)
-endif ()
-
# Public options specific to the GTK+ port. Do not add any options here unless
# there is a strong reason we should support changing the value of the option,
# and the option is not relevant to any other WebKit ports.
@@ -133,7 +127,6 @@
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCELERATED_2D_CANVAS PUBLIC OFF)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CREDENTIAL_STORAGE PUBLIC ON)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DRAG_SUPPORT PUBLIC ON)
-WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PUBLIC ${ENABLE_FTL_DEFAULT})
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GEOLOCATION PUBLIC ON)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ICONDATABASE PUBLIC ON)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_JIT PUBLIC ON)
@@ -153,6 +146,7 @@
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_REGIONS PRIVATE ON)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_SELECTORS_LEVEL4 PRIVATE ON)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DATABASE_PROCESS PRIVATE ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PRIVATE ${WTF_CPU_X86_64})
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FULLSCREEN_API PRIVATE ON)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INDEXED_DATABASE PRIVATE ON)
@@ -234,11 +228,11 @@
endif ()
endif ()
-if (ENABLE_FTL_JIT)
+if (USE_LLVM_DISASSEMBLER)
if (WTF_CPU_X86_64)
find_package(LLVM 3.7)
if (NOT LLVM_FOUND)
- message(FATAL_ERROR "LLVM 3.7 is required for ENABLE_FTL_JIT")
+ message(FATAL_ERROR "LLVM 3.7 is required for USE_LLVM_DISASSEMBLER")
endif ()
SET_AND_EXPOSE_TO_BUILD(HAVE_LLVM TRUE)
else ()