diff options
Diffstat (limited to 'src/qml/jsruntime/qv4script_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4script_p.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4script_p.h b/src/qml/jsruntime/qv4script_p.h index 6a749d1438..6f947cd430 100644 --- a/src/qml/jsruntime/qv4script_p.h +++ b/src/qml/jsruntime/qv4script_p.h @@ -55,6 +55,30 @@ namespace QV4 { struct ExecutionContext; +struct ContextStateSaver { + ExecutionContext *savedContext; + bool strictMode; + Lookup *lookups; + CompiledData::CompilationUnit *compilationUnit; + int lineNumber; + + ContextStateSaver(ExecutionContext *context) + : savedContext(context) + , strictMode(context->d()->strictMode) + , lookups(context->d()->lookups) + , compilationUnit(context->d()->compilationUnit) + , lineNumber(context->d()->lineNumber) + {} + + ~ContextStateSaver() + { + savedContext->d()->strictMode = strictMode; + savedContext->d()->lookups = lookups; + savedContext->d()->compilationUnit = compilationUnit; + savedContext->d()->lineNumber = lineNumber; + } +}; + struct Q_QML_EXPORT QmlBindingWrapper : FunctionObject { struct Data : FunctionObject::Data { Data(ExecutionContext *scope, Function *f, Object *qml); |