[webkit-dev] Running WinCairo without JIT
Vienneau, Christopher
cvienneau at ea.com
Tue Aug 25 12:18:28 PDT 2015
>> 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:achristensen at apple.com]
Sent: Tuesday, August 25, 2015 10:42 AM
To: Vienneau, Christopher <cvienneau at ea.com>
Cc: webkit-dev-request at lists.webkit.org
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 <cvienneau at ea.com<mailto:cvienneau at ea.com>> wrote:
LLIntAssembly.h
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-dev/attachments/20150825/45ccf270/attachment.html>
More information about the webkit-dev
mailing list