Also corrected the class name cApiTaliSatiOn.
Change-Id: I131566e904c8ee575686a469f16d098dd512d865
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
return EXIT_FAILURE;
void (*code)(VM::ExecutionContext *) = (void (*)(VM::ExecutionContext *)) codePtr;
- QScopedPointer<QQmlJS::EValISelFactory> iSelFactory(new QQmlJS::Moth::ISelFactory);
+ QScopedPointer<QQmlJS::EvalISelFactory> iSelFactory(new QQmlJS::Moth::ISelFactory);
VM::ExecutionEngine vm(iSelFactory.data());
VM::ExecutionContext *ctx = vm.rootContext;
#endif // QMLJS_NO_LLVM
case use_masm:
case use_moth: {
- QScopedPointer<QQmlJS::EValISelFactory> iSelFactory;
+ QScopedPointer<QQmlJS::EvalISelFactory> iSelFactory;
if (mode == use_moth)
iSelFactory.reset(new QQmlJS::Moth::ISelFactory);
else
return EXIT_FAILURE;
}
- QQmlJS::VM::Value result = QQmlJS::VM::EvalFunction::evaluate(vm.rootContext, fn, code, iSelFactory.data(), QQmlJS::Codegen::GlobalCode);
+ QQmlJS::VM::Value result = QQmlJS::VM::EvalFunction::evaluate(vm.rootContext, fn, code, QQmlJS::Codegen::GlobalCode);
if (!result.isUndefined()) {
if (! qgetenv("SHOW_EXIT_VALUE").isEmpty())
std::cout << "exit value: " << qPrintable(result.toString(ctx)->toQString()) << std::endl;
uchar *_ccode;
};
-class ISelFactory: public EValISelFactory
+class ISelFactory: public EvalISelFactory
{
public:
virtual ~ISelFactory() {}
namespace QQmlJS {
namespace VM {
-ExecutionEngine::ExecutionEngine(EValISelFactory *factory)
+ExecutionEngine::ExecutionEngine(EvalISelFactory *factory)
+ : iselFactory(factory)
{
rootContext = newContext();
rootContext->init(this);
numberCtor = Value::fromObject(new NumberCtor(rootContext));
booleanCtor = Value::fromObject(new BooleanCtor(rootContext));
arrayCtor = Value::fromObject(new ArrayCtor(rootContext));
- functionCtor = Value::fromObject(new FunctionCtor(rootContext, factory));
+ functionCtor = Value::fromObject(new FunctionCtor(rootContext));
dateCtor = Value::fromObject(new DateCtor(rootContext));
regExpCtor = Value::fromObject(new RegExpCtor(rootContext));
errorCtor = Value::fromObject(new ErrorCtor(rootContext));
glo->__put__(rootContext, identifier(QStringLiteral("undefined")), Value::undefinedValue());
glo->__put__(rootContext, identifier(QStringLiteral("NaN")), Value::fromDouble(nan("")));
glo->__put__(rootContext, identifier(QStringLiteral("Infinity")), Value::fromDouble(INFINITY));
- glo->__put__(rootContext, identifier(QStringLiteral("eval")), Value::fromObject(new EvalFunction(rootContext, factory)));
+ glo->__put__(rootContext, identifier(QStringLiteral("eval")), Value::fromObject(new EvalFunction(rootContext)));
// TODO: parseInt [15.1.2.2]
// TODO: parseFloat [15.1.2.3]
struct ExecutionEngine
{
+ EvalISelFactory *iselFactory;
ExecutionContext *current;
ExecutionContext *rootContext;
QVector<ExceptionHandler> unwindStack;
Value exception;
- ExecutionEngine(EValISelFactory *factory);
+ ExecutionEngine(EvalISelFactory *iselFactory);
ExecutionContext *newContext();
ctx = context;
}
// ##### inline and do this in the correct scope
- Value result = evaluate(ctx, QStringLiteral("eval code"), code, _factory, QQmlJS::Codegen::EvalCode);
+ Value result = evaluate(ctx, QStringLiteral("eval code"), code, QQmlJS::Codegen::EvalCode);
if (strictMode)
ctx->leaveCallContext();
}
Value EvalFunction::evaluate(QQmlJS::VM::ExecutionContext *ctx, const QString &fileName,
- const QString &source, EValISelFactory *factory,
- QQmlJS::Codegen::Mode mode)
+ const QString &source, QQmlJS::Codegen::Mode mode)
{
using namespace QQmlJS;
globalCode = cg(program, &module, mode);
foreach (IR::Function *function, module.functions) {
- EvalInstructionSelection *isel = factory->create(vm);
+ EvalInstructionSelection *isel = ctx->engine->iselFactory->create(vm);
isel->run(function);
delete isel;
}
struct EvalFunction : FunctionObject
{
- EvalFunction(ExecutionContext *scope, EValISelFactory *factory): FunctionObject(scope), _factory(factory) {}
+ EvalFunction(ExecutionContext *scope): FunctionObject(scope) {}
- static Value evaluate(QQmlJS::VM::ExecutionContext *ctx, const QString &fileName,
- const QString &source, EValISelFactory *factory,
- QQmlJS::Codegen::Mode mode);
+ static Value evaluate(QQmlJS::VM::ExecutionContext *ctx,
+ const QString &fileName, const QString &source,
+ QQmlJS::Codegen::Mode mode);
virtual Value call(ExecutionContext *context, Value thisObject, Value *args, int argc, bool strictMode = false);
-
-private:
- EValISelFactory *_factory;
};
struct IsNaNFunction: FunctionObject
//
// Function object
//
-FunctionCtor::FunctionCtor(ExecutionContext *scope, EValISelFactory *factory)
+FunctionCtor::FunctionCtor(ExecutionContext *scope)
: FunctionObject(scope)
- , _factory(factory)
{
}
Codegen cg;
IR::Function *irf = cg(fe, &module);
- EvalInstructionSelection *isel = _factory->create(ctx->engine);
+ EvalInstructionSelection *isel = ctx->engine->iselFactory->create(ctx->engine);
isel->run(irf);
delete isel;
struct FunctionCtor: FunctionObject
{
- FunctionCtor(ExecutionContext *scope, EValISelFactory *factory);
+ FunctionCtor(ExecutionContext *scope);
virtual Value construct(ExecutionContext *ctx);
virtual Value call(ExecutionContext *ctx);
-
-private:
- EValISelFactory *_factory;
};
struct FunctionPrototype: FunctionObject
QList<CallToLink> _callsToLink;
};
-class ISelFactory: public EValISelFactory
+class ISelFactory: public EvalISelFactory
{
public:
virtual ~ISelFactory() {}
EvalInstructionSelection::~EvalInstructionSelection()
{}
-EValISelFactory::~EValISelFactory()
+EvalISelFactory::~EvalISelFactory()
{}
virtual void run(IR::Function *function) = 0;
};
-class EValISelFactory
+class EvalISelFactory
{
public:
- virtual ~EValISelFactory() = 0;
+ virtual ~EvalISelFactory() = 0;
virtual EvalInstructionSelection *create(VM::ExecutionEngine *engine) = 0;
};