Bug 97648

Summary: [Qt] Fix the LLInt build on Windows
Product: WebKit Reporter: Csaba Osztrogonác <ossy>
Component: JavaScriptCoreAssignee: Simon Hausmann <hausmann>
Status: RESOLVED FIXED    
Severity: Normal CC: abecsi, ggaren, hausmann, mark.lam, net147, ossy, roger_fong, vestbo, webkit.review.bot, zarvai
Priority: P2 Keywords: Qt, QtTriaged
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 95749, 100345, 100364, 100369    
Bug Blocks: 97584    
Attachments:
Description Flags
Patch
none
Patch
none
Patch none

Description Csaba Osztrogonác 2012-09-26 02:16:31 PDT
Unfortunately we can't enable LLInt on Windows now, because building 
of LLIntOffsetsExtractor.cppfails with the following error message:

	cl -c -nologo -Zm200 -Zc:wchar_t -wd4291 -wd4344 -wd4396 -wd4503 -wd4800 -wd4819 -wd4996 -O2 -MD -GR -EHsc -DUNICODE -DWIN32 -DBUILDING_QT__=1 -DNDEBUG -DENABLE_3D_RENDERING=1 -DENABLE_BLOB=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_FAST_MOBILE_SCROLLING=1 -DENABLE_FILTERS=1 -DENABLE_FTPDIR=1 -DENABLE_FULLSCREEN_API=1 -DENABLE_GESTURE_EVENTS=1 -DENABLE_ICONDATABASE=1 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INSPECTOR=1 -DENABLE_INSPECTOR_SERVER=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_VENDOR_PREFIXES=1 -DENABLE_LEGACY_WEBKIT_BLOB_BUILDER=1 -DENABLE_METER_ELEMENT=1 -DENABLE_NOTIFICATIONS=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SQL_DATABASE=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WORKERS=1 -DWTF_USE_TILED_BACKING_STORE=1 -DHAVE_QTQUICK=1 -DHAVE_QTPRINTSUPPORT=1 -DHAVE_QSTYLE=1 -DHAVE_QTTESTLIB=1 -DENABLE_NETSCAPE_PLUGIN_API=1 -DPLUGIN_ARCHITECTURE_UNSUPPORTED=1 -DWTF_USE_3D_GRAPHICS=1 -DENABLE_WEBGL=1 -DENABLE_CSS_SHADERS=1 -DENABLE_ORIENTATION_EVENTS=1 -DENABLE_DEVICE_ORIENTATION=1 -DENABLE_TOUCH_SLIDER=1 -DENABLE_ACCELERATED_2D_CANVAS=0 -DENABLE_ANIMATION_API=0 -DENABLE_BATTERY_STATUS=0 -DENABLE_CSP_NEXT=0 -DENABLE_CSS_GRID_LAYOUT=0 -DENABLE_CSS_HIERARCHIES=0 -DENABLE_CSS_IMAGE_ORIENTATION=0 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_VARIABLES=0 -DENABLE_CSS3_TEXT_DECORATION=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATAGRID=0 -DENABLE_DATA_TRANSFER_ITEMS=0 -DENABLE_DIRECTORY_UPLOAD=0 -DENABLE_DOWNLOAD_ATTRIBUTE=0 -DENABLE_FILE_SYSTEM=0 -DENABLE_GAMEPAD=0 -DENABLE_GEOLOCATION=0 -DENABLE_HIGH_DPI_CANVAS=0 -DENABLE_INDEXED_DATABASE=0 -DENABLE_INPUT_SPEECH=0 -DENABLE_INPUT_TYPE_DATE=0 -DENABLE_INPUT_TYPE_DATETIME=0 -DENABLE_INPUT_TYPE_DATETIMELOCAL=0 -DENABLE_INPUT_TYPE_MONTH=0 -DENABLE_INPUT_TYPE_TIME=0 -DENABLE_INPUT_TYPE_WEEK=0 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LINK_PREFETCH=0 -DENABLE_LINK_PRERENDER=0 -DENABLE_MATHML=0 -DENABLE_MEDIA_SOURCE=0 -DENABLE_MEDIA_STATISTICS=0 -DENABLE_MEDIA_STREAM=0 -DENABLE_MHTML=0 -DENABLE_MICRODATA=0 -DENABLE_MUTATION_OBSERVERS=0 -DENABLE_NAVIGATOR_CONTENT_UTILS=0 -DENABLE_NETWORK_INFO=0 -DENABLE_QUOTA=0 -DENABLE_SCRIPTED_SPEECH=0 -DENABLE_SHADOW_DOM=0 -DENABLE_STYLE_SCOPED=0 -DENABLE_SVG_DOM_OBJC_BINDINGS=0 -DENABLE_TEXT_AUTOSIZING=0 -DENABLE_TEXT_NOTIFICATIONS_ONLY=0 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_UNDO_MANAGER=0 -DENABLE_VIBRATION=0 -DENABLE_VIDEO=0 -DENABLE_VIDEO_TRACK=0 -DENABLE_WEB_AUDIO=0 -DENABLE_XSLT=0 -DQT_DLL -DQT_NO_DEBUG -DQT_CORE_LIB -I"." -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\WTF" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\WTF" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\assembler" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\bytecode" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\bytecompiler" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\heap" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\dfg" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\debugger" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\disassembler" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\interpreter" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\jit" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\llint" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\parser" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\profiler" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\runtime" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\tools" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\yarr" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\API" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\ForwardingHeaders" -I"C:\WebKitBuildSlave\proba5beta\WebKit\WebKitBuild\Release\Source\JavaScriptCore\generated" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source" -I"C:\WebKitBuildSlave\proba5beta\WebKit\WebKitBuild\Release\Source\include" -I"C:\WebKitBuildSlave\Qt5.0.0beta1-angle\qt5\qtbase\include" -I"C:\WebKitBuildSlave\Qt5.0.0beta1-angle\qt5\qtbase\include\QtScript" -I"C:\WebKitBuildSlave\proba5beta\WebKit\Source\JavaScriptCore\os-win32" -I"C:\WebKitBuildSlave\Qt5.0.0beta1-angle\qt5\qtbase\include\QtCore" -I"." -I"C:\WebKitBuildSlave\Qt5.0.0beta1-angle\qt5\qtbase\mkspecs\win32-msvc2010" -Foobj\release\ @C:\Users\WEBKIT~1\AppData\Local\Temp\3\nmDBDE.tmp
LLIntOffsetsExtractor.cpp
c:\webkitbuildslave\proba5beta\webkit\source\javascriptcore\runtime\JSValue.h(100) : error C2146: syntax error : missing ';' before identifier 'int32_t'
c:\webkitbuildslave\proba5beta\webkit\source\javascriptcore\runtime\JSValue.h(100) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\webkitbuildslave\proba5beta\webkit\source\javascriptcore\runtime\JSValue.h(227) : error C2144: syntax error : 'double' should be preceded by ';'
c:\webkitbuildslave\proba5beta\webkit\source\javascriptcore\runtime\JSValue.h(227) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\webkitbuildslave\proba5beta\webkit\source\javascriptcore\runtime\JSValue.h(257) : error C2144: syntax error : 'bool' should be preceded by ';'
c:\webkitbuildslave\proba5beta\webkit\source\javascriptcore\runtime\JSValue.h(257) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

...
Comment 1 Csaba Osztrogonác 2012-09-26 02:35:07 PDT
Mark, after checking https://trac.webkit.org/changeset/128771, it seems
to me LLInt isn't enabled on your Windows port. Is there a reason why?
Comment 2 Mark Lam 2012-09-26 02:45:11 PDT
(In reply to comment #1)
> Mark, after checking https://trac.webkit.org/changeset/128771, it seems
> to me LLInt isn't enabled on your Windows port. Is there a reason why?

That's because we are able to run with the baseline JIT which is better than running the C++ llint.  However, we tested the C++ llint for 32-bit Windows build with Visual Studio 2005 to verify that it works.
Comment 3 Csaba Osztrogonác 2012-09-26 02:51:42 PDT
Ah, I haven't read precisely, now only C++ LLINT is supported on Windows, the
normal LLINT + JIT isn't. Is there a plan to make LLINT + JIT work on Windows?
Comment 4 Mark Lam 2012-09-26 11:23:21 PDT
(In reply to comment #3)
> Ah, I haven't read precisely, now only C++ LLINT is supported on Windows, the
> normal LLINT + JIT isn't. Is there a plan to make LLINT + JIT work on Windows?

Hi Csaba.  Currently, the Windows port will build with the C++ llint or the baseline JIT.  It will not build with both C++ llint and JIT (not supported on any port), nor ASM llint + JIT.  I don't personally have any plans to work on LLINT + JIT on Windows in the near future.
Comment 5 Simon Hausmann 2012-10-01 02:40:25 PDT
*** Bug 98004 has been marked as a duplicate of this bug. ***
Comment 6 Simon Hausmann 2012-10-25 04:39:20 PDT
Created attachment 170616 [details]
Patch
Comment 7 Simon Hausmann 2012-10-25 06:24:59 PDT
Created attachment 170624 [details]
Patch

Updated patch that forces debug and release builds of LLIntOffsetsExtractor
Comment 8 Simon Hausmann 2012-10-26 04:08:43 PDT
Comment on attachment 170624 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=170624&action=review

Notes during face-to-face review with Tor Arne

> Source/JavaScriptCore/LLIntOffsetsExtractor.pro:30
> +INCLUDEPATH = $$PWD $$INCLUDEPATH

Get rid of this, swap include()s.

> Source/JavaScriptCore/Target.pri:34
> +CONFIG(debug, debug|release): INCLUDEPATH += $$JAVASCRIPTCORE_GENERATED_SOURCES_DIR\debug
> +CONFIG(release, debug|release): INCLUDEPATH += $$JAVASCRIPTCORE_GENERATED_SOURCES_DIR\release

Write as:

    debug_and_release: INCLUDEPATH += $$JAVASCRIPTCORE_GENERATED_SOURCES_DIR/$$activeBuildConfig()

> Tools/qmake/mkspecs/features/default_pre.prf:122
> +EXEEXT =
> +win32: EXEEXT = .exe

Rename to BIN_EXTENSION
Comment 9 Simon Hausmann 2012-10-26 04:58:57 PDT
Created attachment 170896 [details]
Patch
Comment 10 Tor Arne Vestbø 2012-10-26 05:00:48 PDT
Comment on attachment 170896 [details]
Patch

r=me
Comment 11 WebKit Review Bot 2012-10-26 05:48:50 PDT
Comment on attachment 170896 [details]
Patch

Clearing flags on attachment: 170896

Committed r132636: <http://trac.webkit.org/changeset/132636>
Comment 12 WebKit Review Bot 2012-10-26 05:48:55 PDT
All reviewed patches have been landed.  Closing bug.