harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aleksey Ignatenko (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-3402) [drlvm] j.l.Classloaders for active frames on stack are to be enumerated as strong references
Date Thu, 15 Mar 2007 11:07:09 GMT

     [ https://issues.apache.org/jira/browse/HARMONY-3402?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Aleksey Ignatenko updated HARMONY-3402:
---------------------------------------

    Description: 
j.l.Classloaders for active frames on stack are to be enumerated as strong references.
The current model is:
all j.l.Classloaders and j.l.Classes are enumerated as strong references. According to class
unloading discussion in dev list one can see that when there are some functions on stack their
j.l.Classes and thus j.l.Classloaders are to be reachable. It is true for interpreter as there
is "This" enumerated at every frame, but it is not true for JIT mode because in JIT mode "This"
is not specified to be save frame and thus not enumerated (and as a result not reachable).
The patch attached adds running through functions on stack and forcing j.l.Classloaders (commented
for a while) to be enumerated as strong references. The such forcing could be done via boolean
flag in class Classloader in drlvm, if some function of class loaded by j.l.Classloader CL1
is on stack then mark it as force to strong enumeration. After that force this CL1 strong
enumeration in void ClassLoader::gc_enumerate() function. This issue does not affect class
unloading anyhow but it prevents possible serious errors if any class unloading appears at
drlvm.

  was:
j.l.Classloaders for active frames on stack are to be enumerated as strong references.
The current model is:
all j.l.Classloaders and j.l.Classes are enumerated as strong references. According to class
unloading discussion in dev list one can see that when there is some function on stack their
j.l.Classes and thus j.l.Classloaders are to be reachable. It is true for interpreter as there
is enumerated this at every frame, but it is not true for JIT mode because in JIT mode this
is not specified to be on frame and thus not enumerated (and as a result not reachable).
Therefore the idea of this bug is to enumerate all j.l.Classloaders of functions on stack.

The patch attached adds running through functions on stack and forcing j.l.Classloaders (commented
for a while) to be enumerated as strong references. The such forcing could be done via boolean
flag in class Classloader in drlvm, if some function of class loaded by j.l.Classloader CL1
is on stack then mark it as force to strong enumeration. After that force this CL1 strong
enumeration in void ClassLoader::gc_enumerate() function. This issue does not affect class
unloading anyhow but it prevents possible serious errors if any class unloading appears at
drlvm.


> [drlvm] j.l.Classloaders for active frames on stack are to be enumerated as strong references
> ---------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3402
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3402
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Aleksey Ignatenko
>            Priority: Minor
>         Attachments: active_frames_force_strong_enum.patch
>
>
> j.l.Classloaders for active frames on stack are to be enumerated as strong references.
> The current model is:
> all j.l.Classloaders and j.l.Classes are enumerated as strong references. According to
class unloading discussion in dev list one can see that when there are some functions on stack
their j.l.Classes and thus j.l.Classloaders are to be reachable. It is true for interpreter
as there is "This" enumerated at every frame, but it is not true for JIT mode because in JIT
mode "This" is not specified to be save frame and thus not enumerated (and as a result not
reachable).
> The patch attached adds running through functions on stack and forcing j.l.Classloaders
(commented for a while) to be enumerated as strong references. The such forcing could be done
via boolean flag in class Classloader in drlvm, if some function of class loaded by j.l.Classloader
CL1 is on stack then mark it as force to strong enumeration. After that force this CL1 strong
enumeration in void ClassLoader::gc_enumerate() function. This issue does not affect class
unloading anyhow but it prevents possible serious errors if any class unloading appears at
drlvm.

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