I’ve got it sorted out, seems the steps needed to disable JIT for WinCairo are:
1 – Add the following near the top of wtf\Platform.h: #define ENABLE_JIT 0 2 – Make sure the following file is excluded from the build (in the non-JIT path, it’s not actual assembly so shouldn’t be sent to masm): JavaScriptCore\DerivedSources\LowLevelInterpreter.asm 3 – Modify Source\JavaScriptCore\JavaScriptCore.vcxproj\LLInt\LLIntAssembly\build-LLIntAssembly.pl line 65 as the comment indicates: # If you want to enable the LLINT C loop, set OUTPUTFILENAME to "LLIntAssembly.h" my $OUTPUTFILENAME = File::Spec->catfile($DERIVED_SOURCES_DIR, 'LLIntAssembly.h'); Cheers Chris From: Vienneau, Christopher Sent: Tuesday, August 25, 2015 12:18 PM To: 'Alex Christensen' <[email protected]>; WebKit Development <[email protected]> Subject: RE: Running WinCairo without JIT >> If you are trying to include LLIntAssembly.h on Windows, you’re doing >> something wrong Ok, perhaps there is a bug here then. As noted in my first mail the steps I take in an attempt to disable JIT is: 1) C:\cygwin\home\cvienneau\WebKit-r188436\Source\WTF\wtf\Platform.h (line 698) #define ENABLE_JIT 0 2) Change type of LowLevelInterpreterWin.asm in VS project so that it isn’t built: (Item Type) "Microsoft Macro Assembler" -> "Text" I presume this needs to be done since the sln is not generated. Is that the right approach? 3) After I do this then the C_LOOP path will take over, so now in: C:\cygwin\home\cvienneau\WebKit-r188436\Source\JavaScriptCore\llint\LowLevelInterpreter.cpp (line 425) It does an: #include "LLIntAssembly.h" If you’re telling me it should never do this include on windows then perhaps its missing a #define here? Let’s assume for a second that that’s all that is missing so I comment out the include for my next build, it does compile fine however I get a crash when I encounter any JavaScript. The crash originate from: C:\cygwin\home\cvienneau\WebKit-r188436\Source\JavaScriptCore\llint\LowLevelInterpreter.cpp (line 482) Where is it just returning a default JSValue(); … return JSValue(); // to suppress a compiler warning. } // Interpreter::llintCLoopExecute() } // namespace JSC … > JavaScriptCore.dll!JSC::LLInt::CLoop::execute(JSC::OpcodeID > entryOpcodeID, void * executableAddress, JSC::VM * vm, JSC::ProtoCallFrame * > protoCallFrame, bool isInitializationPass) Line 482 C++ JavaScriptCore.dll!vmEntryToJavaScript(void * executableAddress, JSC::VM * vm, JSC::ProtoCallFrame * protoCallFrame) Line 100 C++ JavaScriptCore.dll!JSC::JITCode::execute(JSC::VM * vm, JSC::ProtoCallFrame * protoCallFrame) Line 82 C++ JavaScriptCore.dll!JSC::Interpreter::execute(JSC::ProgramExecutable * program, JSC::ExecState * callFrame, JSC::JSObject * thisObj) Line 884 C++ JavaScriptCore.dll!JSC::evaluate(JSC::ExecState * exec, const JSC::SourceCode & source, JSC::JSValue thisValue, WTF::NakedPtr<JSC::Exception> & returnedException) Line 101 C++ WebKit.dll!WebCore::ScriptController::evaluateInWorld(const WebCore::ScriptSourceCode & sourceCode, WebCore::DOMWrapperWorld & world) Line 164 C++ WebKit.dll!WebCore::ScriptController::evaluate(const WebCore::ScriptSourceCode & sourceCode) Line 181 C++ WebKit.dll!WebCore::ScriptElement::executeScript(const WebCore::ScriptSourceCode & sourceCode) Line 309 C++ WebKit.dll!WebCore::ScriptElement::prepareScript(const WTF::TextPosition & scriptStartPosition, WebCore::ScriptElement::LegacyTypeSupport supportLegacyTypes) Line 242 C++ WebKit.dll!WebCore::HTMLScriptRunner::runScript(WebCore::Element * script, const WTF::TextPosition & scriptStartPosition) Line 310 C++ WebKit.dll!WebCore::HTMLScriptRunner::execute(WTF::PassRefPtr<WebCore::Element> scriptElement, const WTF::TextPosition & scriptStartPosition) Line 179 C++ WebKit.dll!WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() Line 195 C++ WebKit.dll!WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode mode) Line 259 C++ WebKit.dll!WebCore::HTMLDocumentParser::append(WTF::PassRefPtr<WTF::StringImpl> inputSource) Line 393 C++ WebKit.dll!WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter & writer, const char * data, unsigned __int64 length) Line 50 C++ WebKit.dll!WebCore::DocumentLoader::commitData(const char * bytes, unsigned __int64 length) Line 867 C++ WebKit.dll!WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader * loader, const char * data, int length) Line 700 C++ WebKit.dll!WebCore::DocumentLoader::commitLoad(const char * data, int length) Line 784 C++ WebKit.dll!WebCore::DocumentLoader::dataReceived(WebCore::CachedResource * resource, const char * data, int length) Line 890 C++ WebKit.dll!WebCore::CachedRawResource::notifyClientsDataWasReceived(const char * data, unsigned int length) Line 118 C++ WebKit.dll!WebCore::CachedRawResource::addDataBuffer(WebCore::SharedBuffer & data) Line 70 C++ WebKit.dll!WebCore::SubresourceLoader::didReceiveDataOrBuffer(const char * data, int length, WTF::PassRefPtr<WebCore::SharedBuffer> prpBuffer, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) Line 295 C++ WebKit.dll!WebCore::SubresourceLoader::didReceiveData(const char * data, unsigned int length, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) Line 271 C++ WebKit.dll!WebCore::writeCallback(void * ptr, unsigned __int64 size, unsigned __int64 nmemb, void * data) Line 335 C++ libcurl.dll!000007fedfa63510() Unknown libcurl.dll!000007fedfa432af() Unknown libcurl.dll!000007fedfa5601d() Unknown libcurl.dll!000007fedfa713b4() Unknown libcurl.dll!000007fedfa71ca5() Unknown libcurl.dll!000007fedfa5d033() Unknown libcurl.dll!000007fedfa5d5f0() Unknown WebKit.dll!WebCore::ResourceHandleManager::downloadTimerCallback() Line 650 C++ WebKit.dll!WebCore::ThreadTimers::sharedTimerFiredInternal() Line 135 C++ WebKit.dll!WebCore::TimerWindowWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 93 C++ [External Code] WebKit.dll!WebKitMessageLoop::run(HACCEL__ * hAccelTable) Line 89 C++ WinLauncher.dll!0000000180006f97() Unknown WinLauncher.exe!00000001400016af() Unknown WinLauncher.exe!0000000140003382() Unknown [External Code] Later causing this crash in the form of a RELEASE_ASSERT(result); C:\cygwin\home\cvienneau\WebKit-r188436\Source\JavaScriptCore\runtime\Completion.cpp (line 107) WTF.dll!WTFCrash() Line 321 C++ > JavaScriptCore.dll!JSC::evaluate(JSC::ExecState * exec, const > JSC::SourceCode & source, JSC::JSValue thisValue, > WTF::NakedPtr<JSC::Exception> & returnedException) Line 107 C++ WebKit.dll!WebCore::ScriptController::evaluateInWorld(const WebCore::ScriptSourceCode & sourceCode, WebCore::DOMWrapperWorld & world) Line 164 C++ WebKit.dll!WebCore::ScriptController::evaluate(const WebCore::ScriptSourceCode & sourceCode) Line 181 C++ WebKit.dll!WebCore::ScriptElement::executeScript(const WebCore::ScriptSourceCode & sourceCode) Line 309 C++ WebKit.dll!WebCore::ScriptElement::prepareScript(const WTF::TextPosition & scriptStartPosition, WebCore::ScriptElement::LegacyTypeSupport supportLegacyTypes) Line 242 C++ WebKit.dll!WebCore::HTMLScriptRunner::runScript(WebCore::Element * script, const WTF::TextPosition & scriptStartPosition) Line 310 C++ WebKit.dll!WebCore::HTMLScriptRunner::execute(WTF::PassRefPtr<WebCore::Element> scriptElement, const WTF::TextPosition & scriptStartPosition) Line 179 C++ WebKit.dll!WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() Line 195 C++ WebKit.dll!WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode mode) Line 259 C++ WebKit.dll!WebCore::HTMLDocumentParser::append(WTF::PassRefPtr<WTF::StringImpl> inputSource) Line 393 C++ WebKit.dll!WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter & writer, const char * data, unsigned __int64 length) Line 50 C++ WebKit.dll!WebCore::DocumentLoader::commitData(const char * bytes, unsigned __int64 length) Line 867 C++ WebKit.dll!WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader * loader, const char * data, int length) Line 700 C++ WebKit.dll!WebCore::DocumentLoader::commitLoad(const char * data, int length) Line 784 C++ WebKit.dll!WebCore::DocumentLoader::dataReceived(WebCore::CachedResource * resource, const char * data, int length) Line 890 C++ WebKit.dll!WebCore::CachedRawResource::notifyClientsDataWasReceived(const char * data, unsigned int length) Line 118 C++ WebKit.dll!WebCore::CachedRawResource::addDataBuffer(WebCore::SharedBuffer & data) Line 70 C++ WebKit.dll!WebCore::SubresourceLoader::didReceiveDataOrBuffer(const char * data, int length, WTF::PassRefPtr<WebCore::SharedBuffer> prpBuffer, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) Line 295 C++ WebKit.dll!WebCore::SubresourceLoader::didReceiveData(const char * data, unsigned int length, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) Line 271 C++ WebKit.dll!WebCore::writeCallback(void * ptr, unsigned __int64 size, unsigned __int64 nmemb, void * data) Line 335 C++ libcurl.dll!000007fedfa63510() Unknown libcurl.dll!000007fedfa432af() Unknown libcurl.dll!000007fedfa5601d() Unknown libcurl.dll!000007fedfa713b4() Unknown libcurl.dll!000007fedfa71ca5() Unknown libcurl.dll!000007fedfa5d033() Unknown libcurl.dll!000007fedfa5d5f0() Unknown WebKit.dll!WebCore::ResourceHandleManager::downloadTimerCallback() Line 650 C++ WebKit.dll!WebCore::ThreadTimers::sharedTimerFiredInternal() Line 135 C++ WebKit.dll!WebCore::TimerWindowWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 93 C++ [External Code] WebKit.dll!WebKitMessageLoop::run(HACCEL__ * hAccelTable) Line 89 C++ WinLauncher.dll!0000000180006f97() Unknown WinLauncher.exe!00000001400016af() Unknown WinLauncher.exe!0000000140003382() Unknown [External Code] Have I taken incorrect steps to disable JIT or is there a bug? From: Alex Christensen [mailto:[email protected]] Sent: Tuesday, August 25, 2015 10:42 AM To: Vienneau, Christopher <[email protected]<mailto:[email protected]>> Cc: [email protected]<mailto:[email protected]> Subject: Re: Running WinCairo without JIT LLIntAssembly.h should never be needed or used on Windows. The reason we have LowLevelInterpreterWin.asm instead is that Visual Studio has a limit on the number of characters (65535 IIRC) in an inline assembly string and so we put that assembly in a different file. If you are trying to include LLIntAssembly.h on Windows, you’re doing something wrong. Alex On Aug 24, 2015, at 6:08 PM, Vienneau, Christopher <[email protected]<mailto:[email protected]>> wrote: LLIntAssembly.h
_______________________________________________ webkit-dev mailing list [email protected] https://lists.webkit.org/mailman/listinfo/webkit-dev

