gecko-dev/ef/gc/todo.txt

95 lines
3.2 KiB
Plaintext
Raw Normal View History

SportModel To-Do List
- Make page manager initialize pages to all zeros
- remove fancy object initialization from alloc routines
- java needs all fields to be zeroed, not just pointers
- need to zero objects when copying occurs too
- Implement weak ref support
- new types
- weak array
- weak (open) hashtable
- stack of objects with weak refs
- on stack overflow, mark weak fields instead
- if mark stack also overflows... !
- routine to drain weak ref stack (done at end of gc)
- if object, use weak ref field descriptors
- if array, null out unmarked objects
- need heuristic for disposing them
- wait for java 1.2 spec for sun.misc.WeakRef
- Implement open hash-tables
- needed?
- must be primitive (with custom scavenge routine) because
keys & values are intermixed in same object
- Sort out public vs. private info in header files
- Add ability to explicitly lock and unlock objects for JS
- Make Mac deal with multiple segments
- i.e. grow page and card tables
- need to stop app threads at safe points (non write barrier
boundaries)
- need to not be in a piece of code holding the address of a
page desc (a lock in gc)
- Unix page manager
- 16 and 64 bit support
- Add splay trees to page manager to find clusters faster
- profile for large-object intensive allocations
- Add blacklist support to page manager
- blacklist bit already set for pages
- Figure out locking strategy
- currently Collect0 is not protected!
- need notion of "processor"?
- VirtualAlloc/Free on a per-page basis is too frequent
- institute large blocks in the page manager?
- add a better caching strategy
- add a memory pressure api
- Change SMPage* to SMPageNum throughout
- conservative references are being found to pages
- these look like refs to the first object on the page
- Implement demographic feedback mediated tenuring policy
- Implement segmented arrays for win16
- not needed anymore with Greg's 32-bit win3.1?
- Profiling
- always more to do
- Memory visualization tools
- Add multi-processor support
- introduce multiple youngest generations
- need nspr notion of a "processor" to associate a youngest
generation with (gating factor)
- change allocation apis to specify a generation to allocate
in
- add allocation lock per youngest generation for concurrent
allocation/collection
- add lock for promotion to second generation during copying
- fix write-barrier code to scan other youngest generation
spaces for incoming pointers
- Integration with EF
- on gcbranch2 of ns/electricalfire
- need build-time flag to determine whether class objects are
scavenged or not
- yes for EF
- need union type for pointer/non-pointer?
- low-order tag bit for pointers
- only 31 bits of data!
- unify with dereference operation
- ambiguous field descriptors in class