diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2011-11-18 09:48:54 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-22 13:10:56 +0100 |
commit | 52ef2ee57fd75640aebdb7578aefb5303547dcc7 (patch) | |
tree | b1a11efd8286cfb134f4b5dc8395febd177454cf /configure | |
parent | ce829cbb857bb0b6f49de81b4e5cc9f26ac0b2d1 (diff) | |
download | qtbase-52ef2ee57fd75640aebdb7578aefb5303547dcc7.tar.gz |
Add V8 snapshot support
A V8 snapshot is a serialized representation of the JavaScript heap.
Using a snapshot can vastly speed up V8 initialization.
This commit introduces a new tool, mkv8snapshot. mkv8snapshot is
automatically invoked as part of building QtV8, and generates a .cpp
file which is compiled into the QtV8 library.
Because mkv8snapshot itself needs to initialize the V8 environment
the non-snapshot way (i.e., by evaluating thousands of lines of
JavaScript), it needs to build all of V8. This means that V8 is
effectively built twice when snapshots are enabled.
When cross-compiling, only host=i386 and target=arm is supported,
since that's the only relevant case for which V8 currently
supports a simulator. mkv8snapshot is built and run as a host tool
(using the simulator), and generates a snapshot that will be used
on the target.
Task-number: QTBUG-21152
Change-Id: I9270652f129505508f78db8b0a39fbf57dc8b86d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -705,6 +705,7 @@ CFG_MULTIMEDIA=auto CFG_AUDIO_BACKEND=auto CFG_SVG=auto CFG_V8=auto +CFG_V8SNAPSHOT=auto CFG_DECLARATIVE=auto CFG_DECLARATIVE_DEBUG=yes CFG_WEBKIT=auto # (yes|no|auto|debug) @@ -7270,6 +7271,7 @@ canBuildQtXmlPatterns="yes" canBuildWebKit="$HAVE_STL" canBuildQtConcurrent="yes" canBuildV8="yes" +canUseV8Snapshot="yes" # WebKit requires stdint.h "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/stdint "Stdint" $L_FLAGS $I_FLAGS $l_FLAGS @@ -7502,6 +7504,25 @@ if [ "$CFG_V8" = "no" ]; then QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_V8" else QT_CONFIG="$QT_CONFIG v8" + # Detect snapshot support + if [ "$CFG_ARCH" != "$CFG_HOST_ARCH" ]; then + case "$CFG_HOST_ARCH,$CFG_ARCH" in + i386,arm) + ;; + *) canUseV8Snapshot="no" + ;; + esac + fi + if [ "$CFG_V8SNAPSHOT" = "auto" ]; then + CFG_V8SNAPSHOT="$canUseV8Snapshot" + fi + if [ "$CFG_V8SNAPSHOT" = "yes" -a "$canUseV8Snapshot" = "no" ]; then + echo "Error: V8 snapshot was requested, but is not supported on this platform." + exit 1 + fi + if [ "$CFG_V8SNAPSHOT" = "yes" ]; then + QT_CONFIG="$QT_CONFIG v8snapshot" + fi fi if [ "$CFG_DECLARATIVE" = "yes" ]; then @@ -8666,6 +8687,13 @@ for file in .projects .projects.3; do *examples/activeqt/*) continue ;; */qmake/qmake.pro) continue ;; *tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*|*linguist/lrelease*) SPEC=$QMAKESPEC ;; + *tools/mkv8snapshot/*) + if [ "$CFG_V8" = "yes" -a "$CFG_V8SNAPSHOT" = "yes" ]; then + SPEC=$QMAKESPEC + else + continue + fi + ;; *) if [ "$CFG_NOPROCESS" = "yes" ]; then continue else |