You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Pavel Pervov (JIRA)" <ji...@apache.org> on 2007/01/30 15:44:33 UTC

[jira] Commented: (HARMONY-1748) [drlvm][jit] IllegalAccessError is not thrown when running test on Jitrino.OPT

    [ https://issues.apache.org/jira/browse/HARMONY-1748?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12468626 ] 

Pavel Pervov commented on HARMONY-1748:
---------------------------------------

Diving into OPT showed that it reduces invokeinterface to invokevirtual ("direct call" they call it) for some reason.

The stack looks as follows:

>	jitrino.dll!Jitrino::IRBuilder::genDirectCall(Jitrino::MethodDesc * methodDesc=0x0297b9e4, Jitrino::Type * returnType=0x02980bc8, Jitrino::Opnd * tauNullCheckedFirstArg=0x0297b8b0, Jitrino::Opnd * tauTypesChecked=0x0297ba18, unsigned int numArgs=1, Jitrino::Opnd * * args=0x029ab66c, Jitrino::InlineInfoBuilder * inlineInfoBuilder=0x00000000)  Line 1298 + 0x3	C++
 	jitrino.dll!Jitrino::IRBuilderSimplifier::genDirectCall(Jitrino::MethodDesc * methodDesc=0x0297b9e4, Jitrino::Type * returnType=0x02980bc8, Jitrino::Opnd * tauNullCheckedFirstArg=0x0297b8b0, Jitrino::Opnd * tauTypesChecked=0x0297ba18, unsigned int numArgs=1, Jitrino::Opnd * * args=0x029ab66c, Jitrino::InlineInfoBuilder * inlineBuilder=0x00000000)  Line 141	C++
 	jitrino.dll!Jitrino::Simplifier::simplifyTauVirtualCall(Jitrino::MethodDesc * methodDesc=0x0297b9e4, Jitrino::Type * returnType=0x02980bc8, Jitrino::Opnd * tauNullCheckedFirstArg=0x0297b8b0, Jitrino::Opnd * tauTypesChecked=0x0297ba18, unsigned int numArgs=1, Jitrino::Opnd * * args=0x029ab66c, Jitrino::InlineInfoBuilder * inlineBuilder=0x00000000)  Line 3611 + 0x25	C++
 	jitrino.dll!Jitrino::IRBuilder::genTauVirtualCall(Jitrino::MethodDesc * methodDesc=0x0297b9e4, Jitrino::Type * returnType=0x02980bc8, Jitrino::Opnd * tauNullCheckedFirstArg=0x0297b8b0, Jitrino::Opnd * tauTypesChecked=0x00000000, unsigned int numArgs=1, Jitrino::Opnd * * args=0x029ab66c, Jitrino::InlineInfoBuilder * inlineInfoBuilder=0x00000000)  Line 1343	C++
 	jitrino.dll!Jitrino::JavaByteCodeTranslator::invokeinterface(unsigned int constPoolIndex=43518920, unsigned int count=1)  Line 2163 + 0x22	C++
 	jitrino.dll!Jitrino::JavaByteCodeParserCallback::parseByteCode(const unsigned char * byteCodes=0x02d62900, unsigned int off=5)  Line 617 + 0x18	C++
 	jitrino.dll!Jitrino::ByteCodeParser::parse(Jitrino::ByteCodeParserCallback * cb=0x0013ee2c)  Line 70 + 0xe	C++
 	jitrino.dll!Jitrino::JavaTranslator::translateMethod(Jitrino::CompilationInterface & ci={...}, Jitrino::MethodDesc & methodDesc={...}, Jitrino::IRBuilder & irBuilder={...})  Line 59	C++
 	jitrino.dll!Jitrino::TranslatorSession::translate()  Line 62 + 0xb	C++
 	jitrino.dll!Jitrino::TranslatorSession::run()  Line 45	C++
 	jitrino.dll!Jitrino::runPipeline(Jitrino::CompilationContext * c=0x0013f17c)  Line 227	C++
 	jitrino.dll!Jitrino::compileMethod(Jitrino::CompilationContext * cc=0x0013f17c)  Line 264	C++
 	jitrino.dll!Jitrino::Jitrino::CompileMethod(Jitrino::CompilationContext * cc=0x0013f17c)  Line 286 + 0x6	C++
 	jitrino.dll!JIT_compile_method_with_params(void * jit=0x011d7038, void * compilation=0x0013f42c, Method * method_handle=0x02d62780, OpenMethodExecutionParams compilation_params={...})  Line 278 + 0xa	C++
 	harmonyvm.dll!Dll_JIT::compile_method_with_params(void * compilation=0x0013f42c, Method * method=0x02d62780, OpenMethodExecutionParams flags={...})  Line 86 + 0x18	C++
 	harmonyvm.dll!compile_do_compilation_jit(Method * method=0x02d62780, JIT * jit=0x011d7038)  Line 645 + 0x19	C++
 	harmonyvm.dll!vm_compile_method(void * jit=0x011d7038, Method * method=0x02d62780)  Line 2462 + 0xd	C++
 	em.dll!DrlEMImpl::compileMethod(Method * mh=0x02d62780)  Line 545 + 0x13	C++
 	em.dll!CompileMethod(Method * method_handle=0x02d62780)  Line 49 + 0x19	C++
 	harmonyvm.dll!compile_do_compilation(Method * method=0x02d62780)  Line 753 + 0x15	C++
 	harmonyvm.dll!compile_me(Method * method=0x02d62780)  Line 773 + 0x9	C++
                     ...

Method, which is compiled, is (no surprise though) Test.main.

> [drlvm][jit] IllegalAccessError is not thrown when running test on Jitrino.OPT
> ------------------------------------------------------------------------------
>
>                 Key: HARMONY-1748
>                 URL: https://issues.apache.org/jira/browse/HARMONY-1748
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows XP, Pentium 4 3000 HT
>            Reporter: Alexander D Shipilov
>            Priority: Minor
>         Attachments: reproducecode.zip, reproducecodeJunit.zip
>
>
> Harmony crashes during attempt of call protected method from class, if this method declared in parent interface as public.

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