harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Egor Pasko (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-2196) [drlvm][jit][opt] loop optimizations fail (in server_static mode) if a dispatch node becomes a loop header for multiple loops
Date Wed, 15 Nov 2006 11:41:37 GMT
[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

        

Mime
View raw message