aboutsummaryrefslogtreecommitdiffstats
path: root/src/v4/qmljs_engine.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/v4/qmljs_engine.h')
-rw-r--r--src/v4/qmljs_engine.h26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/v4/qmljs_engine.h b/src/v4/qmljs_engine.h
index 0d8dd05fc3..1440a6461e 100644
--- a/src/v4/qmljs_engine.h
+++ b/src/v4/qmljs_engine.h
@@ -102,7 +102,7 @@ class RegExp;
struct Q_V4_EXPORT ExecutionEngine
{
MemoryManager *memoryManager;
- EvalISelFactory *iselFactory;
+ QScopedPointer<EvalISelFactory> iselFactory;
ExecutionContext *current;
ExecutionContext *rootContext;
WTF::BumpPointerAllocator bumperPointerAllocator; // Used by Yarr Regex engine.
@@ -182,7 +182,7 @@ struct Q_V4_EXPORT ExecutionEngine
QVector<Function *> functions;
- ExecutionEngine(EvalISelFactory *iselFactory);
+ ExecutionEngine(EvalISelFactory *iselFactory = 0);
~ExecutionEngine();
ExecutionContext *newContext();
@@ -223,6 +223,28 @@ struct Q_V4_EXPORT ExecutionEngine
void requireArgumentsAccessors(int n);
void markObjects();
+
+ Value run(VM::Function *function, ExecutionContext *ctx = 0);
+};
+
+template <typename T>
+struct TemporaryAssignment
+{
+ TemporaryAssignment(T &var, const T& temporaryValue)
+ : variable(var)
+ , savedValue(var)
+ {
+ variable = temporaryValue;
+ }
+ ~TemporaryAssignment()
+ {
+ variable = savedValue;
+ }
+ T &variable;
+ T savedValue;
+private:
+ TemporaryAssignment(const TemporaryAssignment<T>&);
+ TemporaryAssignment operator=(const TemporaryAssignment<T>&);
};
} // namespace VM