Static initialization loop in Generational collectors
-----------------------------------------------------
Key: RVM-836
URL:
http://jira.codehaus.org/browse/RVM-836 Project: RVM
Issue Type: Bug
Components: MMTk
Reporter: Robin Garner
Assignee: Robin Garner
The GenConstraints class depends on several constants in the class Gen, eg
public boolean needsStaticWriteBarrier() { return Gen.USE_STATIC_WRITE_BARRIER; }
public boolean needsLogBitInHeader() { return Gen.USE_OBJECT_BARRIER; }
public int maxNonLOSDefaultAllocBytes() { return Gen.MAX_NURSERY_ALLOC_BYTES; }
The first two are resolved at compile-time by javac, the last compiles to
public int maxNonLOSDefaultAllocBytes();
Code:
0: getstatic #3; //Field org/mmtk/plan/generational/Gen.MAX_NURSERY_ALLOC_BYTES:I
3: ireturn
which causes the Plan class hierarchy to be statically initialized. Since Plan says
public static final int MAX_NON_LOS_DEFAULT_ALLOC_BYTES = VM.activePlan.constraints().maxNonLOSDefaultAllocBytes();
there is a loop. The JikesRVM bootstrap process somehow resolves this correctly, but in the MMTk harness this constant ends up as zero.
The obvious solution is to lift this calculation into the GenConstraints class, since it's only ever used there.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
_______________________________________________
Jikesrvm-issues mailing list
Jikesrvm-issues@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-issues