WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-153478-20160202234413.patch (text/plain), 15.27 KB, created by
Michael Catanzaro
on 2016-02-02 21:44:37 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Michael Catanzaro
Created:
2016-02-02 21:44:37 PST
Size:
15.27 KB
patch
obsolete
>Subversion Revision: 195920 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index dd0169420484647bf062ffe3a87942d05c3c1d0f..3e954c72362babc470aa940c8297a21d6e107245 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,23 @@ >+2016-02-02 Michael Catanzaro <mcatanzaro@igalia.com> >+ >+ [GTK][EFL] Switch FTL to B3 >+ https://bugs.webkit.org/show_bug.cgi?id=153478 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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-01-30 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r195799 and r195828. >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index a01268d7421d7a4c92a4b5fe6c474fed3472640b..8892f7fc98e70d7b143b95bb3651bd2b44c25180 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,14 @@ >+2016-02-02 Michael Catanzaro <mcatanzaro@igalia.com> >+ >+ [GTK][EFL] Switch FTL to B3 >+ https://bugs.webkit.org/show_bug.cgi?id=153478 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Enable B3 by default on all x86. >+ >+ * wtf/Platform.h: >+ > 2016-01-30 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r195911. >diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt >index f42b6696c205efd068f134068a370dc11b0b140a..6d4cd2912657afbc4b957cad5cca9f4f077a3a47 100644 >--- a/Source/JavaScriptCore/CMakeLists.txt >+++ b/Source/JavaScriptCore/CMakeLists.txt >@@ -988,36 +988,11 @@ list(APPEND JavaScriptCore_SOURCES > 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 JavaScriptCore >- list(APPEND JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES >- ${LLVM_INCLUDE_DIRS} >- ) >- > list(APPEND JavaScriptCore_SOURCES > dfg/DFGToFTLDeferredCompilationCallback.cpp > dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp > >- disassembler/LLVMDisassembler.cpp >- disassembler/X86Disassembler.cpp >- > ftl/FTLAbstractHeap.cpp > ftl/FTLAbstractHeapRepository.cpp > ftl/FTLAvailableRecovery.cpp >@@ -1068,6 +1043,34 @@ if (ENABLE_FTL_JIT) > 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 JavaScriptCore >+ list(APPEND JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES >+ ${LLVM_INCLUDE_DIRS} >+ ) >+ >+ list(APPEND JavaScriptCore_SOURCES >+ disassembler/LLVMDisassembler.cpp >+ disassembler/X86Disassembler.cpp > > llvm/InitializeLLVM.cpp > llvm/InitializeLLVMLinux.cpp >@@ -1353,12 +1356,12 @@ endif () > > WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS() > >-if (ENABLE_FTL_JIT) >+if (USE_LLVM_DISASSEMBLER) > 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}) >@@ -1403,7 +1406,7 @@ if (${JavaScriptCore_LIBRARY_TYPE} STREQUAL "SHARED") > install(TARGETS JavaScriptCore DESTINATION "${LIB_INSTALL_DIR}") > endif () > >-if (ENABLE_FTL_JIT) >+if (USE_LLVM_DISASSEMBLER) > add_dependencies(JavaScriptCore llvmForJSC) > endif () > >diff --git a/Source/JavaScriptCore/dfg/DFGCommon.h b/Source/JavaScriptCore/dfg/DFGCommon.h >index 734e962df607715711170a4f588270080ba6e359..2f70a3bc1e412dda661202192cbcb7eb0deef9e2 100644 >--- a/Source/JavaScriptCore/dfg/DFGCommon.h >+++ b/Source/JavaScriptCore/dfg/DFGCommon.h >@@ -37,7 +37,7 @@ namespace JSC { namespace DFG { > > // 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) >+#if CPU(X86_64) && ENABLE(FTL_JIT) > #define FTL_USES_B3 1 > #else > #define FTL_USES_B3 0 >diff --git a/Source/JavaScriptCore/dfg/DFGPlan.cpp b/Source/JavaScriptCore/dfg/DFGPlan.cpp >index 512f447d5ff1e6534014f9efefc1b728c58cec60..0df19d3073379052a3005fcf64ea09e2cdf2af6c 100644 >--- a/Source/JavaScriptCore/dfg/DFGPlan.cpp >+++ b/Source/JavaScriptCore/dfg/DFGPlan.cpp >@@ -455,15 +455,20 @@ Plan::CompilationPath Plan::compileInThreadImpl(LongLivedState& longLivedState) > > dumpAndVerifyGraph(dfg, "Graph just before FTL lowering:", shouldDumpDisassembly(mode)); > >+#if !FTL_USES_B3 || USE(LLVM_DISASSEMBLER) > bool haveLLVM; >+#endif > Safepoint::Result safepointResult; > { > GraphSafepoint safepoint(dfg, safepointResult); >+#if !FTL_USES_B3 || USE(LLVM_DISASSEMBLER) > haveLLVM = initializeLLVM(); >+#endif > } > if (safepointResult.didGetCancelled()) > return CancelPath; >- >+ >+#if !FTL_USES_B3 || USE(LLVM_DISASSEMBLER) > if (!haveLLVM) { > if (Options::ftlCrashesIfCantInitializeLLVM()) { > dataLog("LLVM can't be initialized.\n"); >@@ -472,6 +477,7 @@ Plan::CompilationPath Plan::compileInThreadImpl(LongLivedState& longLivedState) > finalizer = std::make_unique<FailedFinalizer>(*this); > return FailPath; > } >+#endif > > FTL::State state(dfg); > FTL::lowerDFGToLLVM(state); >diff --git a/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h b/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h >index 9ba46b2d1f4d0e12403c1d2c90121513d176c544..a517a9edceea676e15f53e7b185c4c5f50dbe86c 100644 >--- a/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h >+++ b/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h >@@ -43,11 +43,20 @@ namespace JSC { namespace FTL { > 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 LLVMLinkage LLinkage; > typedef LLVMModuleRef LModule; > typedef LLVMRealPredicate LRealPredicate; > typedef LLVMMemoryBufferRef LMemoryBuffer; >+#endif > > enum SynchronizationScope { SingleThread, CrossThread }; > >diff --git a/Source/JavaScriptCore/ftl/FTLFail.cpp b/Source/JavaScriptCore/ftl/FTLFail.cpp >index ac2fc07eba1e43cdc0c42aea138e5c6e380a4593..d154ebd1a8f9c47287a483ff9a90dd3310f727a4 100644 >--- a/Source/JavaScriptCore/ftl/FTLFail.cpp >+++ b/Source/JavaScriptCore/ftl/FTLFail.cpp >@@ -40,8 +40,10 @@ void fail(State& state) > { > 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 >diff --git a/Source/JavaScriptCore/ftl/FTLState.cpp b/Source/JavaScriptCore/ftl/FTLState.cpp >index 2eac4095089d62e708936452e6014cbd3da1ff68..c2625c56e49cee5632e06c5e284384638b7db193 100644 >--- a/Source/JavaScriptCore/ftl/FTLState.cpp >+++ b/Source/JavaScriptCore/ftl/FTLState.cpp >@@ -34,9 +34,12 @@ > #include "FTLJITCode.h" > #include "FTLJITFinalizer.h" > #include "FTLPatchpointExceptionHandle.h" >-#include <llvm/InitializeLLVM.h> > #include <stdio.h> > >+#if !FTL_USES_B3 >+#include <llvm/InitializeLLVM.h> >+#endif >+ > namespace JSC { namespace FTL { > > using namespace B3; >@@ -44,7 +47,11 @@ using namespace DFG; > > 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 +92,9 @@ State::State(Graph& graph) > > State::~State() > { >+#if !FTL_USES_B3 > llvm->ContextDispose(context); >+#endif > } > > void State::dumpState(const char* when) >diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h >index e5dc0957ed70a31cd1693cbdd47b3d12b395b20a..9542f1818d28c44c4e11f94cd043311aea31eec2 100644 >--- a/Source/WTF/wtf/Platform.h >+++ b/Source/WTF/wtf/Platform.h >@@ -718,10 +718,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 >@@ -787,9 +783,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 > >diff --git a/Source/cmake/OptionsEfl.cmake b/Source/cmake/OptionsEfl.cmake >index 2438c635ec21e3230518d1237b4e1ae48c1cfdca..7c799bc936da416ea247d0698d2fe0ad2c1e2d7f 100644 >--- a/Source/cmake/OptionsEfl.cmake >+++ b/Source/cmake/OptionsEfl.cmake >@@ -69,12 +69,6 @@ else () > 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_DRAG_SUPPORT PUBLIC ON) > 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,18 +276,8 @@ if (ENABLE_SPEECH_SYNTHESIS) > 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 () >- SET_AND_EXPOSE_TO_BUILD(HAVE_LLVM TRUE) >+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) >diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake >index fbd3c7fb5f57499c80b1320eaeb19fc45aba0f44..5d5497d6f25ea90df241fc728ced82d6ae50ff88 100644 >--- a/Source/cmake/OptionsGTK.cmake >+++ b/Source/cmake/OptionsGTK.cmake >@@ -66,12 +66,6 @@ if (NOT OPENGL_FOUND AND OPENGLES2_FOUND) > 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 @@ endif () > 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_IMAGE_SET PRIVATE ON) > 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,18 +228,6 @@ if (ENABLE_CREDENTIAL_STORAGE) > endif () > endif () > >-if (ENABLE_FTL_JIT) >- 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") >- endif () >- SET_AND_EXPOSE_TO_BUILD(HAVE_LLVM TRUE) >- else () >- message(FATAL_ERROR "FTL is only supported for X86_64") >- endif () >-endif () >- > if (ENABLE_GAMEPAD_DEPRECATED) > find_package(GUdev) > if (NOT GUDEV_FOUND) >diff --git a/ChangeLog b/ChangeLog >index e93ada0864941de59c593d0030a9c3a8b1b8c778..2e05bb3965b1a319783a8cf9379b975d9f96855e 100644 >--- a/ChangeLog >+++ b/ChangeLog >@@ -1,3 +1,13 @@ >+2016-02-02 Michael Catanzaro <mcatanzaro@igalia.com> >+ >+ [GTK][EFL] Switch FTL to B3 >+ https://bugs.webkit.org/show_bug.cgi?id=153478 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Source/cmake/OptionsEfl.cmake: >+ * Source/cmake/OptionsGTK.cmake: >+ > 2016-01-30 Yusuke Suzuki <utatane.tea@gmail.com> > > Enable SamplingProfiler on POSIX environment
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 153478
:
270193
|
270333
|
270334
|
270337
|
270550
|
270560
|
270562
|
270579
|
270580