diff options
-rw-r--r-- | main.cpp | 9 | ||||
-rw-r--r-- | qv4isel_llvm.cpp | 4 |
2 files changed, 9 insertions, 4 deletions
@@ -169,15 +169,18 @@ int evaluateCompiledCode(const QStringList &files) globalObject->setProperty(ctx, vm.identifier(QStringLiteral("print")), QQmlJS::VM::Value::fromObject(new builtins::Print(ctx))); - code(ctx); - - if (ctx->hasUncaughtException) { + void * buf = __qmljs_create_exception_handler(ctx); + if (setjmp(*(jmp_buf *)buf)) { if (VM::ErrorObject *e = ctx->result.asErrorObject()) std::cerr << "Uncaught exception: " << qPrintable(e->value.toString(ctx)->toQString()) << std::endl; else std::cerr << "Uncaught exception: " << qPrintable(ctx->result.toString(ctx)->toQString()) << std::endl; + return -2; } + + code(ctx); } + return 0; } diff --git a/qv4isel_llvm.cpp b/qv4isel_llvm.cpp index 040111f5ac..9e35e6ef56 100644 --- a/qv4isel_llvm.cpp +++ b/qv4isel_llvm.cpp @@ -935,7 +935,9 @@ void LLVMInstructionSelection::genCallName(IR::Call *e, llvm::Value *result) _llvmValue = llvm::UndefValue::get(_valueTy); return; - Q_UNREACHABLE(); + default: + Q_UNREACHABLE(); + } } else { llvm::Value *name = getIdentifier(*base->id); |