You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Vera Petrashkova (JIRA)" <ji...@apache.org> on 2006/11/08 10:48:52 UTC

[jira] Updated: (HARMONY-2103) [drlvm][jit] Jitrino/OPT does not reject class which uses incorrect invokespecial instruction

     [ http://issues.apache.org/jira/browse/HARMONY-2103?page=all ]

Vera Petrashkova updated HARMONY-2103:
--------------------------------------

    Attachment: testInvokeSpecial.zip

testInvokeSpecial.zip file contains test source code and class files

> [drlvm][jit] Jitrino/OPT does not reject class which uses incorrect invokespecial instruction
> ---------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-2103
>                 URL: http://issues.apache.org/jira/browse/HARMONY-2103
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows and Linux
>            Reporter: Vera Petrashkova
>         Attachments: testInvokeSpecial.zip
>
>
> Jitrino/OPT does not reject some class which incorrect invokespecial 
> instruction which uses method from an subclass of the current class.
> But according to J2SE VM specifications of invokespecial instruction
> the resolved method is selected for invocation unless all of the following conditions are true:
>     - the ACC_SUPER flag is set for the current class
>     - the class of the resolved method is a superclass of the current class
>     - the resolved method is not an instance initialization method
> Interpreter and Jitrino/JET throws VerifyError in this case.
> To reproduce this issue run the following testInvokeSpecial which invokes classes testSupClass and testSubClass
> created from jasmin source code.
> --------------testInvokeSpecial.java-------------
> public class testInvokeSpecial  {
>     public static void main(String[] args) {
>         try {
>             System.out.println("Test failed: " + testSupClass.test());
>         } catch (VerifyError e ) {
>             System.out.println("Test passes");
>             e.printStackTrace();
>         } catch (Throwable e ) {
>             System.out.println("Test fails: unexpected error");
>             e.printStackTrace();
>         }
>     }
> }
> --------------testSupClass.jj----------------
> .class public testSupClass
> .super java/lang/Object
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial java/lang/Object/<init>()V
>    return
> .end method
> ;
> .method public static test()I
>   .limit locals 3
>   .limit stack 3
>    new testSubClass
>    dup
>    invokespecial testSubClass/<init>()V
>    invokespecial testSubClass/mth()I
>    ireturn
> .end method
> --------------------testSubClass.jj-----------------
> .class public testSubClass
> .super testSupClass
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial testSupClass/<init>()V
>    return
> .end method
> ;
> .method public mth()I
>    .limit locals 2
>    .limit stack 2
>    sipush 105
>    ireturn
> .end method
> ----------------------------------------------
> Create testSupClass and testSubClass classes using jasmin.jar or use classes from attachment
> java -jar jasmin.jar testSupClass.jj
> java -jar jasmin.jar testSubClass.jj
> Output on Harmony (Interpreter and Jitrino/JET)
> =====================
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r471468, (Nov  7 2006), Windows/ia32/msvc 1310, release build
> http://incubator.apache.org/harmony
> Test passes
> java.lang.VerifyError: (class: testSupClass, method: test()I) Incompatible object argument
>  for invokespecial
>         at testInvokeSpecial.main(testInvokeSpecial.java:4)
> Output on Harmony (Jitrino/OPT)
> ========================
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> java version "1.5.0" 
> pre-alpha : not complete or compatible
> svn = r471468, (Nov  7 2006), Linux/ia32/gcc 3.3.3, release build
> http://incubator.apache.org/harmony
> Test failed: 105

-- 
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