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

        

Mime
View raw message