Skip to content

Instantly share code, notes, and snippets.

@kstephens
Created September 8, 2011 03:46
Show Gist options
  • Save kstephens/1202555 to your computer and use it in GitHub Desktop.
Save kstephens/1202555 to your computer and use it in GitHub Desktop.
GC Plan
== Complete basic mem_sys API ==
* Fix finalizers.
** Abstract Ruby finalizer API and their state mgmt from mem_sys API.
** Implement dummy finalizers in malloc allocator.
== Create basic performance test tools/framework ==
* Time
* Space
* Pathological cases
* Fork/COW cases
* Native .vs. green threads?
== Support sized allocations ==
* Provide ruby_value_type and size-specific version of rb_newobj(): rb_newobj_(enum ruby_value_type type, size_t size).
* Use rb_newobj_(type, size) in MRI *.c files.
* Reimplement rb_newobj_core() as rb_newobj_core_(type, size).
== Interface SMAL to mem_sys ==
* Create mark/free funcs for each ruby_value_type.
* Implement SMAL rb_newobj_smal_(type, size).
* Connect smal_finalizers to mem_sys.
== Floats and other boxed Numerics are highly likely to be transient and unchanging ==
* Add mem_sys api for floats.
* Use mem_sys api method for rb_float_new(double d).
* Connect SMAL to rb_float_new(double d).
* Consider Float instance caching? Do we need GC phase callbacks?
== Add GC phase callbacks to core allocator? ==
* Add smal_weak_reference interface to mem_sys API.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment