| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
jsc-for-qtscript-4.6-staging-05102009 ( 38c2b17366f24220d9ae0456a7cfe2ac78a9f91c )
Adapt src/script to src/3rdparty/javascriptcore changes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the timeout-checker was not reset, it could take a while
(e.g. 1-2 seconds) before the next timeout occurred, depending on
what the tick counter happened to be after the previous evaluate().
When a processEventsInterval of e.g. 100 milliseconds has been
specified, we want the timeout to happen much sooner, thus we need
to reset the checker. This will cause the first timeout to happen
quickly, and then at steady intervals (processEventsInterval ms)
after that.
The tst_QScriptEngine::processEventsWhileRunning() test was
sporadically failing due to this issue.
Reviewed-by: Olivier Goffart
|
|
|
|
|
|
|
|
| |
Introduced a helper function in our custom source provider,
columnNumberFromOffset(), that maps an absolute offset in the source
input to a relative column number.
Reviewed-by: Jedrzej Nowacki
|
|
|
|
| |
RevBy: Thiago Macieira <thiago.macieira@trolltech.com>
|
|
|
|
|
|
|
|
|
| |
It is possible to call QScriptEngine::pushContext before we start any evaluation.
We need to change JSC so it doesn't always start at the beginning of the stack.
Also fix QScriptContext::pushContext not to waste space between callframes.
Reviewed-by: Kent Hansen
|
|
|
|
|
|
|
|
|
|
| |
I was assuming that the default return value register was always set
to 0 for native calls. But this is not the case. So we must ensure this.
Also be consistend in the way the stackframe grow and shrink. This expose
another bug in the way the call frame is created in JSC
Reviewed-by: Kent Hansen
|
|
|
|
| |
Reviewed-by: Simon Hausmann
|
|
|
|
|
|
|
| |
The currentFrame pointer is used e.g. by QScriptValue::toString(). It needs to
be in sync, otherwise we will crash.
Reviewed-by: Olivier Goffart
|
|
|
|
|
|
| |
The functions are identical, but in recent WebKit trunk isObject()
doesn't exist anymore. So this renaming is done to prepare for the
import of a more recent JavaScriptCore.
|
|
|
|
|
|
|
|
|
|
|
| |
QScriptEnginePrivate::thisForContext() relies on the this-register
of the global context to contain an invalid JSValue.
The default Register constructor (used to initialize the registers
of the global context) only invalidates its value when NDEBUG is
not defined (but we define it). Therefore, we must explicitly set
the this-register to an invalid value.
Reviewed-by: Olivier Goffart
|
|
|
|
|
|
| |
Avoid copy and paste.
Reviewed-by: Olivier Goffart
|
|
|
|
|
|
|
|
| |
Winscw gets very confused when the name of an enum value is the same as
the name of an entire namespace, JSC in this case. Renaming the enum
value to JavaScriptCore fixes this.
Rubber-stamped-by: Kent
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch remove the 'fake' context that appears in the debugger
backtrace when there is a break point in the global context.
This problem never appeared in the tests because the
QScriptContext::backtrace has always at least two items in the backtrace
as it needs the native 'bt' function to be called.
Changed QScriptEnginePrivate::contextForFrame to skip the fake frame
(instead of QScriptContext::parentContext). So we never have a QScriptContext
pointing to that frame.
The changes in QScriptContextInfo are for retreiving the right filename
information for the global context when the global context is on top.
Reviewed-by: Kent Hansen
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
| |
Get rid of QPointer.
Use linked list of privates (like was recently done for QScriptValue).
Allocate the private on the stack when we can.
Reviewed-by: Olivier Goffart
|
|
|
|
| |
That's the last of them... for now.
|
|
|
|
|
|
|
| |
Do not convert JSC::Identifier to QString to convert it later to
JSC::Identivier again
Reviewed-by: Kent Hansen
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
| |
Currently there are some differences in behavior and availability
of information between the interpreter and the JIT. This is now
documented as expected failures in the relevant autotests.
|
|
|
|
|
|
|
| |
JIT does create stackframe while the interperer doesn't.
So we would end up with one superflous stackframe
Reviewed-by: Kent Hansen
|
|
|
|
| |
"*/ outside of comment"
|
|
|
|
|
|
|
|
| |
QScriptValuePrivate released by garbage collector later in
~QScriptEnginePrivate (when destroying the agents) would be
added to the freelist and not be released
Reviewed-by: Kent Hansen
|
|
|
|
|
|
|
| |
The documentation of the agent constructor specify that the agant is
owned by the engine. Even if the agent is not set to the engine
Reviewed-by: Kent Hansen
|
|
|
|
|
|
|
| |
Do not reset the delegate and the prototype when reusing existing
wrapper.
Reviewed-by: Kent Hansen
|
|
|
|
| |
Make it faster.
|
|
|
|
| |
Just a little cleanup.
|
|
|
|
|
|
|
|
|
| |
Avoid calling malloc() and free() so often. The premise is that
QScriptValue is usually a short-lived type, and only a few QScriptValues
exist at a time, so if we cache privates in the engine, QScriptValues
will be much faster to create and destroy.
Reviewed-by: Olivier Goffart
|
|
|
|
| |
Reviewed-by: Trust Me
|
| |
|
|
|
|
| |
It's faster.
|
|
|
|
| |
Get rid of the hash.
|
|
|
|
|
| |
It's the d-pointer that we most frequently want to access, so store it
to avoid having to use QScriptEnginePrivate::get() all over the place.
|
|
|
|
|
| |
For the innermost frame, we don't have a returnPC, so use the line
number that was last passed to the engine agent.
|
|
|
|
|
| |
It needs to work even when there is no public QScriptValue that
holds a reference to the object.
|
|
|
|
| |
It is a POD with the size of a pointer
|
|
|
|
|
| |
Remove useless variable.
Use QBoolBlocker instread of custom QScript::InEval.
|
|
|
|
|
|
|
| |
QScriptValue id were made persistent. It depands
on JSC:JSValue JSCell pointer not on QScriptValuePrivate attr.
Reviewed-by: Kent Hansen
|
|
|
|
|
|
| |
Since QScriptEngine::evaluate() doesn't create a new stack frame
anymore, we need to use a dedicated variable to keep track of
whether the engine is currently evaluating or not.
|
|
|
|
|
|
| |
Static method QScriptValue::initFromJSCValue was removed.
Reviewed-by: Kent Hansen
|
|
|
|
|
|
|
|
|
| |
Internal API of QScriptValue were cleaned. toPublic() was
removed and replaced by standard static Private::get().
All initFromXXX() methods were replaced by overload call
of initFrom().
Reviewed-by: Kent Hansen
|
|
|
|
| |
The engine owns its agents, and also knows when they are deleted.
|
|
|
|
|
|
|
| |
Get rid of conversion functions QScript::qtStringFromJSCUString and
QScript::qtStringToJSCUString. Code was moved to cast operators.
Reviewed-by: Kent Hansen
|
| |
|
|
|
|
|
| |
No need to look up the global object via the scope chain since we have
a direct pointer to it already.
|
|
|
|
|
|
| |
In WebKit/JSC config.h needs to be included first in .cpp files, to among
other things make sure that min/max are not defined as macros through
windows.h.
|
|
|
|
|
| |
Use the JSC_HOST_CALL annotation for the declaration as well as for the
definition of the JSC callback functions.
|
|
|
|
|
|
|
|
|
|
|
| |
We can store flags on the ReturnValueRegister entry in the stackframe
header (as native function don't use that)
Then when requesting an activation object we can lookup the flags to
know if we should create it.
This reduce a lot the cost of a native call.
Reviewed-by: Kent Hansen
|
| |
|
|
|
|
|
|
|
| |
When called from the interpreter, we do not need to create a stack
frame, but we need anyway to put the newly created this on the stack.
This fixes crash in the test qscriptjstestsuite
|
|
|
|
|
|
|
|
| |
doesn't construct.
Removes code duplication.
This also indirrectly fixes the QMetaObjectWrapperObject where this was missing
|