profile/ivi/qtjsbackend.git
12 years ago[V8] Fix compilation with Intel CC.
Thiago Macieira [Thu, 1 Sep 2011 09:30:40 +0000 (11:30 +0200)]
[V8] Fix compilation with Intel CC.

Issue reported upstream at:
http://code.google.com/p/v8/issues/detail?id=1885
http://code.google.com/p/v8/issues/detail?id=689

Change-Id: I050e505e6a1977203ef95b51468d420507295203
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Add support for QNX platform
Sean Harmer [Fri, 13 Jan 2012 18:32:41 +0000 (18:32 +0000)]
[V8] Add support for QNX platform

This submission is based on code originally contributed by Jeff Rogers <jrogers@rim.com> with permission from Research in
Motion.

We have tried to make this change as unobtrusive as possible. For example in the atomic_ops.h header we have added a
conditional include for a qnx-specific atomicops_internals_arm_qnx.h as the existing atomicops_internals_arm_gcc.h is
actually Linux-specific despite the name of the file. In the longer term it would make sense to use an asm implementation
that is only dependent upon the CPU rather than OS-specific system calls. See qtbase/src/corelib/arch/qatomic_armv*.h
for a good reference.

Here we decided not to risk breaking existing platforms for the initial introduction of this new platform.

The QNX platform integration is built on top of the posix base.

Change-Id: I2ba25c227401c540c52067c31898e81a1f25855d
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Add flag to avoid breakpoint relocation
Kai Koehne [Thu, 10 Nov 2011 15:00:37 +0000 (16:00 +0100)]
[V8] Add flag to avoid breakpoint relocation

Add a flag that prevents v8 from relocating breakpoints across
line boundaries.

Change-Id: I007f06744094add7e700818b010e021a649e2294
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Fix warnings
Aaron Kennedy [Fri, 27 May 2011 03:04:15 +0000 (13:04 +1000)]
[V8] Fix warnings

Change-Id: I2cef35e1d153735c3de5730ff763da85c5d534a5
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Remove execute flag from v8-debug.h
Aaron Kennedy [Thu, 25 Aug 2011 01:09:58 +0000 (11:09 +1000)]
[V8] Remove execute flag from v8-debug.h

Change-Id: I2c930d05a6eaf5599920c682552a6a24dd3a6a2c
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Fix deprecated Python code
Kent Hansen [Fri, 2 Sep 2011 10:03:09 +0000 (12:03 +0200)]
[V8] Fix deprecated Python code

Needed to make the scripts run on Python 3, which is the
default python interpreter on some newer distros.

Patch from http://code.google.com/p/v8/issues/detail?id=1391

Change-Id: I5d5a0250b252b114586cfad7b1a713fde1cae1cf
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] QtScript/V8: Add new v8 api to check if a value is an error.
Jedrzej Nowacki [Tue, 7 Dec 2010 10:56:42 +0000 (11:56 +0100)]
[V8] QtScript/V8: Add new v8 api to check if a value is an error.

New function v8::Value::IsError was created.

This API is experimental and added only for the purposes of our
research.

Change-Id: I21c8a3484c2b5a0341b932bd81492b8ebc1f0e05
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Allow a script to be flagged as "native"
Aaron Kennedy [Fri, 9 Sep 2011 04:16:12 +0000 (14:16 +1000)]
[V8] Allow a script to be flagged as "native"

Native scripts do not appear in backtraces, or in the source and
line number when exceptions are thrown from within them.  This is
useful to be able to write code in JavaScript instead of C++ and
still have it appear sensibly to the user.

Change-Id: I324ad60d8712c0afba7f0e4f26ce5ab931ae91dd
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Add custom object compare callback
Aaron Kennedy [Thu, 27 Oct 2011 12:40:00 +0000 (13:40 +0100)]
[V8] Add custom object compare callback

A global custom object comparison callback can be set with:
    V8::SetUserObjectComparisonCallbackFunction()
When two JSObjects are compared (== or !=), if either one has
the MarkAsUseUserObjectComparison() bit set, the custom comparison
callback is invoked to do the actual comparison.

This is useful when you have "value" objects that you want to
compare as equal, even though they are actually different JS object
instances.

Change-Id: Icd3419349874ee845684fff8455862da73f5ff2d
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Allow access to the calling script data
Aaron Kennedy [Fri, 14 Oct 2011 07:03:06 +0000 (17:03 +1000)]
[V8] Allow access to the calling script data

Change-Id: I6efcd64530357a5ca789cd6cccd5426f370b64eb
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Introduce a QML compilation mode
Aaron Kennedy [Thu, 27 Oct 2011 12:34:16 +0000 (13:34 +0100)]
[V8] Introduce a QML compilation mode

In QML mode, there is a second global object - known as the QML
global object.  During property resolution, if a property is not
present on the JS global object, it is resolved on the QML global
object.

This global object behavior is only enabled if a script is being
compiled in QML mode.  The object to use as the QML global object
is passed as a parameter to the Script::Run() method.  Any function
closures etc. created during the run will retain a reference to this
object, so different objects can be passed in different script
runs.

Change-Id: Id3753db6f5723f6d624bd497d6f606244a4ff09a
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Generalize external object resources
Aaron Kennedy [Tue, 4 Oct 2011 06:06:09 +0000 (16:06 +1000)]
[V8] Generalize external object resources

V8 was already able to manage and finalize an external string
resource.  This change generalizes that mechanism to handle a
single generic external resource - a v8::Object::ExternalResource
derived instance - on normal JSObject's.

This is useful for mapping C++ objects to JS objects where the
C++ object's memory is effectively owned by the JS Object, and
thus needs to destroyed when the JS Object is garbage collected.
The V8 mailing list suggests using a weak persistent handle for
this purpose, but that seems to incur a fairly massive performance
penalty for short lived objects as weak persistent handle callbacks
are not called until the object has been promoted into the old
object space.

Change-Id: I83677c9d906742a2bf0596961491eecb7ee60003
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Add a "fallback" mode for named property interceptors
Aaron Kennedy [Thu, 27 Oct 2011 10:31:56 +0000 (11:31 +0100)]
[V8] Add a "fallback" mode for named property interceptors

By default interceptors are called before the normal property
resolution on objects.  When an interceptor is installed as a
"fallback" interceptor, it is only called if the object doesn't
already have the property.

In the case of a global object having an fallback interceptor,
the interceptor is not invoked at all for var or function
declarations.

Change-Id: Ia8c2b4d37070c97d9ef327da9e62d431427afe89
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Add hashing and comparison methods to v8::String
Aaron Kennedy [Tue, 4 Oct 2011 05:04:21 +0000 (15:04 +1000)]
[V8] Add hashing and comparison methods to v8::String

This allows us to more rapidly search for a v8::String inside a hash
of QStrings.

Change-Id: I7d3dc8903bd2c64adc201da924ca2e4954711ec6
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years agoUpdated V8 from git://github.com/v8/v8.git to 57f8959fb264354ba1a2e5118db512f588917061
Peter Varga [Tue, 17 Apr 2012 09:03:39 +0000 (11:03 +0200)]
Updated V8 from git://github.com/v8/v8.git to 57f8959fb264354ba1a2e5118db512f588917061

Update V8 source to version 3.10.1.

* Added optimizations and stability improvements on all platforms.
* Various performance improvements.
* Cleanup ScopeInfo and SerializedScopeInfo.
* Introduce extended mode.
* Implemented performance improvements to the incremental garbage
  collector.
* Fixed handling of arrays in DefineOwnProperty. (issue 1756)
* Fixed GCC 4.7 warnings.
* Performance improvements for large Smi-only arrays.
* Reduce the space used by the stack for the profiling thread.
* Reduced memory use immediately after starting V8.
* Fixed VFP detection through compiler defines. (issue 1996)
* Remove static initializers in v8. (issue 1859)
* Optimized boot-up memory use.
* Optimized regular expressions.

Change-Id: I2dad3092612de279179950dae4dd43daf0463a9f
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years agoImprove .gitignore list
Yuchen Deng [Fri, 20 Apr 2012 07:50:47 +0000 (15:50 +0800)]
Improve .gitignore list

Change-Id: I14c635659abb1132f98d59d31dcfd5ab9c5afc30
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
12 years agoFix compilation with Intel CC.
Thiago Macieira [Thu, 1 Sep 2011 09:30:40 +0000 (11:30 +0200)]
Fix compilation with Intel CC.

Issue reported upstream at:
http://code.google.com/p/v8/issues/detail?id=1885
http://code.google.com/p/v8/issues/detail?id=689

Change-Id: I96744851145e0077c21a03271dc1f0d165fb4672
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years agoFix GCC 4.7 warnings, which are related to char being signed in GCC
vegorov@chromium.org [Tue, 13 Dec 2011 13:02:08 +0000 (13:02 +0000)]
Fix GCC 4.7 warnings, which are related to char being signed in GCC
("narrowing conversion ... inside { } is ill-formed in C++11").

* src/mksnapshot.cc: Cast "char" to "unsigned char" when outputting snapshot.
* test/cctest/test-regexp.cc: Use static_cast to uc16 as the char
literal is signed.

Review URL: http://codereview.chromium.org/8825003
Patch from Tobias Burnus <burnus@net-b.de>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@10241 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

Change-Id: I180b302d8d38b859b0954553985ea038f27135eb
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Remove dependency on _mkgmtime to determine local timezone offset
Jonathan Liu [Tue, 27 Mar 2012 09:56:36 +0000 (20:56 +1100)]
[V8] Remove dependency on _mkgmtime to determine local timezone offset

This fixes "new Date()" returning wrong hour and time zone offset with
MinGW.

Upstream patch: https://chromiumcodereview.appspot.com/9600018

Change-Id: I00036ce7c3c5b8586c4c1eaa41facf792ef0f0e6
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years agomips: Fix the build on MIPS by adding the lithium files to the sources. qt-v5.0.0-alpha1
Holger Hans Peter Freyther [Thu, 22 Mar 2012 12:14:33 +0000 (13:14 +0100)]
mips: Fix the build on MIPS by adding the lithium files to the sources.

Change-Id: Idf54bb887f4627edacc40544066982684ad8ef12
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years agoFix assert in stub-cache.cc when loading qml-mode functions
Kent Hansen [Tue, 20 Mar 2012 13:13:31 +0000 (14:13 +0100)]
Fix assert in stub-cache.cc when loading qml-mode functions

Commit c511fa8a6a631e45ee4075453bcb2eeb7f01ba63 introduced a
regression that could cause an assert in V8 to be triggered:

Fatal error in ../3rdparty/v8/src/stub-cache.cc, line 1171
CHECK(!CallIC::Contextual::decode( Code::ExtractExtraICStateFromFlags(flags))) failed

The assert would be triggered when 1) the "QML global object"
(implicit receiver in qml-mode evaluation) defined more than 12
properties, and 2) a function property of the QML global object was
looked up at least twice from JavaScript. In particular, the V8 IC
would assert that there should be an explicit receiver when
advancing the function lookup from pre-monomorphic state to
monomorphic state.

(The magic number 12 (number of properties needed to trigger the bug)
is the kMaxFastProperties constant. This is the threshold where V8
switches to using a dictionary for the object storage, instead of
using "fast properties" (array).)

The IC correctly determines that the property holder object (the QML
global object) is not the JS Global Object, and hence compiles it as
a "normal" call, in which it asserts that "there must be an explicit
receiver here". But in QML mode, the receiver can be implicit when
the holder is the QML global object.

Propagate this information to the stub cache to avoid the assert
triggering. The generated JIT code still works as expected when the
receiver is implicit (i.e., the receiver is always loaded).
None of the other property/function-load IC handlers have a similar
assert.

It might be worth investigating whether "QML global object" property
loading should have dedicated cache stubs; e.g. a
ComputeCallQmlGlobal() akin to ComputeCallGlobal(). This could
potentially simplify/speed up the generated code, since we can take
advantage of the read-only nature of the QML global object type right
off the bat. But that's a bigger change that would require all the
JIT compilers and the GC to be adapted.

Task-number: QTBUG-24871
Change-Id: I55e499d9c61ff264e3a96e5628e2f30292ee565d
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Add support for QNX platform
Sean Harmer [Fri, 13 Jan 2012 18:32:41 +0000 (18:32 +0000)]
[V8] Add support for QNX platform

This submission is based on code originally contributed by Jeff Rogers <jrogers@rim.com> with permission from Research in
Motion.

We have tried to make this change as unobtrusive as possible. For example in the atomic_ops.h header we have added a
conditional include for a qnx-specific atomicops_internals_arm_qnx.h as the existing atomicops_internals_arm_gcc.h is
actually Linux-specific despite the name of the file. In the longer term it would make sense to use an asm implementation
that is only dependent upon the CPU rather than OS-specific system calls. See qtbase/src/corelib/arch/qatomic_armv*.h
for a good reference.

Here we decided not to risk breaking existing platforms for the initial introduction of this new platform.

The QNX platform integration is built on top of the posix base.

Change-Id: Ic4758f8bc1cbdf5085278f79c9914f2f79b55148
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years agoLet V8 throw the exception when QML property lookup fails
Kent Hansen [Wed, 14 Mar 2012 12:06:26 +0000 (13:06 +0100)]
Let V8 throw the exception when QML property lookup fails

This should be squashed into the "Introduce a QML compilation mode"
commit (8a4d849a0152c76bd9107a1b38a641cf8c0ff226) the next time V8
is rebased.

In normal (non-QML) mode, when a global property lookup fails
(implicit receiver ("this") object), V8 decides to throw an exception
iff the expression evaluation is not part of a "typeof" evaluation.
If it is evaluated as part of "typeof", the result silently becomes
"undefined". This is the expected behavior as per the ECMA-262
standard; "typeof" shouldn't throw a ReferenceError even if the
expression involves a global variable that doesn't exist.

This commit brings the QML mode behavior in line with normal mode.
When the receiver object is a QML global object, V8 up until now
hasn't detected whether it should throw an error in that case. The
QML implementation has been working around that by explicitly
throwing the ReferenceError in the QML context wrapper, but that
breaks the "typeof" operator in QML mode. The QML context wrapper
should rather return an empty handle, and leave it up to V8 to
throw the exception as appropriate.

This also reverts the parts of the original QML mode patch that
changed the RelocInfo mode for QML variables, since V8 relies
precisely on this mode to know whether it's evaluating a "typeof".
(It's no longer clear why the RelocInfo mode was modified in the
first place.)

Task-number: QTBUG-24448
Change-Id: Ic33610d5e91bdf373b22d97a3181e6e5f2fc1843
Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
12 years ago[V8] BreakPoint Relocation
Aurindam Jana [Wed, 14 Mar 2012 10:50:48 +0000 (11:50 +0100)]
[V8] BreakPoint Relocation

Do not return undefined breakpoint.

This patch should be squashed into --
61fd072c17785c93001ffa9532c61f166e03b385 [V8] Add flag to avoid
breakpoint relocation -- in the next V8 rebase as this code only
improves code in that patch

Change-Id: I83a3867f5052eb308af5c28874a25d51ad475ff7
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years agoDon't pass CAN_USE_VFP_INSTRUCTIONS to V8.
Girish Ramakrishnan [Mon, 12 Mar 2012 23:52:50 +0000 (16:52 -0700)]
Don't pass CAN_USE_VFP_INSTRUCTIONS to V8.

V8 is already capable of auto-detecting VFP3 support at runtime.
The only reason to pass this flag is for the emulator when
creating snapshots.

Currently, there is no way to figure if a target is VFP3 enabled
or not. There are no compiler flags to detect this automatically
either, so we have to add an option to qtbase/configure.

https://bugreports.qt-project.org/browse/QTBUG-24760 tracks
the addition of the option.

Change-Id: I3482ae483b925d5f153a1631cc04a52ecab72f4e
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years ago[V8] Add flag to avoid breakpoint relocation
Aurindam Jana [Tue, 13 Mar 2012 08:13:58 +0000 (09:13 +0100)]
[V8] Add flag to avoid breakpoint relocation

Add a flag that prevents v8 from relocating breakpoints across
line boundaries.

This patch should be squashed into --
cf3296721194eafb9bb07ee94026cfb5bcc5d092 [V8] Add flag to avoid
breakpoint relocation -- in the next V8 rebase as this code only
improves code in that patch

Change-Id: I4fefc08f18874f2fa26ffff64eefb11dc949ddfd
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
12 years agoFixed VFP detection through compiler defines.
yangguo@chromium.org [Fri, 9 Mar 2012 22:11:16 +0000 (22:11 +0000)]
Fixed VFP detection through compiler defines.

BUG=http://code.google.com/p/v8/issues/detail?id=1996
TEST=none

Review URL: https://chromiumcodereview.appspot.com/9669003
Patch from Rodolph Perfetta <rodolph.perfetta@gmail.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@10993 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

Change-Id: I5534563915caa74ec458243415d5d56c2be074d2
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
Reviewed-by: Johannes Zellner <johannes.zellner@nokia.com>
12 years ago[V8] Simplify silent abort by raising SIGABRT directly
Jonathan Liu [Thu, 8 Mar 2012 09:19:51 +0000 (20:19 +1100)]
[V8] Simplify silent abort by raising SIGABRT directly

This adds support for silent OS::Abort() with compilers other than
Microsoft Visual C++ (e.g. MinGW and MinGW-w64).

Upstream patch: https://chromiumcodereview.appspot.com/9597012/

Change-Id: Idfb80c7aaee0d6ba74900a076c715ae1f9535b3f
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Fix double-rounding in strtod for MinGW
Jonathan Liu [Thu, 8 Mar 2012 09:24:12 +0000 (20:24 +1100)]
[V8] Fix double-rounding in strtod for MinGW

Upstream patch: https://chromiumcodereview.appspot.com/9578011/

Change-Id: I6dceb7052f0812a619f660af22ed44b5de88acef
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years agoDisable snapshots
Kent Hansen [Fri, 9 Mar 2012 19:37:23 +0000 (20:37 +0100)]
Disable snapshots

Back when v8 lived in qtbase, "cross_compile" would evaluate to
true when cross-compiling. But now, inside the qtjsbackend module,
"cross_compile" seems to evaluate to false always, which means
that snapshots are erroneously turned on when building for arm
(snapshots can't be built for arm due to QTBUG-23447).

Disable snapshots until the cause of this issue has been found.

Change-Id: If0c87ec82bf41e32bf4974b10028dcb7fa42b328
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years agoDon't assume hardfloat passing convention.
Girish Ramakrishnan [Thu, 8 Mar 2012 12:08:58 +0000 (04:08 -0800)]
Don't assume hardfloat passing convention.

Add configure test to detect the floating point abi. Test the value
of the test in the v8.pri to enable hardfloat usage.

Change-Id: I2312763bb1b814915a74e734ab477ba66f1ee0d2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
12 years ago[V8] Fix MinGW-w64 compilation
Jonathan Liu [Sat, 3 Mar 2012 09:58:32 +0000 (20:58 +1100)]
[V8] Fix MinGW-w64 compilation

This is a backport of the following patches:
- https://chromiumcodereview.appspot.com/9169007/
- https://chromiumcodereview.appspot.com/9428027/
- https://chromiumcodereview.appspot.com/9584047/
- https://chromiumcodereview.appspot.com/9581045/

Change-Id: Idbef0c2707a05f99721316220d07e60bf6b6670a
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years agoAdd testcase for Context::GetCallingQmlGlobal function
Peter Varga [Wed, 29 Feb 2012 14:19:18 +0000 (15:19 +0100)]
Add testcase for Context::GetCallingQmlGlobal function

Change-Id: I509b168b6923e1a9e92c6ab3505d51ea607e979c
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years agoRemove pin of qtbase for qtjsbackend.
Toby Tomkins [Fri, 2 Mar 2012 02:20:38 +0000 (12:20 +1000)]
Remove pin of qtbase for qtjsbackend.

Task-number: QTBUG-24608

Change-Id: Ibef6574c3cc145ea482564a0f82571727fdeba8f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
12 years agoPin qtjsbackend to set version of qtbase.
Toby Tomkins [Fri, 2 Mar 2012 01:06:03 +0000 (11:06 +1000)]
Pin qtjsbackend to set version of qtbase.

Changes to qmake in qtbase prevent modules from compiling. This commit
pins qtjsbackend to the last integrated qtbase version of qt5. This is
a temporary measure until qmake handles .qmake.cache correctly.

Change-Id: Ia311a036fa4ee9bb07486ba741d156bbbeaf830a
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
12 years ago[V8] Fix crash when querying for scopes
Aurindam Jana [Tue, 10 Jan 2012 18:33:44 +0000 (19:33 +0100)]
[V8] Fix crash when querying for scopes

For function code, the compilation info was incorrectly
marked as global if the shared_info had qml_mode set.
The ASSERT for the length of nested scopes failed when
querying for scopes and hence the crash. This fix sets the
qml_mode for function code correctly.

Fixes https://bugreports.qt.nokia.com/browse/QTBUG-23256

This patch should be squashed into
-- 2fe857938c3d1683df88133582bc3e7736264b10 [V8] Introduce a
QML compilation mode -- in the next v8 rebase as this code
only improves code in that patch.

Change-Id: Ibc969432cd245ace40602e9e2f5824b2287e8107
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Update ScriptBreakPoints for ScriptRegExp
Aurindam Jana [Tue, 13 Dec 2011 12:43:23 +0000 (13:43 +0100)]
[V8] Update ScriptBreakPoints for ScriptRegExp

Update breakpoints of type ScriptRegExpwhen a new script
is compiled. Solves Issue 1853
(http://code.google.com/p/v8/issues/detail?id=1853)

Change-Id: I03524b10d02295419bab37578d9e15379e7614e6
Reviewed-by: aaron.kennedy@nokia.com
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] mips: Add support for custom object compare callback
Holger Hans Peter Freyther [Wed, 14 Dec 2011 17:35:12 +0000 (18:35 +0100)]
[V8] mips: Add support for custom object compare callback

Implement the compare callback for MIPS based on the ARM
code. It was tested using the Qt V8 tests.

Change-Id: Ia509ad5c4b334af157e4054191c8482749a62d8e
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] uclibc: __GLIBC__ might be defined on uclibc builds
Holger Hans Peter Freyther [Mon, 5 Dec 2011 10:46:09 +0000 (18:46 +0800)]
[V8] uclibc: __GLIBC__ might be defined on uclibc builds

Uclibc defines __GLIBC__ becuase it is compatible in some ways with,
but it does not provide execinfo. Uclibc provides a define to disable
defining __GLIBC__ but Qt does not build with that right now. Check
for GLIBC and !UCLIBC here.

Change-Id: I582a16d16151f30c696ed0e9d185e2706599abe7
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Add flag to avoid breakpoint relocation
Kai Koehne [Thu, 10 Nov 2011 15:00:37 +0000 (16:00 +0100)]
[V8] Add flag to avoid breakpoint relocation

Add a flag that prevents v8 from relocating breakpoints across
line boundaries.

Change-Id: Ida410b2d7f0ffa3edcf76ce2ec2614497f68f3f3
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Fix warnings
Aaron Kennedy [Fri, 27 May 2011 03:04:15 +0000 (13:04 +1000)]
[V8] Fix warnings

Change-Id: I4012abecb41945ce31c82ff8dfcf84583f957256
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Remove execute flag from v8-debug.h
Aaron Kennedy [Thu, 25 Aug 2011 01:09:58 +0000 (11:09 +1000)]
[V8] Remove execute flag from v8-debug.h

Change-Id: I1162cf4636c1bf0aae84d8497ac79a1d816c75c8
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Fix deprecated Python code
Kent Hansen [Fri, 2 Sep 2011 10:03:09 +0000 (12:03 +0200)]
[V8] Fix deprecated Python code

Needed to make the scripts run on Python 3, which is the
default python interpreter on some newer distros.

Patch from http://code.google.com/p/v8/issues/detail?id=1391

Change-Id: I5528baa43f1be8d06efc9159fee7ea52f77d3ad8
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] QtScript/V8: Add new v8 api to check if a value is an error.
Jedrzej Nowacki [Tue, 7 Dec 2010 10:56:42 +0000 (11:56 +0100)]
[V8] QtScript/V8: Add new v8 api to check if a value is an error.

New function v8::Value::IsError was created.

This API is experimental and added only for the purposes of our
research.

Change-Id: I8f20d46bd81b18bcd7a7c2f7cfc25775d82a6834
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Allow a script to be flagged as "native"
Aaron Kennedy [Fri, 9 Sep 2011 04:16:12 +0000 (14:16 +1000)]
[V8] Allow a script to be flagged as "native"

Native scripts do not appear in backtraces, or in the source and
line number when exceptions are thrown from within them.  This is
useful to be able to write code in JavaScript instead of C++ and
still have it appear sensibly to the user.

Change-Id: I93b7b9f0d93ff38204332be6544b1309082b2720
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Add custom object compare callback
Aaron Kennedy [Thu, 27 Oct 2011 12:40:00 +0000 (13:40 +0100)]
[V8] Add custom object compare callback

A global custom object comparison callback can be set with:
    V8::SetUserObjectComparisonCallbackFunction()
When two JSObjects are compared (== or !=), if either one has
the MarkAsUseUserObjectComparison() bit set, the custom comparison
callback is invoked to do the actual comparison.

This is useful when you have "value" objects that you want to
compare as equal, even though they are actually different JS object
instances.

Change-Id: Ifb4074058566062accc2be20d43e3febc1089d13
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Allow access to the calling script data
Aaron Kennedy [Fri, 14 Oct 2011 07:03:06 +0000 (17:03 +1000)]
[V8] Allow access to the calling script data

Change-Id: Ia62421388693604ca5666924337180734be891c0
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Introduce a QML compilation mode
Aaron Kennedy [Thu, 27 Oct 2011 12:34:16 +0000 (13:34 +0100)]
[V8] Introduce a QML compilation mode

In QML mode, there is a second global object - known as the QML
global object.  During property resolution, if a property is not
present on the JS global object, it is resolved on the QML global
object.

This global object behavior is only enabled if a script is being
compiled in QML mode.  The object to use as the QML global object
is passed as a parameter to the Script::Run() method.  Any function
closures etc. created during the run will retain a reference to this
object, so different objects can be passed in different script
runs.

Change-Id: Ib6b4ed363b7e8089d38a9cdcfb0d3b314dc333ca
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Generalize external object resources
Aaron Kennedy [Tue, 4 Oct 2011 06:06:09 +0000 (16:06 +1000)]
[V8] Generalize external object resources

V8 was already able to manage and finalize an external string
resource.  This change generalizes that mechanism to handle a
single generic external resource - a v8::Object::ExternalResource
derived instance - on normal JSObject's.

This is useful for mapping C++ objects to JS objects where the
C++ object's memory is effectively owned by the JS Object, and
thus needs to destroyed when the JS Object is garbage collected.
The V8 mailing list suggests using a weak persistent handle for
this purpose, but that seems to incur a fairly massive performance
penalty for short lived objects as weak persistent handle callbacks
are not called until the object has been promoted into the old
object space.

Change-Id: I3d7b5fe4ca6e37d49c92f3314b80d42bd4c84fcd
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Add a "fallback" mode for named property interceptors
Aaron Kennedy [Thu, 27 Oct 2011 10:31:56 +0000 (11:31 +0100)]
[V8] Add a "fallback" mode for named property interceptors

By default interceptors are called before the normal property
resolution on objects.  When an interceptor is installed as a
"fallback" interceptor, it is only called if the object doesn't
already have the property.

In the case of a global object having an fallback interceptor,
the interceptor is not invoked at all for var or function
declarations.

Change-Id: Ibbd0a6b3ad4bd68a8d15ce99520e71c46ad14f84
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years ago[V8] Add hashing and comparison methods to v8::String
Aaron Kennedy [Tue, 4 Oct 2011 05:04:21 +0000 (15:04 +1000)]
[V8] Add hashing and comparison methods to v8::String

This allows us to more rapidly search for a v8::String inside a hash
of QStrings.

Change-Id: Ied9625aeefba730816d9ed7aa609a36592e5fc33
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years agoUpdated V8 from git://github.com/v8/v8.git to 06e55bc22bcb8ddb0a602e54e11971576f2d9d8a
Peter Varga [Fri, 24 Feb 2012 12:51:58 +0000 (13:51 +0100)]
Updated V8 from git://github.com/v8/v8.git to 06e55bc22bcb8ddb0a602e54e11971576f2d9d8a

* Implement VirtualMemory on FreeBSD to fix build (issue 1807).
* Fix error handling in Date.prototype.toISOString (issue 1792).
* Crankshaft for MIPS
* Bug fixes (mostly for MIPS)
* Use placement-new for zone-allocation in the Lithium classes.

Change-Id: I70ceacc4f7010cec58f73eb1826cbc06dd31149e
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years agoExtend the update-v8.sh script
Peter Varga [Thu, 23 Feb 2012 16:20:21 +0000 (17:20 +0100)]
Extend the update-v8.sh script

Add support for update V8 sources to a particular commit.

Change-Id: I2c81c4f79e9e1d980c6db2299dbca02b6a97f751
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years agomips: Add support for custom object compare callback
Holger Hans Peter Freyther [Wed, 14 Dec 2011 17:35:12 +0000 (18:35 +0100)]
mips: Add support for custom object compare callback

Implement the compare callback for MIPS based on the ARM
code. It was tested using the Qt V8 tests.

Change-Id: I0b29224927b973131a56e4ad5ff437c08a79d138
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years agofreebsd: implement missing VirtualMemory methods
Ben Noordhuis [Thu, 3 Nov 2011 02:22:34 +0000 (03:22 +0100)]
freebsd: implement missing VirtualMemory methods

Patch from 3.7.4 and the bug tracker
http://code.google.com/p/v8/issues/detail?id=1807

Change-Id: Icef88d9a2ff575cf7560fb0be2bc40c0684e74df
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years agouclibc: __GLIBC__ might be defined on uclibc builds
Holger Hans Peter Freyther [Mon, 5 Dec 2011 10:46:09 +0000 (18:46 +0800)]
uclibc: __GLIBC__ might be defined on uclibc builds

Uclibc defines __GLIBC__ becuase it is compatible in some ways with,
but it does not provide execinfo. Uclibc provides a define to disable
defining __GLIBC__ but Qt does not build with that right now. Check
for GLIBC and !UCLIBC here.

Change-Id: I8a50c03c00a506c03901f68b2d4c0ae21fe229ca
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years agoAdd snapshot support for non-cross-compiled builds
Kent Hansen [Thu, 5 Jan 2012 12:51:57 +0000 (13:51 +0100)]
Add snapshot support for non-cross-compiled builds

Once qmake supports dynamic spec selection (QTBUG-23447), we can
tell it to build mkv8snapshot as a host tool, and then remove the
cross_compile guards from tools.pro and v8.pro.

Change-Id: I016227e80ba8c5832bcca718b08a2b14dc3805e6
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years agoRemove "All rights reserved" line from license headers.
Jason McDonald [Tue, 24 Jan 2012 04:48:02 +0000 (14:48 +1000)]
Remove "All rights reserved" line from license headers.

As in the past, to avoid rewriting various autotests that contain
line-number information, an extra blank line has been inserted at the
end of the license text to ensure that this commit does not change the
total number of lines in the license header.

Change-Id: Iae1bc1790d55d2afd3cd1d1799ac48dd225e63c7
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
12 years agoUpdate obsolete contact address.
Jason McDonald [Fri, 20 Jan 2012 04:26:45 +0000 (14:26 +1000)]
Update obsolete contact address.

Replace Nokia contact email address with Qt Project website.

Change-Id: I4eec7c0fb71742c4a5836905f45ba49452250d6a
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
12 years ago[V8] Fix crash when querying for scopes
Aurindam Jana [Tue, 10 Jan 2012 18:33:44 +0000 (19:33 +0100)]
[V8] Fix crash when querying for scopes

For function code, the compilation info was incorrectly
marked as global if the shared_info had qml_mode set.
The ASSERT for the length of nested scopes failed when
querying for scopes and hence the crash. This fix sets the
qml_mode for function code correctly.

Fixes https://bugreports.qt.nokia.com/browse/QTBUG-23256

This patch should be squashed into
-- 2fe857938c3d1683df88133582bc3e7736264b10 [V8] Introduce a
QML compilation mode -- in the next v8 rebase as this code
only improves code in that patch.

Change-Id: I137b0e88dba81ff2ff46876faa883edb9dd0e4a9
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years agoAdded helper script for cherry-picking commits from v8
Simon Hausmann [Fri, 6 Jan 2012 09:32:13 +0000 (10:32 +0100)]
Added helper script for cherry-picking commits from v8

Change-Id: I563302b9d5c83e6497d89550657c7d17f0ba7bc3
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years agoAdded missing license headers.
Sergio Ahumada [Thu, 5 Jan 2012 21:40:09 +0000 (22:40 +0100)]
Added missing license headers.

Change-Id: Ib43c6b1cb5a20ac36f8a4c503d6fd6b1e141c110
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
12 years agoAdded helper script for easier V8 updates
Simon Hausmann [Thu, 5 Jan 2012 13:18:03 +0000 (14:18 +0100)]
Added helper script for easier V8 updates

It won't take away the pain of resolving conflicts, but it'll hide
the git magic from you :)

Change-Id: I6901ca8edb8263ea733a3d4b94393a06e8f25731
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
12 years agoAdded missing README to explain initial update procedure
Simon Hausmann [Thu, 5 Jan 2012 12:31:17 +0000 (13:31 +0100)]
Added missing README to explain initial update procedure

Change-Id: Iaf477848275524b7cee827c115bd0766013f3c5e
Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
12 years ago[V8] Update ScriptBreakPoints for ScriptRegExp
Aurindam Jana [Tue, 13 Dec 2011 12:43:23 +0000 (13:43 +0100)]
[V8] Update ScriptBreakPoints for ScriptRegExp

Update breakpoints of type ScriptRegExpwhen a new script
is compiled. Solves Issue 1853
(http://code.google.com/p/v8/issues/detail?id=1853)

Change-Id: If83da097db3826f63542a19c412df812cf3c86ff
Reviewed-by: aaron.kennedy@nokia.com
12 years ago[V8] Add flag to avoid breakpoint relocation
Kai Koehne [Thu, 10 Nov 2011 15:00:37 +0000 (16:00 +0100)]
[V8] Add flag to avoid breakpoint relocation

Add a flag that prevents v8 from relocating breakpoints across
line boundaries.

Change-Id: Ia3a1449f6465b6a2645fdecac0679410b58eb45f

12 years ago[V8] Fix warnings
Aaron Kennedy [Fri, 27 May 2011 03:04:15 +0000 (13:04 +1000)]
[V8] Fix warnings

Change-Id: I3b2b68dade1c9b7130c6f352f57b53b84c1cdbb9

12 years ago[V8] Remove execute flag from v8-debug.h
Aaron Kennedy [Thu, 25 Aug 2011 01:09:58 +0000 (11:09 +1000)]
[V8] Remove execute flag from v8-debug.h

Change-Id: Ie78724fa20a73733053cbdf0195f4d5822019851

12 years ago[V8] Fix deprecated Python code
Kent Hansen [Fri, 2 Sep 2011 10:03:09 +0000 (12:03 +0200)]
[V8] Fix deprecated Python code

Needed to make the scripts run on Python 3, which is the
default python interpreter on some newer distros.

Patch from http://code.google.com/p/v8/issues/detail?id=1391

Change-Id: I6a7c7efa2bc51800b81efc45b0c7335747d887a7

12 years ago[V8] QtScript/V8: Add new v8 api to check if a value is an error.
Jedrzej Nowacki [Tue, 7 Dec 2010 10:56:42 +0000 (11:56 +0100)]
[V8] QtScript/V8: Add new v8 api to check if a value is an error.

New function v8::Value::IsError was created.

This API is experimental and added only for the purposes of our
research.

Change-Id: I16374083eae684d34dd73e46a41e565a4cd236d4

12 years ago[V8] Allow a script to be flagged as "native"
Aaron Kennedy [Fri, 9 Sep 2011 04:16:12 +0000 (14:16 +1000)]
[V8] Allow a script to be flagged as "native"

Native scripts do not appear in backtraces, or in the source and
line number when exceptions are thrown from within them.  This is
useful to be able to write code in JavaScript instead of C++ and
still have it appear sensibly to the user.

Change-Id: Ib022e74b3b912260d990faa2b2b81a32fa1d8a07

12 years ago[V8] Add custom object compare callback
Aaron Kennedy [Thu, 27 Oct 2011 12:40:00 +0000 (13:40 +0100)]
[V8] Add custom object compare callback

A global custom object comparison callback can be set with:
    V8::SetUserObjectComparisonCallbackFunction()
When two JSObjects are compared (== or !=), if either one has
the MarkAsUseUserObjectComparison() bit set, the custom comparison
callback is invoked to do the actual comparison.

This is useful when you have "value" objects that you want to
compare as equal, even though they are actually different JS object
instances.

Change-Id: Ic7512e8342c071793393e5ad3fcb6fb241f7cc80

12 years ago[V8] Allow access to the calling script data
Aaron Kennedy [Fri, 14 Oct 2011 07:03:06 +0000 (17:03 +1000)]
[V8] Allow access to the calling script data

Change-Id: Iae8b5697d4ad73d7934ee50879859394c66c80da

12 years ago[V8] Introduce a QML compilation mode
Aaron Kennedy [Thu, 27 Oct 2011 12:34:16 +0000 (13:34 +0100)]
[V8] Introduce a QML compilation mode

In QML mode, there is a second global object - known as the QML
global object.  During property resolution, if a property is not
present on the JS global object, it is resolved on the QML global
object.

This global object behavior is only enabled if a script is being
compiled in QML mode.  The object to use as the QML global object
is passed as a parameter to the Script::Run() method.  Any function
closures etc. created during the run will retain a reference to this
object, so different objects can be passed in different script
runs.

Change-Id: I4950562d455074578c372d8e0e3089887b06e0a1

12 years ago[V8] Generalize external object resources
Aaron Kennedy [Tue, 4 Oct 2011 06:06:09 +0000 (16:06 +1000)]
[V8] Generalize external object resources

V8 was already able to manage and finalize an external string
resource.  This change generalizes that mechanism to handle a
single generic external resource - a v8::Object::ExternalResource
derived instance - on normal JSObject's.

This is useful for mapping C++ objects to JS objects where the
C++ object's memory is effectively owned by the JS Object, and
thus needs to destroyed when the JS Object is garbage collected.
The V8 mailing list suggests using a weak persistent handle for
this purpose, but that seems to incur a fairly massive performance
penalty for short lived objects as weak persistent handle callbacks
are not called until the object has been promoted into the old
object space.

Change-Id: Ia21a181927a2e68d33a623bbe47e0f1a4404ec8e

12 years ago[V8] Add a "fallback" mode for named property interceptors
Aaron Kennedy [Thu, 27 Oct 2011 10:31:56 +0000 (11:31 +0100)]
[V8] Add a "fallback" mode for named property interceptors

By default interceptors are called before the normal property
resolution on objects.  When an interceptor is installed as a
"fallback" interceptor, it is only called if the object doesn't
already have the property.

In the case of a global object having an fallback interceptor,
the interceptor is not invoked at all for var or function
declarations.

Change-Id: I9228c114b2d2f3a9386617b53f7d8ac86371159d

12 years ago[V8] Add hashing and comparison methods to v8::String
Aaron Kennedy [Tue, 4 Oct 2011 05:04:21 +0000 (15:04 +1000)]
[V8] Add hashing and comparison methods to v8::String

This allows us to more rapidly search for a v8::String inside a hash
of QStrings.

Change-Id: I0a8bfb1aa34f00d987862a7bfe94c822a73d8c54

12 years agoImported v8 version 3.7.3 from https://github.com/v8/v8.git
Simon Hausmann [Thu, 5 Jan 2012 09:12:14 +0000 (10:12 +0100)]
Imported v8 version 3.7.3 from https://github.com/v8/v8.git

Change-Id: I152648081e46f599c2bb88eaaf67034fa5daac3a

12 years agoDisable snapshots until we have support for host builds in modules
Simon Hausmann [Thu, 5 Jan 2012 08:58:19 +0000 (09:58 +0100)]
Disable snapshots until we have support for host builds in modules

Change-Id: I7d16ac00c5255d548b68e7b77d451bd4dde12b25

12 years agoCreated QtJSBackend module.
Simon Hausmann [Thu, 5 Jan 2012 08:38:07 +0000 (09:38 +0100)]
Created QtJSBackend module.

Imported src/v8, tools and tests from qtbase (1fdfc2abfe1fa26b86028934d4853432e25b4655)
and added the necessary build system files to build it as a top-level
Qt module.

Change-Id: I0b784165157bfb031059f1528c1b3b2828284f6f