harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Pervov (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-5021) [drlvm][encoder] native methods returning jchar can't return values greater than 255 on x86-64 platforms
Date Thu, 25 Oct 2007 12:49:53 GMT
[drlvm][encoder] native methods returning jchar can't return values greater than 255 on x86-64
platforms
--------------------------------------------------------------------------------------------------------

                 Key: HARMONY-5021
                 URL: https://issues.apache.org/jira/browse/HARMONY-5021
             Project: Harmony
          Issue Type: Bug
          Components: DRLVM
         Environment: x86-64
            Reporter: Pavel Pervov


I managed to trace the problem to encoder.
It is not possible to encode "movzx r64, r16" operation on x86-64.

Here is the stack trace from encoding JNI jnvocation stub.

harmonyvm.dll!EncoderBase::lookup(Mnemonic mn=Mnemonic_MOVZX, const EncoderBase::Operands
& opnds={...})  Line 731	C++
harmonyvm.dll!EncoderBase::encode(char * stream=0x000000000529fdf1, Mnemonic mn=Mnemonic_MOVZX,
const EncoderBase::Operands & opnds={...})  Line 291 + 0x14 bytes	C++
harmonyvm.dll!movzx(char * stream=0x000000000529fdf1, const R_Opnd & r={...}, const RM_Opnd
& rm={...}, Opnd_Size sz=size_16)  Line 363	C++
>harmonyvm.dll!LcgEM64TCodeGen::un_op_rm(LilOperation o=LO_Zx2, const LcgEM64TLoc * dest=0x00000000052a9e80,
const LcgEM64TLoc * src=0x00000000052a9e90)  Line 852 + 0x34 bytes	C++
harmonyvm.dll!LcgEM64TCodeGen::asgn(LilVariable * dest=0x0000000005280e74, LilOperation o=LO_Zx2,
LilOperand * op1=0x0000000005280e80, LilOperand * op2=0x0000000005280e98)  Line 1267	C++
harmonyvm.dll!lil_visit_instruction(LilInstruction * i=0x0000000005280e68, LilInstructionVisitor
* v=0x000000000012d410)  Line 1697	C++
harmonyvm.dll!LcgEM64TCodeGen::LcgEM64TCodeGen(LilCodeStub * cs=0x00000000052802b8, LcgEM64TContext
& c={...}, tl::MemoryPool & m={...})  Line 1095	C++
harmonyvm.dll!LilCodeGeneratorEM64T::compile_main(LilCodeStub * cs=0x00000000052802b8, unsigned
__int64 * stub_size=0x000000000012d518, PoolManager * code_pool=0x0000000005136d90)  Line
1721	C++
harmonyvm.dll!LilCodeGenerator::compile(LilCodeStub * cs=0x00000000052802b8, PoolManager *
code_pool=0x0000000005136d90)  Line 61 + 0x1e bytes	C++
harmonyvm.dll!compile_create_lil_jni_stub(Method * method=0x00000000052d3020, void * func=0x0000000005e910b4,
LilCodeStub * (LilCodeStub *, Method *)* nso=0x0000000000000000)  Line 525 + 0x37 bytes	C++
harmonyvm.dll!compile_create_jni_stub(Method * method=0x00000000052d3020, void (void)* func=0x0000000005e910b4,
LilCodeStub * (LilCodeStub *, Method *)* nso=0x0000000000000000)  Line 594	C++
harmonyvm.dll!compile_prepare_native_method(Method * method=0x00000000052d3020)  Line 617
+ 0x1d bytes	C++
harmonyvm.dll!compile_do_compilation(Method * method=0x00000000052d3020)  Line 763 + 0xa bytes
C++
harmonyvm.dll!compile_me(Method * method=0x00000000052d3020)  Line 799 + 0xd bytes	C++

EncoderBase::lookup returns "movzx r64, r8" match for this operation. It is illegal though
as high 8 bits are lost from jchar.

I'll attach simple test which illustrates the problem.

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


Mime
View raw message