[ http://issues.apache.org/jira/browse/HARMONY-1681?page=all ] Alex Astapchuk updated HARMONY-1681: ------------------------------------ Attachment: jvmti_set_get_local.patch > [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 > ; <=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