Changeset 196077 in webkit
- Timestamp:
- Feb 3, 2016, 1:21:46 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r196020 r196077 1 2016-02-03 Michael Catanzaro <mcatanzaro@igalia.com> 2 3 [GTK][EFL] Switch FTL to B3 4 https://bugs.webkit.org/show_bug.cgi?id=153478 5 6 Reviewed by Csaba Osztrogonác. 7 8 * Source/cmake/OptionsEfl.cmake: 9 * Source/cmake/OptionsGTK.cmake: 10 1 11 2016-02-02 Joseph Pecoraro <pecoraro@apple.com> 2 12 -
trunk/Source/JavaScriptCore/CMakeLists.txt
r196032 r196077 992 992 ) 993 993 994 995 994 if (ENABLE_FTL_JIT) 996 # Configure llvmForJSC.so997 set(llvmForJSC_SOURCES998 llvm/library/LLVMAnchor.cpp999 llvm/library/LLVMExports.cpp1000 llvm/library/LLVMOverrides.cpp1001 )1002 set(llvmForJSC_INCLUDE_DIRECTORIES1003 ${LLVM_INCLUDE_DIRS}1004 "${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}"1005 )1006 1007 add_custom_command(1008 OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h1009 COMMAND ${CMAKE_COMMAND} -E touch ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h1010 VERBATIM)1011 1012 # Added extra items for JavaScriptCore1013 list(APPEND JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES1014 ${LLVM_INCLUDE_DIRS}1015 )1016 1017 995 list(APPEND JavaScriptCore_SOURCES 1018 996 dfg/DFGToFTLDeferredCompilationCallback.cpp 1019 997 dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp 1020 1021 disassembler/LLVMDisassembler.cpp1022 disassembler/X86Disassembler.cpp1023 998 1024 999 ftl/FTLAbstractHeap.cpp … … 1072 1047 ftl/FTLUnwindInfo.cpp 1073 1048 ftl/FTLValueRange.cpp 1074 1049 ) 1050 endif () 1051 1052 if (USE_LLVM_DISASSEMBLER) 1053 # Configure llvmForJSC.so 1054 set(llvmForJSC_SOURCES 1055 llvm/library/LLVMAnchor.cpp 1056 llvm/library/LLVMExports.cpp 1057 llvm/library/LLVMOverrides.cpp 1058 ) 1059 set(llvmForJSC_INCLUDE_DIRECTORIES 1060 ${LLVM_INCLUDE_DIRS} 1061 "${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}" 1062 ) 1063 1064 add_custom_command( 1065 OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h 1066 COMMAND ${CMAKE_COMMAND} -E touch ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h 1067 VERBATIM) 1068 1069 # Added extra items for JavaScriptCore 1070 list(APPEND JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES 1071 ${LLVM_INCLUDE_DIRS} 1072 ) 1073 1074 list(APPEND JavaScriptCore_SOURCES 1075 1075 llvm/InitializeLLVM.cpp 1076 1076 llvm/LLVMAPI.cpp … … 1367 1367 WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS() 1368 1368 1369 if ( ENABLE_FTL_JITAND NOT WIN32)1369 if (USE_LLVM_DISASSEMBLER AND NOT WIN32) 1370 1370 if (NOT llvmForJSC_LIBRARIES) 1371 1371 set(llvmForJSC_LIBRARIES ${LLVM_STATIC_LIBRARIES}) 1372 1372 endif () 1373 1373 if (NOT llvmForJSC_LIBRARIES) 1374 message(FATAL_ERROR "No LLVM libs found, but FTLis enabled. Stopping build.")1374 message(FATAL_ERROR "No LLVM libs found, but LLVM disassembler is enabled. Stopping build.") 1375 1375 endif () 1376 1376 … … 1417 1417 endif () 1418 1418 1419 if ( ENABLE_FTL_JIT)1419 if (USE_LLVM_DISASSEMBLER) 1420 1420 add_dependencies(JavaScriptCore llvmForJSC) 1421 1421 endif () -
trunk/Source/JavaScriptCore/ChangeLog
r196057 r196077 1 2016-02-03 Michael Catanzaro <mcatanzaro@igalia.com> 2 3 [GTK][EFL] Switch FTL to B3 4 https://bugs.webkit.org/show_bug.cgi?id=153478 5 6 Reviewed by Csaba Osztrogonác. 7 8 Conditionalize code to make it possible to build FTL completely without LLVM. 9 10 * CMakeLists.txt: 11 * dfg/DFGCommon.h: 12 * dfg/DFGPlan.cpp: 13 (JSC::DFG::Plan::compileInThreadImpl): 14 * ftl/FTLAbbreviatedTypes.h: 15 * ftl/FTLFail.cpp: 16 (JSC::FTL::fail): 17 * ftl/FTLState.cpp: 18 (JSC::FTL::State::State): 19 (JSC::FTL::State::~State): 20 1 21 2016-02-03 Carlos Garcia Campos <cgarcia@igalia.com> 2 22 -
trunk/Source/JavaScriptCore/PlatformGTK.cmake
r195009 r196077 39 39 endif () 40 40 41 if ( ENABLE_FTL_JIT)41 if (USE_LLVM_DISASSEMBLER) 42 42 set(llvmForJSC_LIBRARIES ${LLVM_LIBRARIES}) 43 43 set(llvmForJSC_INSTALL_DIR "${LIB_INSTALL_DIR}/javascriptcoregtk-${WEBKITGTK_API_VERSION}") -
trunk/Source/JavaScriptCore/dfg/DFGCommon.h
r196044 r196077 38 38 // We are in the middle of a transition from LLVM to B3 as the backend for the FTL. This flag will go 39 39 // away once that transition is finished. For now, we enable B3 only on some platforms. 40 #if CPU(X86_64) && PLATFORM(MAC) &&ENABLE(FTL_JIT)40 #if CPU(X86_64) && ENABLE(FTL_JIT) 41 41 #define FTL_USES_B3 1 42 42 #else -
trunk/Source/JavaScriptCore/dfg/DFGPlan.cpp
r192605 r196077 456 456 dumpAndVerifyGraph(dfg, "Graph just before FTL lowering:", shouldDumpDisassembly(mode)); 457 457 458 #if HAVE(LLVM) && !FTL_USES_B3 458 459 bool haveLLVM; 460 #endif 459 461 Safepoint::Result safepointResult; 460 462 { 461 463 GraphSafepoint safepoint(dfg, safepointResult); 464 #if HAVE(LLVM) && !FTL_USES_B3 462 465 haveLLVM = initializeLLVM(); 466 #endif 463 467 } 464 468 if (safepointResult.didGetCancelled()) 465 469 return CancelPath; 466 470 471 #if HAVE(LLVM) && !FTL_USES_B3 467 472 if (!haveLLVM) { 468 473 if (Options::ftlCrashesIfCantInitializeLLVM()) { … … 473 478 return FailPath; 474 479 } 480 #endif 475 481 476 482 FTL::State state(dfg); -
trunk/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h
r192605 r196077 44 44 typedef B3::Type LType; 45 45 typedef B3::Value* LValue; 46 47 typedef void* LAtomicOrdering; 48 typedef void* LBuilder; 49 typedef void* LCallConv; 50 typedef void* LContext; 51 typedef void* LIntPredicate; 52 typedef void* LLinkage; 53 typedef void* LModule; 54 typedef void* LRealPredicate; 55 typedef void* LMemoryBuffer; 46 56 #else 47 57 typedef LLVMBasicBlockRef LBasicBlock; 48 58 typedef LLVMTypeRef LType; 49 59 typedef LLVMValueRef LValue; 50 #endif51 60 52 61 typedef LLVMAtomicOrdering LAtomicOrdering; … … 59 68 typedef LLVMRealPredicate LRealPredicate; 60 69 typedef LLVMMemoryBufferRef LMemoryBuffer; 70 #endif 61 71 62 72 enum SynchronizationScope { SingleThread, CrossThread }; -
trunk/Source/JavaScriptCore/ftl/FTLFail.cpp
r176779 r196077 41 41 state.graph.m_plan.finalizer = std::make_unique<FailedFinalizer>(state.graph.m_plan); 42 42 43 #if !FTL_USES_B3 43 44 if (state.module) 44 45 llvm->DisposeModule(state.module); 46 #endif 45 47 } 46 48 -
trunk/Source/JavaScriptCore/ftl/FTLState.cpp
r195434 r196077 45 45 State::State(Graph& graph) 46 46 : graph(graph) 47 #if FTL_USES_B3 48 , context(nullptr) 49 #else 47 50 , context(llvm->ContextCreate()) 51 #endif 48 52 , module(0) 49 53 , function(0) … … 86 90 State::~State() 87 91 { 92 #if !FTL_USES_B3 88 93 llvm->ContextDispose(context); 94 #endif 89 95 } 90 96 -
trunk/Source/WTF/ChangeLog
r196071 r196077 1 2016-02-03 Michael Catanzaro <mcatanzaro@igalia.com> 2 3 [GTK][EFL] Switch FTL to B3 4 https://bugs.webkit.org/show_bug.cgi?id=153478 5 6 Reviewed by Csaba Osztrogonác. 7 8 Enable B3 by default on all x86. 9 10 * wtf/Platform.h: 11 1 12 2016-02-03 Anders Carlsson <andersca@apple.com> 2 13 -
trunk/Source/WTF/wtf/Platform.h
r195968 r196077 717 717 #endif 718 718 719 #if PLATFORM(GTK) && HAVE(LLVM) && ENABLE(JIT) && !defined(ENABLE_FTL_JIT) && CPU(X86_64)720 #define ENABLE_FTL_JIT 1721 #endif722 723 719 /* The FTL *does not* work on 32-bit platforms. Disable it even if someone asked us to enable it. */ 724 720 #if USE(JSVALUE32_64) … … 786 782 #endif 787 783 788 /* The B3 compiler is an experimental backend that is still in development. We will keep it building 789 on Mac/x86-64 for now, though it is unused except for tests. */ 790 #if (PLATFORM(MAC) || PLATFORM(IOS)) && (CPU(X86_64) || CPU(ARM64)) && ENABLE(FTL_JIT) 784 /* This controls whether B3 is built. It will not be used unless FTL_USES_B3 is enabled. */ 785 #if (CPU(X86_64) || CPU(ARM64)) && ENABLE(FTL_JIT) 791 786 #define ENABLE_B3_JIT 1 792 787 #endif -
trunk/Source/cmake/OptionsEfl.cmake
r195675 r196077 68 68 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MINIBROWSER PUBLIC OFF) 69 69 set(WebKit2_VERSION_SCRIPT "-Wl,--version-script,${CMAKE_MODULE_PATH}/eflsymbols.filter") 70 endif ()71 72 if (WTF_CPU_X86_64)73 set(ENABLE_FTL_DEFAULT ON)74 else ()75 set(ENABLE_FTL_DEFAULT OFF)76 70 endif () 77 71 … … 98 92 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ENCRYPTED_MEDIA_V2 PUBLIC ON) 99 93 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FILTERS_LEVEL_2 PUBLIC OFF) 100 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PUBLIC ${ ENABLE_FTL_DEFAULT})94 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PUBLIC ${WTF_CPU_X86_64}) 101 95 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FULLSCREEN_API PUBLIC ON) 102 96 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD PUBLIC OFF) … … 283 277 endif () 284 278 285 if (ENABLE_FTL_JIT) 286 if (WTF_CPU_X86_64) 287 find_package(LLVM 3.6.0 REQUIRED) 288 elseif (WTF_CPU_ARM64) 289 find_package(LLVM REQUIRED) 290 if (NOT "${LLVM_VERSION}" STREQUAL "3.5.0ftl") 291 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.") 292 endif () 293 else () 294 message(FATAL_ERROR "FTL JIT is only available on X86_64 and AArch64 architectures.") 295 endif () 279 if (USE_LLVM_DISASSEMBLER) 280 find_package(LLVM REQUIRED) 296 281 SET_AND_EXPOSE_TO_BUILD(HAVE_LLVM TRUE) 282 endif () 283 284 if (ENABLE_FTL_JIT AND NOT WTF_CPU_X86_64 AND NOT DEVELOPER_MODE) 285 message(FATAL_ERROR "FTL JIT is only available on X86_64 architecture.") 297 286 endif () 298 287 -
trunk/Source/cmake/OptionsGTK.cmake
r195675 r196077 67 67 endif () 68 68 69 if (WTF_CPU_X86_64)70 set(ENABLE_FTL_DEFAULT ON)71 else ()72 set(ENABLE_FTL_DEFAULT OFF)73 endif ()74 75 69 # Public options specific to the GTK+ port. Do not add any options here unless 76 70 # there is a strong reason we should support changing the value of the option, … … 134 128 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CREDENTIAL_STORAGE PUBLIC ON) 135 129 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DRAG_SUPPORT PUBLIC ON) 136 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PUBLIC ${ENABLE_FTL_DEFAULT})137 130 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GEOLOCATION PUBLIC ON) 138 131 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ICONDATABASE PUBLIC ON) … … 154 147 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_SELECTORS_LEVEL4 PRIVATE ON) 155 148 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DATABASE_PROCESS PRIVATE ON) 149 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PRIVATE ${WTF_CPU_X86_64}) 156 150 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF) 157 151 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FULLSCREEN_API PRIVATE ON) … … 235 229 endif () 236 230 237 if ( ENABLE_FTL_JIT)231 if (USE_LLVM_DISASSEMBLER) 238 232 if (WTF_CPU_X86_64) 239 233 find_package(LLVM 3.7) 240 234 if (NOT LLVM_FOUND) 241 message(FATAL_ERROR "LLVM 3.7 is required for ENABLE_FTL_JIT")235 message(FATAL_ERROR "LLVM 3.7 is required for USE_LLVM_DISASSEMBLER") 242 236 endif () 243 237 SET_AND_EXPOSE_TO_BUILD(HAVE_LLVM TRUE)
Note:
See TracChangeset
for help on using the changeset viewer.