You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Egor Pasko (JIRA)" <ji...@apache.org> on 2006/11/15 12:41:38 UTC
[jira] Updated: (HARMONY-2196) [drlvm][jit][opt] loop optimizations
fail (in server_static mode) if a dispatch node becomes a loop header for
multiple loops
[ http://issues.apache.org/jira/browse/HARMONY-2196?page=all ]
Egor Pasko updated HARMONY-2196:
--------------------------------
Attachment: LoopExc.j
the bytecode jasmin source attached (LoopExc.j)
> [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: http://issues.apache.org/jira/browse/HARMONY-2196
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Environment: any
> Reporter: Egor Pasko
> Priority: Minor
> Attachments: 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.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira