| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Yet another missing API shim.
When converting the QScriptValue to JSC, a JSCell may be allocated,
which can cause the GC to trigger.
If an identifier (JSC::Identifier) is then garbage collected, the
destructor will try to remove itself from the currentIdentifierTable().
Because the API shim was missing, the identifier table was 0.
It's difficult to create a bulletproof test for this case, but the
attached test is a best effort (it crashes on my machine without the
fix).
Task-number: QTBUG-15144
Reviewed-by: Jedrzej Nowacki
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If an exception occurs, we should ignore the result of
JSC::construct() and return the exception value, even if
the exception is not an object.
This makes the behavior match the documentation: "Calling
construct() can cause an exception to occur in the script
engine; in that case, construct() returns the value that
was thrown".
Task-number: QTBUG-14801
Reviewed-by: Jedrzej Nowacki
|
|
|
|
|
|
|
|
| |
There were still a couple of functions that didn't have them. This
could cause said functions to crash if multiple script engines were
being used.
Reviewed-by: Jedrzej Nowacki
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For arrays, the conversion would crash if the array was cyclic.
Introduce a set that keeps track of which objects are being
converted, and return an empty list when a cycle is detected.
For other types of objects, the object was previously attempted
to be converted to a primitive, which typically meant you would
get the string representation ("[object Object]"), since most
(practically all) objects can be converted to a string -- not
useful at all.
Change the conversion so it converts the object to a QVariantMap
instead. This was already done for slots that took a QVariantMap
as argument, but only one level deep. Make the conversion recursive,
using the same mechanism as for arrays to detect cycles.
This change also means that you get a meaningful
JS object => QVariant => JS object roundtrip.
It also aligns the behavior with the Qt WebKit bridge.
Update the documentation to describe the new behavior.
The 4.7 changelog will also be updated under "important behavioral
changes".
This change exposed an issue with one of the QML autotests: A JS
object was assigned to a QVariant property, which caused it to be
converted to a string (rather than a QVariantMap) -- just shows
that the previous behavior was unintuitive). Later, this variant
property is compared to another object, the intention being to
compare the _properties_ of the two objects; but because the variant
property contained a string, this would cause the other operand
(object) to be converted to a string as well ("[object Object]"),
causing a meaningless test pass.
Change the test to deserialize both objects using JSON.stringify,
and compare the resulting strings, so that actual
JS object => QVariant(Map) => JS object roundtrip is tested (the
intention).
Task-number: QTBUG-3511
Reviewed-by: Olivier Goffart
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
src/openvg/qpaintengine_vg.cpp
src/script/bridge/qscriptqobject_p.h
tests/auto/bic/tst_bic.cpp
|
| |
| |
| |
| |
| | |
Test that calling toObject() doesn't change the type of the
original value.
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
configure.exe
mkspecs/common/symbian/symbian.conf
src/gui/graphicsview/qgraphicswidget.h
src/gui/kernel/qapplication.cpp
src/gui/text/qtextlayout.cpp
src/openvg/qpixmapdata_vg.cpp
src/s60installs/s60installs.pro
tools/runonphone/main.cpp
tools/runonphone/serenum_unix.cpp
qtextlayout.cpp fixed up together with Eskil.
Kept the configure.exe from 4.7 without recompile.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Oops, the case of a non-array object argument wasn't implemented
nor tested in the new back-end.
This commit brings it in line with the behavior of the old back-end.
Also test that QScriptValue::construct() doesn't have the same problem.
Reviewed-by: TrustMe
|
| |
| |
| |
| |
| |
| |
| |
| | |
This test includes a source file which is almost half a megabyte
in size. When compiling with -O2, MSVC2008 can take over 20
minutes to link this test!
Turn off optimization, just for this test.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Update qscriptvalueiterator test to expect length property when
iterating arrays and strings.
- Use EvalExecutable::create() instead of EvalExecutable constructor.
The constructor is private.
- Reimplement getOwnPropertyDescriptor() in all custom script objects.
- Remove all reimplementations of getPropertyAttributes().
It doesn't exist in trunk anymore (getOwnPropertyDescriptor() is used
instead).
- Remove checkDontDelete argument from deleteProperty() reimplementations.
The purpose of this argument was to support deleting properties
with attribute Undeletable from C++. But it was quite an invasive
patch to JavaScriptCore, and it doesn't seem worth it. If this feature
is really crucial it should be re-done upstream.
One of the tests needed to be updated so it's not sensitive to the
C++ undeletability.
- Adapt getOwnPropertyNames() reimplementations to signature change.
- Add missing QScriptObject structure flags, otherwise we don't get all virtual calls.
- Remove our patch for reporting column numbers in the debugger callbacks.
It was just too intrusive. As with the checkDontDelete issue, this should
be redone upstream if it's really important. In 4.7, QScriptEngineAgent
will always report a column number of 1.
Other compilation fixes:
- InternalFunction::name() takes an ExecState* argument, not GlobalData*
- ScopeChain::globalObject is no longer a function but a member variable
- ScopeChainNode constructor takes a GlobalObject argument
- Heap::collect() is called collectAllGarbage()
- JSValue::strictEqual() takes an ExecState* argument
- Debugger::exception() takes a bool hasHandler argument
- Debugger no longer reports column number (we decided to drop that patch from JSC)
- UString doesn't have operator+=(char*)
- Update the autotests to reflect the columnNumber=1 change.
- Add helper class to avoid crashing inside JSC.
Ever since r52856 in WebKit trunk, this is needed. There are probably a lot of
other public API functions that need this guard as well, but I'll add them as they
are discovered.
- Update mkdist-javascriptcore tag, exclude a few more files.
- Set ENABLE_JSC_MULTIPLE_THREADS=0 define on Mac due to r52355 in trunk.
Reviewed-by: Simon Hausmann
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The QScriptValue autotest suite compiles about 24 min with MSVS2008,
which is unacceptable.
Tests were splited into a few files for better use of distributed
compilation.
Repeated calls to insert() and operator<<() where replaced by loops,
that should reduce time of code optimizing.
Reviewed-by: Kent Hansen
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QScriptValue autotest suite compile 24 minutes on MSVS2008 which is
unacceptable. Modification tries to reduce the compilation time.
Temples were changed to use static arrays of data; instead of inserting
values directly, they are inserted in a loop (less code to optimize).
Generated code were separated into several files (better usage of
distributed compiling).
Reviewed-by: Kent Hansen
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/mobility-staging:
Speed up compilation of this test with MSVC.
Fix Symbian build when building for WINSCW with abld.
Fix file descriptor leak with generic engine on Linux.
|
| |/
| |
| |
| |
| |
| |
| |
| | |
This test includes a source file which is almost half a megabyte
in size. When compiling with -O2, MSVC2008 can take over 20
minutes to link this test!
Turn off optimization, just for this test.
|
| |
| |
| |
| |
| |
| |
| | |
The test suite was updated after changes in dataset of autotest
generator. New test were added: isVariant, isQMetaObject and isQObject.
Reviewed-by: Kent Hansen
|
| |
| |
| |
| |
| |
| |
| | |
New tests data was added. The tests cover a qscriptvalue created by
QScriptEngine newQMetaObject(), newVariant() and newQObject() functions.
Reviewed-by: Kent Hansen
|
| |
| |
| |
| |
| |
| |
| | |
tst_qscriptvalue_generated.cpp was updated after last few autotest
generator modifications.
Reviewed-by: Kent Hansen
|
| |
| |
| |
| |
| |
| |
| |
| | |
Few test cases were added. They test values returned from
QScriptEngine functions; evaluate(), newDate(), newObject() and
newArray().
Reviewed-by: Kent Hansen
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Each generated test case should check if a result is deterministic. The
future generation of QScriptValue will be based on a state machine. The
state might be changed after each function call, so it is worth of
testing if result is always the same.
Reviewed-by: Kent Hansen
|
|/
|
|
|
|
| |
Fix license template inside the qscriptvalue autotest generator.
Reviewed-by: TrustMe
|
|
|
|
|
|
|
| |
Apply test results for values created directly from QScriptEngine
(results of nullValue() and undefinedValue())
Reviewed-by: Kent Hansen
|
|
|
|
|
|
|
| |
Two new values were added; results from QScriptEngine::nullValue() and
QScriptEngine::undefinedValue().
Reviewed-by: Kent Hansen
|
|
|
|
|
|
|
|
|
| |
$QT_END_LICENSE was interpreted as a template key by Template() object,
causing substitute() call to throw a KeyError exception.
The bug was introduced in 9962e2d96a212c518054220167eb6f61e1052bcc.
Reviewed-by: TrustMe
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
tst_qscriptvalue_generated.cpp was generated by Jedrzej's generator
(see testgen subdirectory).
The idea is that the old isXXX and toXXX tests will be replaced entirely
by the auto-generated versions, but we keep them for now (with "_old"
suffix) until we are sure that the auto-generated versions cover everything.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The patch contain the QScriptValue autotest suite generator. Based on an
input it can generate expected tests results and simple tests cases.
The results are kept inside generated autotest implementation file
(cpp), which could be included by main test file (tst_qscriptvalue.cpp).
Generator gives great coverage for isXXX, toXXX, comparison methods.
The generator should be used manually and it is not compiled by default.
Reviewed-by: Kent Hansen
|
| |
|
|
|
|
|
| |
Task-number: None, discovering while doing test refactoring
Reviewed-by: Jedrzej Nowacki
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
| |
It's better that this works rather than asserts.
Reviewed-by: Olivier Goffart
|
|
|
|
| |
The tests now pass after the last update of src/3rdparty/javascriptcore.
|
|
|
|
| |
With the interpreter it works.
|
|
|
|
| |
Reviewed-by: Simon Hausmann
|
|
|
|
|
|
|
| |
NokiaX86 compiler has problems with implicit casts and templates,
so worked around this problem with explicit casts.
Reviewed-by: Janne Koskinen
|
| |
|
|
|
|
|
|
|
| |
This add a hook inside JSC to be able to implement our own comparison function
when comparing objects.
Reviewed-by: Kent Hansen
|
|
|
|
| |
Reviewed-by: Trust Me
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
demos/boxes/glshaders.cpp
demos/boxes/vector.h
demos/embedded/fluidlauncher/pictureflow.cpp
demos/embedded/fluidlauncher/pictureflow.h
doc/src/desktop-integration.qdoc
doc/src/distributingqt.qdoc
doc/src/examples-overview.qdoc
doc/src/examples.qdoc
doc/src/frameworks-technologies/dbus-adaptors.qdoc
doc/src/geometry.qdoc
doc/src/groups.qdoc
doc/src/objecttrees.qdoc
doc/src/platform-notes.qdoc
doc/src/plugins-howto.qdoc
doc/src/qt3support.qdoc
doc/src/qtdbus.qdoc
doc/src/qtdesigner.qdoc
doc/src/qtgui.qdoc
doc/src/qtmain.qdoc
doc/src/qtopengl.qdoc
doc/src/qtsvg.qdoc
doc/src/qtuiloader.qdoc
doc/src/qundo.qdoc
doc/src/richtext.qdoc
doc/src/topics.qdoc
src/corelib/tools/qdumper.cpp
src/gui/embedded/qkbdpc101_qws.cpp
src/gui/embedded/qkbdsl5000_qws.cpp
src/gui/embedded/qkbdusb_qws.cpp
src/gui/embedded/qkbdvr41xx_qws.cpp
src/gui/embedded/qkbdyopy_qws.cpp
src/gui/embedded/qmousebus_qws.cpp
src/gui/embedded/qmousevr41xx_qws.cpp
src/gui/embedded/qmouseyopy_qws.cpp
src/gui/painting/qpaintengine_d3d.cpp
src/gui/painting/qwindowsurface_d3d.cpp
src/opengl/gl2paintengineex/glgc_shader_source.h
src/opengl/gl2paintengineex/qglpexshadermanager.cpp
src/opengl/gl2paintengineex/qglpexshadermanager_p.h
src/opengl/gl2paintengineex/qglshader.cpp
src/opengl/gl2paintengineex/qglshader_p.h
src/opengl/util/fragmentprograms_p.h
src/plugins/kbddrivers/linuxis/linuxiskbdhandler.cpp
src/plugins/mousedrivers/linuxis/linuxismousehandler.cpp
src/script/parser/qscript.g
src/script/qscriptarray_p.h
src/script/qscriptasm_p.h
src/script/qscriptbuffer_p.h
src/script/qscriptclass.cpp
src/script/qscriptclassdata_p.h
src/script/qscriptcompiler.cpp
src/script/qscriptcompiler_p.h
src/script/qscriptcontext.cpp
src/script/qscriptcontext_p.cpp
src/script/qscriptcontext_p.h
src/script/qscriptcontextfwd_p.h
src/script/qscriptecmaarray.cpp
src/script/qscriptecmaarray_p.h
src/script/qscriptecmaboolean.cpp
src/script/qscriptecmacore.cpp
src/script/qscriptecmadate.cpp
src/script/qscriptecmadate_p.h
src/script/qscriptecmaerror.cpp
src/script/qscriptecmaerror_p.h
src/script/qscriptecmafunction.cpp
src/script/qscriptecmafunction_p.h
src/script/qscriptecmaglobal.cpp
src/script/qscriptecmaglobal_p.h
src/script/qscriptecmamath.cpp
src/script/qscriptecmamath_p.h
src/script/qscriptecmanumber.cpp
src/script/qscriptecmanumber_p.h
src/script/qscriptecmaobject.cpp
src/script/qscriptecmaobject_p.h
src/script/qscriptecmaregexp.cpp
src/script/qscriptecmaregexp_p.h
src/script/qscriptecmastring.cpp
src/script/qscriptecmastring_p.h
src/script/qscriptengine.cpp
src/script/qscriptengine_p.cpp
src/script/qscriptengine_p.h
src/script/qscriptenginefwd_p.h
src/script/qscriptextenumeration.cpp
src/script/qscriptextenumeration_p.h
src/script/qscriptextqobject.cpp
src/script/qscriptextqobject_p.h
src/script/qscriptextvariant.cpp
src/script/qscriptfunction.cpp
src/script/qscriptfunction_p.h
src/script/qscriptgc_p.h
src/script/qscriptmember_p.h
src/script/qscriptobject_p.h
src/script/qscriptprettypretty.cpp
src/script/qscriptprettypretty_p.h
src/script/qscriptvalue.cpp
src/script/qscriptvalueimpl.cpp
src/script/qscriptvalueimpl_p.h
src/script/qscriptvalueimplfwd_p.h
src/script/qscriptvalueiteratorimpl.cpp
src/script/qscriptxmlgenerator.cpp
src/script/qscriptxmlgenerator_p.h
tests/auto/linguist/lupdate/testdata/recursivescan/project.ui
tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp
tests/auto/qkeyevent/tst_qkeyevent.cpp
tools/linguist/shared/cpp.cpp
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| | |
Needed due to commit 3636e666528b72de79f8c7012690bb9e279f0863
|
| |
| |
| |
| |
| |
| |
| |
| | |
For some types, an empty string is the correct and complete
conversion of the type. If the result is an empty string, use
QVariant::canConvert() to determine if that is indeed correct,
before falling back to the "string-conversion-not-available"
path.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
belonged to a deleted script engine
When the engine is deleted, the JSValue is invalidated, but the
QScriptValue's type will still be QScriptValuePrivate::JSC.
Use a new helper function, isObject(), that checks both that the
value is of type JSC _and_ that it is valid, before calling
JSValue::isObject() (JSValue::isObject() assumes that the value
is valid).
|
| |
| |
| |
| |
| |
| |
| | |
Calling QScriptEngine::toStringHandle() is dead slow, so don't call it;
use JSC::Identifier directly.
This is the same issue as was fixed for setProperty() in commit
a8574172dd5e6bc11cf6f69b6fad5a063549e88d.
|
| |
| |
| |
| |
| |
| |
| | |
Avoid calling virtual function JSC::JSValue::get{Call,Construct}Data()
twice.
Reviewed-by: Olivier Goffart
|
| |
| |
| |
| | |
Get rid of the hash.
|
| |
| |
| |
| |
| | |
It needs to work even when there is no public QScriptValue that
holds a reference to the object.
|
| |
| |
| |
| |
| |
| |
| | |
QScriptValue id were made persistent. It depands
on JSC:JSValue JSCell pointer not on QScriptValuePrivate attr.
Reviewed-by: Kent Hansen
|