harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Astapchuk (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-1681) [drlvm][jvmti]{set|get}local variable may work incorrectly under Jitrino.JET
Date Wed, 04 Oct 2006 07:39:20 GMT
[drlvm][jvmti]{set|get}local variable may work incorrectly under Jitrino.JET

                 Key: HARMONY-1681
                 URL: http://issues.apache.org/jira/browse/HARMONY-1681
             Project: Harmony
          Issue Type: Bug
          Components: DRLVM
            Reporter: Alex Astapchuk
         Attachments: jvmti_set_get_local.patch

The problem: 
Implementation of set/get local variable in .jet only operates with 
the local variables in method's stack frame (in memory). It does not 
work if a variable is stored on a register.

Normaly, Jitrino.JET does not allocate registers for local variables
globally when running under JVMTI. 
However, many operations may reuest temporary register and store a 
value on it. For example:

    INVOKExxx foo()I ; returned value is now in EAX
    ISTORE_x         ; local#x is now on EAX
    <do_something>   ; <=get_local_var(x) will get a wrong value here

The solution:
To handle such situations, code generator must spill out all registers
after each bytecode instruction.

The attached fix does it.

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


View raw message