aboutsummaryrefslogtreecommitdiffstats
path: root/tools/v4/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/v4/main.cpp')
-rw-r--r--tools/v4/main.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/tools/v4/main.cpp b/tools/v4/main.cpp
index a49c7093cf..3404de2c30 100644
--- a/tools/v4/main.cpp
+++ b/tools/v4/main.cpp
@@ -77,16 +77,16 @@ struct Print: FunctionObject
name = scope->engine->newString("print");
}
- static Value call(Managed *, CallData *callData)
+ static ReturnedValue call(Managed *, CallData *callData)
{
for (int i = 0; i < callData->argc; ++i) {
- QString s = callData->args[i].toQString();
+ QString s = callData->args[i].toQStringNoThrow();
if (i)
std::cout << ' ';
std::cout << qPrintable(s);
}
std::cout << std::endl;
- return Value::undefinedValue();
+ return Value::undefinedValue().asReturnedValue();
}
static const ManagedVTable static_vtbl;
@@ -102,10 +102,10 @@ struct GC: public FunctionObject
vtbl = &static_vtbl;
name = scope->engine->newString("gc");
}
- static Value call(Managed *m, CallData *)
+ static ReturnedValue call(Managed *m, CallData *)
{
m->engine()->memoryManager->runGC();
- return Value::undefinedValue();
+ return Value::undefinedValue().asReturnedValue();
}
static const ManagedVTable static_vtbl;
@@ -117,11 +117,13 @@ DEFINE_MANAGED_VTABLE(GC);
static void showException(QV4::ExecutionContext *ctx, const QV4::Exception &exception)
{
- QV4::ErrorObject *e = exception.value().asErrorObject();
+ QV4::Scope scope(ctx);
+ QV4::ScopedValue ex(scope, exception.value());
+ QV4::ErrorObject *e = ex->asErrorObject();
if (!e) {
- std::cerr << "Uncaught exception: " << qPrintable(exception.value().toString(ctx)->toQString()) << std::endl;
+ std::cerr << "Uncaught exception: " << qPrintable(ex->toString(ctx)->toQString()) << std::endl;
} else {
- std::cerr << "Uncaught exception: " << qPrintable(e->get(ctx->engine->newString(QStringLiteral("message")), 0).toString(ctx)->toQString()) << std::endl;
+ std::cerr << "Uncaught exception: " << qPrintable(QV4::Value::fromReturnedValue(e->get(ctx->engine->newString(QStringLiteral("message")), 0)).toString(ctx)->toQString()) << std::endl;
}
foreach (const QV4::ExecutionEngine::StackFrame &frame, exception.stackTrace()) {
@@ -187,6 +189,7 @@ int main(int argc, char *argv[])
QV4::ExecutionEngine vm(iSelFactory);
QV4::ExecutionContext *ctx = vm.rootContext;
+ QV4::Scope scope(ctx);
QV4::Object *globalObject = vm.globalObject;
QV4::Object *print = new (ctx->engine->memoryManager) builtins::Print(ctx);
@@ -204,10 +207,10 @@ int main(int argc, char *argv[])
QV4::Script script(ctx, code, fn);
script.parseAsBinding = runAsQml;
script.parse();
- QV4::Value result = script.run();
- if (!result.isUndefined()) {
+ QV4::ScopedValue result(scope, script.run());
+ if (!result->isUndefined()) {
if (! qgetenv("SHOW_EXIT_VALUE").isEmpty())
- std::cout << "exit value: " << qPrintable(result.toString(ctx)->toQString()) << std::endl;
+ std::cout << "exit value: " << qPrintable(result->toString(ctx)->toQString()) << std::endl;
}
} catch (QV4::Exception& ex) {
ex.accept(ctx);