You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Alexey Varlamov (JIRA)" <ji...@apache.org> on 2007/10/08 12:50:50 UTC

[jira] Resolved: (HARMONY-2196) [drlvm][jit][opt] loop optimizations fail (in server_static mode) if a dispatch node becomes a loop header for multiple loops

     [ https://issues.apache.org/jira/browse/HARMONY-2196?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexey Varlamov resolved HARMONY-2196.
--------------------------------------

    Resolution: Fixed
      Assignee: Alexey Varlamov  (was: Mikhail Fursov)

Added the reg-test at r582772, please verify this issue can be closed.


> [drlvm][jit][opt] loop optimizations fail (in server_static mode) if a dispatch node becomes a loop header for multiple loops
> -----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-2196
>                 URL: https://issues.apache.org/jira/browse/HARMONY-2196
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>            Assignee: Alexey Varlamov
>            Priority: Minor
>         Attachments: after.translator.h-2196.png, LoopExc.j
>
>
> the problem is $subj.
> to reproduce:
> (1)
> compile the synthetic bytecode (attached) with jasmin ([1]):
> java -jar jasmin.jar LoopExc.j
> (2) 
> compile Jitrino in debug mode (see [2])
> (3)
> run the test in "server_static" mode:
> $DRLVM  -Xem:server_static LoopExc
> you will get an assertion like:
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/Loop.cpp:423: void Jitrino::LoopBuilder::peelLoops(Jitrino::StlVector<Jitrino::Edge*, Jitrino::StlMMAllocator<Jitrino::Edge*> >&): Assertion `header->getInDegree() == 2' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::LoopBuilder::peelLoops(Jitrino::StlVector<Jitrino::Edge*, Jitrino::StlMMAllocator<Jitrino::Edge*> >&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/Loop.cpp:424)
>         5: Jitrino::LoopBuilder::peelLoops() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/Loop.cpp:911)
>         6: Jitrino::LoopPeelingPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/Loop.cpp:47)
>         7: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         8: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         9: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
>         10: Jitrino::Jitrino::CompileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:286)
> (4) 
> you can also obtain a CFG picture to make sure that dispatch node is a loop header:
> $DRLVM -Xem:server_static -Djit.p.filter=.main -Djit.p.arg.log=ct,irdump,dotdump LoopExc
> the dot file is "log/CS_OPT/LoopExc/main([Ljava_lang_String;)V/03.ssa.before.dot"
> low priority because the bytecode is not achievable with java compilers
> [1] http://jasmin.sourceforge.net/
> [2] http://wiki.apache.org/harmony/Debugging%20DRLVM%20with%20GDB%20on%20Linux

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.