[Development] V4 porting

Dmitriy - dima00782 at gmail.com
Thu Dec 24 12:42:07 CET 2015


Thank.
I want to port JIT. Where should I start?
You have any roadmap for this?

Now I'm using qmljs tool for testing purpose.
I has seen in qt-5.5.1/qtdeclarative/src/qml/jsruntime/qv4script.cpp:

Script::parse():

...

RuntimeCodegen cg(v4, strictMode);

cg.generateFromProgram(sourceFile, sourceCode, program, &module,
QQmlJS::Codegen::EvalCode, inheritedLocals);

if (v4->hasException) return;

QV4::Compiler::JSUnitGenerator jsGenerator(&module);

QScopedPointer<EvalInstructionSelection> isel(...);

...

QQmlRefPointer<QV4::CompiledData::CompilationUnit> compilationUnit =
isel->compile();

vmFunction = compilationUnit->linkToEngine(v4);

...


Why do you compile script while parse it? Do you use AOT compiling?


On Thu, Dec 24, 2015 at 5:18 PM, Hausmann Simon <
Simon.Hausmann at theqtcompany.com> wrote:

> Hi,
>
> Moth is the portable interpreter that will be used instead of the
> just-in-time compiler if your platform doesn't support it. It should be
> chosen automatically for you according to the #ifdefs in qv4global_p.h.
>
> So if you have qtbase compiling, then qml should also work. If you want
> things to run faster, then you will have to port the JIT.
>
> Simon
>
> *From: *Dmitriy -
> *Sent: *Thursday, December 24, 2015 10:47
> *To: *development at qt-project.org
> *Subject: *[Development] V4 porting
>
> Hi!
> I want to port v4 engine to the new platform. The platform is Linux OS and
> new processor. The processor looks like intel itanium. It is VLIW and EPIC.
> I have a c++/c compilers for the new architecture.
>
> I want to design qt quic qml application for the new platform. As a can
> see in code, I need v4vm backend for this purpose.
>
> I'm see this:
>
> case use_moth: {
>         QV4::EvalISelFactory* iSelFactory = 0;
>         if (mode == use_moth) {
>             iSelFactory = new QV4::Moth::ISelFactory;#ifdef V4_ENABLE_JIT
>         } else {
>             iSelFactory = new QV4::JIT::ISelFactory;#endif // V4_ENABLE_JIT
>         }
>
>         QV4::ExecutionEngine vm(iSelFactory);
>
>         QV4::Scope scope(&vm);
>         QV4::ScopedContext ctx(scope, vm.rootContext());
>
> As I understand v4vm has two backends - Moth and Masm.
>
> What is Moth?
>
> --
> Regards,
> Dmitry Bezheckov.
>



-- 
Regards,
Dmitry Bezheckov.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20151224/9587daae/attachment.html>


More information about the Development mailing list